<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      JavaWeb和MVC三層架構

      JavaWeb 概述

      網站發布和部署一定要依托技術語言嗎:

      不一定,一個網站可以直接發布和部署,因為因為瀏覽器能夠識別網頁只需要兩樣東西,網絡和靜態頁面,還有一個裝在他們的容器,比如 nginx。

      靜態頁面面臨的問題:

      • 1:靜態網頁是固定的,是不可變的。如果一個網站比如騰訊首頁,這里需要 1000 文章,那么就必須編寫 1000 的 html 頁面。

      • 2:難以管理維護,而且需要大量人工去查詢和維護。

      • 3:難以修改,如果需要修改某頁面中的錯別字,就必須要找到這個頁面,再進行修改才可以生效。

      JavaWeb 技術解決了什么問題:

      JSP + Servlet 解決靜態網頁的動態渲染問題,MySQL 解決數據存儲的問題。

      JavaWeb 技術是如何解決的:

      • 1:將所有的靜態頁面的數據進行結構化,存儲到 MySQL 數據庫中。

      • 2:JavaWeb 對 MySQL 的服務器提供客戶端支持,Java可以通過數據庫驅動去連接 MySQL 服務,去實現數據的維護工作,也就是 CRUD。

      • 3:Java 通過 JDBC 查詢數據后把數據放到對象中,如果是多個數據就放到集合中。

      • 4:將存儲數據的對象,通過 Servlet 放入到作用域中。

      • 5:通過 EL 表達式或者標簽等技術,將作用域中的對象的數據提取出來渲染到 JSP 模板中。

      具體的執行過程是怎么樣的:

      查詢數據庫數據 → Serlvet 放入到作用域中(request、session、application、pageContext)→ JSP 模板通過 EL 表達式 + 標簽 → 將其作用域中存儲的對象取出來動態替換。

      查詢數據庫數據 → SpringMVC 放入到作用域中(ModelMap、Model、ModelAndView、request)→ Freemarker / Thymeleaf 模板通過 EL 表達式 + 標簽 → 將其作用域中存儲的對象取出來動態替換。

      這個具體的執行過程其實就是經典 MVC 的開始架構設計模式。

      MVC 架構設計提出的意義:

      1:分層架構

      2:解耦

      3:各司其職(單一職能原則)

      MVC 設計模式的由來

      MVC 模式的概念:

      MVC 模式并不是 JavaWeb 項目中獨有的,MVC 是一種軟件工程中的一種軟件架構模式,把軟件系統分為三個基本部分:模型(Model)、視圖(View)和控制器(Controller),是一種軟件設計的典范。

      MVC 模式的詳解:

      控制器 Controller:控制請求的處理邏輯,對請求進行處理,負責請求轉發,

      視圖 View:用戶看到并與之交互的界面,比如 HTML(靜態資源),JSP(動態資源)等等。

      模型 Model:一種企業規范,也就是業務流程、狀態的處理以及業務規則的規定。業務流程的處理過程對其他層來說是不透明的,模型接受視圖數據的請求,并返回最終的處理結果。業務模型的設計可以說是 MVC 的核心。

      MVC 模式的應用:

      MVC 模式被廣泛用于 Java 的各種框架中,比如早期的 Struts2 框架和目前市面上主流的 SpringMVC 框架都用到了這種思想。

      JavaWeb 的經典三層架構

      JSP Model1 第一代:

      JSP Model1 是 JavaWeb 早期的模型,它適合小型 Web 項目,開發成本低。Model1 第一代時期,服務器端只有 JSP 頁面,所有的操作都在 JSP 頁面中,連訪問數據庫的 API 也在 JSP 頁面中完成。也就是說,所有的東西都耦合在一起,對后期的維護和擴展極為不利。
      image

      """

      <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
      <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
      <html>
      <head>
      	<meta charset="UTF-8">
      	<title>Title</title>
      </head>
      <body>
         <sql:query var="user" sql="select * from user">
      		${user.id} == ${user.nickname}
         </sql:query>
      </body>
      </html>
      

      """
      JSP Model1 第二代:

      JSP Model1 第二代有所改進,把業務邏輯的內容放到了 JavaBean 中,而 JSP 頁面負責顯示以及請求調度的工作。雖然第二代比第一代好了些,但還讓 JSP 做了過多的工作,JSP 中把視圖工作和請求調度(控制器)的工作耦合在一起了。

      image

      """

      <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
      <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
      <html>
      	<head>
      		<meta charset="UTF-8">
      		<title>Title</title>
      	</head>
      	<body>
      		<%
      		Connection connection = null;
      		PreparedStatement preparedStatement = connection.prepareStatement("sql");
      		ResultSet resultSet = preparedStatement.executeQuery();
      		resultSet.next();
      		User user = new User();
      		user.setId(1);
      		user.setNickname("xpy");
      		pageContext.setAttribute("user",user);
      		%>
      		${user.id}===${user.nickname}
      		<jsp:useBean id="user" type="com.kuangstudy.bean.User" scope="page">
      			<jsp:getProperty name="user" property="id"/>
      			<jsp:getProperty name="user" property="nickname"/>
      		</jsp:useBean>
      	</body>
      </html>
      

      """
      JSP Model2:

      • JSP Model2 模式已經可以清晰的看到 MVC 完整的結構。

      • JSP:視圖層,用來與用戶打交道。負責接收用來的數據,以及顯示數據給用戶。

      • Servlet:控制層,負責找到合適的模型對象來處理業務邏輯,轉發到合適的視圖。

      • JavaBean:模型層,完成具體的業務工作,例如開啟、轉賬等。

      image

      JSP Model2 適合多人合作開發大型的 Web 項目,各司其職,互不干涉,有利于開發中的分工,有利于組件的重用。但是 Web 項目的開發難度加大,同時對開發人員的技術要求也提高了。

      """

      @WebServlet("/test")
      public class TestServlet extends HttpServlet {
      	@Override
      	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      		request.setCharacterEncoding("UTF-8");
      		response.setCharacterEncoding("UTF-8");
      		try {
      			Connection connection = null;
      			PreparedStatement preparedStatement = connection.prepareStatement("sql");
      			ResultSet resultSet = preparedStatement.executeQuery();
      			resultSet.next();
      			User user = new User();
      			user.setId(1);
      			user.setNickname("xpy");
      			request.setAttribute("user", user);
      			request.getRequestDispatcher("index.jsp").forward(request,response);
      		}catch (Exception ex){
      			ex.printStackTrace();
      		}
      	}
      	@Override
      	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      	}
      }
      

      """
      """

      <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
      <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
      <html>
      <head>
      	<meta charset="UTF-8">
      	<title>Title</title>
      </head>
      <body>
      	${user.id}===${user.nickname}
      	<jsp:useBean id="user" type="com.kuangstudy.bean.User" scope="page">
      		<jsp:getProperty name="user" property="id"/>
      		<jsp:getProperty name="user" property="nickname"/>
      	</jsp:useBean>
      </body>
      </html>
      

      """

      posted @ 2023-08-01 19:22  二價亞鐵  閱讀(222)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲一区二区三区四区| 黑森林福利视频导航| 熟女在线视频一区二区三区| 91精品国产麻豆国产自产| 精品国产午夜福利在线观看| 日韩精品一区二区蜜臀av| 尤物国精品午夜福利视频| 色综合天天综合网天天看片| 国产国拍亚洲精品永久软件| 国产成人精品无缓存在线播放| 起碰免费公开97在线视频| 丰满岳妇乱一区二区三区| 国产欧美另类久久久精品不卡| 亚洲精品一区二区三区免| 久久精产国品一二三产品 | 色伊人久久综合中文字幕| 午夜福利精品国产二区| 亚洲欧美高清在线精品一区二区| 日本大片在线看黄a∨免费| 狠狠亚洲丁香综合久久| 亚洲av成人无码天堂| 成全影视大全在线观看| 中文字幕在线亚洲日韩6页| 在线播放亚洲成人av| 日本夜爽爽一区二区三区| 日韩国产亚洲欧美成人图片| 午夜福利看片在线观看| 国产国产成人精品久久蜜| 四虎成人精品永久网站| 黑人巨茎大战白人美女| av亚洲一区二区在线| 深夜福利资源在线观看| 长岛县| 国产系列高清精品第一页| 成人网站国产在线视频内射视频 | 最新亚洲av日韩av二区| 久久精品国产久精国产69| 亚洲精品日本一区二区| 在线免费播放亚洲自拍网| 国产成人高清精品免费软件| 亚洲 成人 无码 在线观看|