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

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

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

      讀書筆記:Servlet JSP和Spring MVC初學指南

      Servlet JSP和Spring MVC初學指南,作者: 克尼亞萬 (Budi Kurniawan) / 戴克 (Paul Deck)

      目錄

      內容提要

      Servlet和JSP是開發Java Web應用程序的兩種基本技術。Spring MVC是Spring框架中用于Web應用快速開發的一個模塊, 是當今最流行的Web開發框架之一。

      前言

      Servlet/JSP應用架構

      Web用戶通過Web瀏覽器來訪問Servlet應用。通常,Web瀏覽器又叫Web客戶端。
      Web服務器和Web客戶端問通過HTTP協議通信,因此Web服務器也叫HTTP服務器。
      Servlet和JSP只是Java企業版中眾多技術中的兩個,其他Java EE技術還有Java消息服務,企業Java對象、JavaServer Faces以及Java持久化等,完整的Java EE技術列表可以訪問如下地址:

      https://www.oracle.com/java/technologies/java-ee-8.html
      

      我們可以將一個 Servlet/JSP 應用部署到一個Java EE容器上,但一個Servet/JSP容器就已經滿足需要了,并且更加輕量。

      HTTP

      HTTP 1.1版本的RFC編號是2616,下載地址
      https://www.w3.org/Protocols/HTTP/1.1/rfc2616.pdf
      2011年,標準化組織IETF發布了WebSocket協議,即RFC 6455規范。該協議允許一個HTTP連接升級為WebSocket連接,支持雙向通信,這就使得服務端可以通過WebSocket協議主動發起同客戶端的會話通信。

      通常,HTTP的URL格式如下

      protocol://[host.]domain[:port][/context][/resource] [?query string]
      

      另外,example.com 或者example.org無法被注冊,因為它們被保留作為各類文檔手冊舉例使用。
      localhost 作為一個保留關鍵字,用于指向本機。
      URL中的context部分用來代表應用名稱,該部分也是可選的。一臺 Web服務器可以運行多個上下文(應用),其中一個可以配置為默認上下文,對于訪問默認上下文中的資源,可以跳過context部分。
      最后,一個context 可以有一個或多個默認資源(通常為index.html, index.htm 或者default.htm)。一個沒有帶資源名稱的URL通常指向默認資源。當存在多個默認資源時,其中最高優先級的資源將被返回給客戶端。
      在資源名之后可以有一個或多個查詢語句或者路徑參數。查詢語句是一個Key/Value組,多個查詢語句間用“&”符號分隔。路徑參數類似于查詢語句,但只有value部分,多個value部分用“/" 符號分隔。

      HTTP請求

      一個HTTP請求包含三部分內容:

      • 方法-URI-協議/版本
      • 請求頭信息
      • 請求正文

      HTTP響應

      同HTTP請求一樣,HTTP響應包含三部分:

      • 協議一狀態碼描述
      • 響應頭信息
      • 響應正文

      第一部分 Servlets和SP

      第1章 Servlets 3

      1.1 Servlet API概覽 3

      1.2 Servlet 4

      init、service 和destroy是生命周期方法。Servlet 容器根據以下規則調用這3個方法:

      • init,當該Servlet第一次 被請求時,Servlet 容器會調用這個方法。
      • service,每當請求Servlet 時,Servlet 容器就會調用這個方法。
      • destroy,當要銷毀Servlet時,Servlet 容器就會調用這個方法。

      1.3 編寫基礎的Servlet應用程序 5

      1.3.1 編寫和編譯Servlet類 5

      1.3.2 應用程序目錄結構 7

      放在應用程序目錄下的任何資源,用戶只要輸入資源URL,都可以直接訪問到。如果想讓某一個資源可以被Servlet訪問,但不可以被用戶訪問,那么就要把它放在WEB-INF目錄下。
      現在,準備將應用程序部署到Tomcat。使用Tomcat 時,一種部署方法是將應用程序目錄復制到Tomcat 安裝目錄下的webapps目錄中。也可以通過在Tomeat 的conf目錄中編輯serverxml文件實現部署。
      部署Servlet/JSP應用程序時,建議將它部署成一個WAR文件。WAR文件其實就是以.war作為擴展名的JAR文件。然后,將WAR文件復制到Tomcat的webapps目錄下。當開始啟動Tomeat時,Tomcat就會自動解壓這個war文件。

      1.3.3 調用Servlet 8

      要測試這個Servlet, 需要啟動或者重啟Tomcat, 并在瀏覽器中打開下面的URL可以輸出對應的頁面。

      1.4 ServletRequest 8

      1.5 ServletResponse 9

      1.6 ServletConfig 9

      1.7 ServletContext 12

      1.8 GenericServlet 12

      1.9 Http Servlets 14

      1.9.1 HttpServlet 15

      1.9.2 HttpServletRequest 16

      1.9.3 HttpServletResponse 16

      1.10 處理HTML表單 17

      你可以輕松地將一個 HTML表單從一個Servlet 發送到瀏覽器。當用戶提交表單時,在表單元素中輸入的值就會被當作請求參數發送到服務器。
      現在,填寫表單,并單擊Submit按鈕。在表單中輸入的值,將利用HTTP POST方法被發送給服務器,這樣就會調用Servlet 的doPost方法。

      1.11 使用部署描述符 22

      部署的一個方面是用一個路徑配置Servlet的映射。
      利用部署描述符是配置Servlet應用程序的另一種方法。部署描述符總是命名為web.xml, 并且放在WEB-INF 目錄下。
      清單:部署描述符

      <servlet-mapping>
      	<servlet-name>SimpleServlet</servlet -name>
      	<url-pattern>/simple</url-pattern>
      </servlet-mapping>
      

      1.12 小結 24

      Servlet技術是Java EE技術的一部分。 所有Servlet都運行在Servlet容器中,容器和Servlet間的接口為javax sevet.Servlet. javax.servlet

      第 2章 會話管理 25

      由于HTTP的無狀態性,一個 Web 服務器無法區分一個HTTP請求是否為第一次訪問。
      例如,一個Web郵件應用要求用戶登錄后才能查看郵件,
      本章將闡述4種不同的狀態保持技術: URL重寫、隱藏域、cookies 和HTTPSession對象。

      2.1 URL重寫 25

      URL重寫是一種會話跟蹤技術, 它將一個或多個token添加到URL的查詢字符串中,每
      個token通常為key=value形式,如下:

      url?key-1=value-1&key-2=value-2
      

      注意,URL和tokens間用問號(? )分割,token 間用與號(&)。

      有如下限制:

      • URL在某些瀏覽器上最大長度為2000字符;
      • 若要傳遞值到下一個資源,需要將值插入到鏈接中,換句話說,靜態頁面很難傳值;
      • URL重寫需要在服務端上完成,所有的鏈接都必須帶值,因此當一個頁面存在很多鏈接時,處理過程會是一個不小的挑戰;
      • 某些字符,例如空格、與和問號等必須用base64編碼;
      • 所有的信息都是可見的,某些情況下不合適。

      示例:若選擇了倫敦,并點擊了Page2,則將以下URL發送給服務端:

      http: //localhost: 8080/app02a/top10?city=london&page=2
      

      2.2 隱藏域 30

      使用隱藏域來保持狀態類似于URL重寫技術,但不是將值附加到URL上,而是放到HTML表單的隱藏域中。當表單提交時,隱藏域的值也同時提交到服務器端。隱藏域技術僅當網頁有表單時有效。該技術相對于URL重寫的優勢在于:沒有字符數限制,同時無須額外
      的編碼。但該技術同URL重寫一樣, 不適合跨越多個界面。

      該隱藏域為所編輯的客戶id,因此當表單提交時,服務端就知道應更新哪個客戶信息。

      2.3 Cookies 34

      Cookies是一個很少的信息片段, 可自動地在瀏覽器和 Web服務器間交互。
      瀏覽器在訪問同一Web 服務器時,會將之前收到的cookie一并發送。

      2.4 HttpSession對象 41

      一個用戶可以有且最多有一個HttpSession并且不會被其他用戶訪問到。
      HttpSession對象在用戶第一次訪問網站的時候自動被創建, 你可以通過調用HttpServletRequest的getSession方法獲取該對象。

      請注意,不同于URL重寫、隱藏域或cookie,放入到HttpSession的值,是存儲在內存中的,因此,不要往HttpSession放入太多對象或大對象。
      注意,所有保存在HttpSession的數據不會被發送到客戶端,不同于其他會話管理技術,Servlet容器為每個HttpSession生成唯一的標識, 并將該標識發送給瀏覽器。

      ShoppingCartServlet 映射有如下URL:

      • /products:顯示所有商品。
      • /viewProductDetails:展示.個商品的細節。
      • /addToCart:將一個商品添加到購物車中
      • /viewCart:展示購物車的內容。

      除/addToCart外,其他URL都會調用doGCet方法。doGet首先根據所請求的URL來生成相應內容:

      String uri = request.getRequestURI();
      if (uri.endsWith("/products")) {
      	sendProductList(response) ;
      } else if (uri.endsWith("/viewProductDetails") {
      	sendProductDetails (request, response) ; 
      } else if (uri.endsWith ("viewCart")) {
      	showCart(request, response) ;
      }
      

      如下URL訪問應用的主界面:

      http://localhost: 8080/app02a/products
      

      當用戶單擊View Cart (查看購物車)鏈接時,Web容器調用showCart方法,獲取當前用戶的Htt
      pSession并調用其gettribute方法來獲取購物商品列表:

      HttpSession session = request.getSession();
      List<ShoppingItem> cart = (List<ShoppingItem>) session.getAttribute (CART ATTRIBUTE) ;
      
      

      然后迭代訪問List對象,并將購物項發送給瀏覽器:

      if (cart != null) {
      for (ShoppingItem shoppingItem:cart) {
      	Product product = shoppingItem.getProduct();
      	int quantity = shoppingItem.getQuantity();
      

      2.5 小結 49

      第3章 JavaServer Pages(JSP) 50

      Servlet 有兩個缺點是無法克服的: 首先,寫在Servlet中的所有HTML標簽必須包含Java 字符串,這使得處理HTTP響應報文的工作十分煩瑣:第二,所有的文本和HTML標記是硬編碼,導致即使是表現層的微小變化,如改變背景顏色,也需要重新編譯。

      JavaServer Pages (JSP)解決了上述兩個問題。同時,JSP 不會取代Servlet,相反,它們具有互補性。

      3.1 JSP概述 50

      首先,不必編譯JSP頁面:其次,JSP 頁面是一個以jsp為擴展名的文本文件。
      JSP頁面在JSP容器中運行,一個Servlet 容器通常也是 JSP容器。
      容器就是運行環境。
      Servlet/JSP容器主要做以下兩件事情:
      (1)轉換JSP頁面到JSP頁面實現類,
      (2)如果轉換成功,Servlet/JSP容器隨后編譯該Servlet類,并裝載和實例化該類。

      一個JSP頁面的第一次調用的實際花費總比后來的花費多,因為它涉及翻譯和編
      譯。為了解決這個問題,可以執行下列動作之一:

      • 配置應用程序,使所有的JSP頁面在應用程序啟動時被調用(實際上也可視為翻譯和編譯),而不是在第一次請求時調用。
      • 預編譯 JSP頁面,并將其部署為Servlet。

      JSP頁面可以包含模板數據和語法元素。這里,語法元素是一些具有特殊意義的 JSP轉換符。例如,“<%”是一個元素,因為它表示在JSP頁面中的Java代碼塊的開始。“%>”也是一個元素,因為它是Java代碼塊的結束符。

      清單3.1 welcome.jsp
      
      <html>
      <head><title>Welcome</tit1e></head>
      <body>
      Welcome
      </body>
      </html>
      

      在Tomcat中,welcome.jsp 頁面在第一次請求時 被翻譯成名為welcome jsp 的Servlet。你可以在Tomcat工作目錄下的子目錄中找到生成的Servlet。
      servlet是java代碼。

      welcom.jsp --> servlet --> HTML
      JSP                    java運行環境
      

      可以通過如下URL訪問welcome.jsp頁面:

      http://localhost:8080/app03a/welcome.jsp
      

      如何在JSP頁面中使用Java代碼來生成動態頁面。

      <body>
      <%
      	DateFormat dateFormat =
      		DateFormat. getDate Instance (DateFormat.LONG);
      	String s = dateFormat. format (new Date());
      	out.println("Today is”+ s);
      %>
      </body>
      

      todaysDate.jsp頁面發送了幾個HTML標簽和字符串“今天是”以及今天的日期到瀏覽器。
      請注意兩件事情。首先,Java 代碼可以出現在JSP頁面中的任何位置,并通過
      "<%"和“%>”包括起來。
      "<%...%>”塊被稱為scriplet。

      3.2 注釋 54

      JSP支持兩種不同的注釋格式:
      (1) JSP注釋。該注釋記錄頁面中做了什么。
      (2) HTML/XHTML注釋。這些注釋將會發送到瀏覽器上。
      JSP注釋以“<%--”開始,以“--%>”結束。下面是一個例子:

      <%-- retrieve products to display --%>
      

      JSP注釋不會被發送到瀏覽器端,也不會被嵌套。
      HTML/XHTML注釋語法如下:

      <!-- retrieve products to display --!>
      

      一個HTML/XHTML注釋不會被容器處理,會原樣發送給瀏覽器。

      3.3 隱式對象 55

      Servlet容器會傳遞幾個對象給它運行的Servlet。例如,可以通過Servlet的
      service方法拿到HttpServletRequest 和HttpServletResponse 對象,以及可以通過init 方法訪問到ServletConfig對象。此外,可以通過調用HttpServletRequest 對象的getSession 方法訪問到HttpSession對象。處理HTML頁面

      此外,PageContext中提供了另組有趣的方法:用于獲取和設置屬性的方法,即getAttribute方法和setAttribute方法。屬性值可被存儲在4個范圍之一: 頁面、請求、會話和應用程序。

      3.4 指令 58

      指令是JSP語法元素的第一種類型。 它們指示JSP轉換器如何翻譯JSP頁面為Servlet。

      3.4.1 page指令 58

      可以使用page指令來控制JSP轉換器轉換當前JSP頁面的某些方面。例如,可以告訴JSP用于轉換隱式對象out的緩沖器的大小、內容類型,以及需要導入的Java類型,等等。
      page指令的語法如下:

      <%@ page attribute1="valuel" attribute2="value2" %>
      

      3.4.2 include指令 59

      可以使用inelude指令將其他文件中的內容包含到當前JSP頁面。
      include指令的語法如下:

      <%@ include file="url" %>
      

      3.5 腳本元素 60

      .個腳本程序是一個 Java 代碼塊,以<%符號開始, 以%>符號結束。

      3.5.1 表達式 61

      表達式以<%=符號開始, 以%>符號結束。
      3.5.2 聲明 61

      3.5.3 禁用腳本元素 64

      3.6 動作 65

      3.6.1 useBean 65

      3.6.2 setProperty和getProperty 66

      3.6.3 include 67

      對于include 指令,資源引入發生在頁面轉換時,即當JSP容器將頁面轉換為生成的Servlet 時。而對于include動作,資源引入發生在請求頁面時。

      3.6.4 forward 67

      3.7 錯誤處理 67

      請使用page指令的isErrorPage屬性(屬性值必須為True)來標識一個 JSP頁面是錯誤
      頁面。

      3.8 小結 68

      第4章 表達式語言 69

      4.1 表達式語言的語法 69

      EL表達式以${開頭,并以}結束。
      例如,表達式x+y,可以寫成:

      ${x+y}
      

      4.1.1 關鍵字 70

      以下是關鍵字,它們不能用作標識符:

      and or not eq ne lt gt le ge
      

      4.1.2 [ ]和.運算符 70

      為了訪問對象的屬性,可以使用以下任意一種形式:

      ${object["propertyName"] }
      ${object.propertyName }
      

      4.1.3 取值規則 71

      4.2 訪問JavaBean 71

      4.3 EL隱式對象 72

      4.3.1 pageContext 72

      4.3.2 initParam 73

      4.3.3 param 73

      4.3.4 paramValues 73

      4.3.5 header 74

      隱式對象cookie可以用來獲取一個cookie。

      4.3.7 applicationScope、sessionScope、requestScope和pageScope 74

      4.4 使用其他EL運算符 75

      4.4.1 算術運算符 75

      4.4.2 邏輯運算符 75

      下面是邏輯運算符列表:

      • 和(&&和and)

      4.4.3 關系運算符 76

      下面是關系運算符列表:

      • 等于(== 和eq)

      4.4.4 empty運算符 76

      4.5 應用EL 76

      4.6 如何在JSP 2.0及其更高版本中配置EL 80

      4.6.1 實現免腳本的JSP頁面 80

      4.6.2 禁用EL計算 80

      4.7 小結 81

      第5章 JSTL 82

      JSP標準標簽庫(JavaServer Pages Standard Tag Library, JSTL)是一個定制標簽庫的集合,用來解決像遍歷Map或集合、條件測試、XML處理,甚至數據庫訪問和數據操作等常見的問題。
      JSP中寫java程序

      JSTL標簽庫

      區域 子函數 URI 前綴
      核心 變量支持 http://java.sun.com/jsp/jstl/core c
      流控制
      URL管理
      其他
      例如,要使用Core庫,必須在JSP頁面的開頭處做以下聲明: 引入庫
      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
      

      5.1 下載JSTL 82

      5.2 JSTL庫 82

      5.3 一般行為 83

      5.3.1 out標簽 83

      使用庫

      <c:out value="value">
      

      5.3.2 set標簽 84

      5.3.3 remove標簽 86

      5.4 條件行為 86

      5.4.1 if標簽 87

      5.4.2 choose、when和otherwise標簽 88

      5.5 遍歷行為 89

      5.5.1 forEach標簽 89

      5.5.2 forTokens標簽 96

      5.6 格式化行為 99

      5.6.1 formatNumber標簽 99

      5.6.2 formatDate標簽 101

      5.6.3 timeZone標簽 102

      5.6.4 setTimeZone標簽 103

      5.6.5 parseNumber標簽 104

      5.6.6 parseDate標簽 104

      5.7 函數 106

      5.7.1 contains函數 106

      5.7.2 containsIgnoreCase函數 106

      5.7.3 endsWith函數 106

      5.7.4 escapeXml函數 107

      5.7.5 indexOf函數 107

      5.7.6 join函數 107

      5.7.7 length函數 107

      5.7.8 replace函數 108

      5.7.9 split函數 108

      5.7.10 startsWith函數 108

      5.7.11 substring函數 108

      5.7.12 substringAfter函數 109

      5.7.13 substringBefore函數 109

      5.7.14 toLowerCase函數 109

      5.7.15 toUpperCase函數 109

      5.7.16 trim函數 109

      5.8 小結 110

      JSTL可以完成一般的任務(如遍歷、集合和條件)、處理XML文檔、格式化文本、訪間數據庫以及操作數據, 等等。

      第6章 自定義標簽 111

      6.1 自定義標簽概述 111

      6.2 簡單標簽處理器 112

      6.3 SimpleTag示例 112

      6.3.1 編寫標簽處理器 113

      6.3.2 注冊標簽 114

      6.3.3 使用標簽 114

      6.4 處理屬性 115

      6.5 訪問標簽內容 118

      6.6 編寫EL函數 120

      6.7 發布自定義標簽 122

      6.8 小結 124

      第7章 標簽文件 125

      7.1 Tag File簡介 125

      7.2 第 一個Tag File 126

      7.3 Tag File指令 127

      7.3.1 tag指令 127

      7.3.2 include指令 128

      7.3.3 taglib指令 130

      7.3.4 attribute指令 131

      7.3.4 variable指令 132

      7.4 doBody 134

      7.5 invoke 137

      7.6 小結 138

      第8章 監聽器 139

      Servlet API提供了一系列的事件和事件監聽接口。上層的servletJSP應用能夠通過調用這些API進行事件驅動的開發。監聽器接口可以分為三類: ServletContext. HttpSession 和ServletRequest。

      8.1 監聽器接口和注冊 139

      8.2 Servlet Context監聽器 140

      8.2.1 ServletContextListener 140

      8.2.2 ServletContextAttributeListener 142

      8.3 Session Listeners 142

      8.3.1 HttpSessionListener 142

      8.3.2 HttpSessionAttributeListener 145

      8.3.3 HttpSessionActivationListener 145

      8.3.4 HttpSessionBindingListener 146

      8.4 ServletRequest Listeners 147

      8.4.1 ServletRequestListener 147

      8.4.2 ServletRequestAttributeListener 149

      8.5 小結 149

      本章,我們學習了Servlet API提供的多個監聽器類型。這些監聽器可以分成三類: application范圍、session范圍和request范圍。

      第9章 Filters 150

      Filter是攔截Request請求的對象:在用戶的請求訪問資源前處理ServletRequet以及ServletResponse,它可用于日志記錄、加解密、Session 檢查、圖像文件保護等。

      9.1 Filter API 150

      9.2 Filter配置 151

      9.3 示例1:日志Filter 153

      作為第1個例子,將做一個簡單的Filter:在app09a的應用中把Request請求的URL記來到日志文本文件中。

      9.4 示例2:圖像文件保護Filter 156

      9.5 示例3:下載計數Filter 158

      9.6 Filter順序 162

      9.7 小結 162

      第 10章 修飾Requests及Responses 163

      10.1 Decorator模式 163

      10.2 Servlet封裝類 164

      10.3 示例:AutoCorrect Filter 165

      10.4 小結 172

      第 11章 異步處理 173

      11.1 概述 173

      11.2 編寫異步Servlet和過濾器 173

      11.3 編寫異步Servlets 174

      11.4 異步監聽器 179

      11.5 小結 181

      第 12章 安全 182

      12.1 身份驗證和授權 182

      12.1.1 指定用戶和角色 183

      12.1.2 實施安全約束 184

      security-constraint元素指定一個資源集合和角色或角色可以訪問的資源。這個元素有兩個子元素: web-resource-collection 和auth-constraint。

      12.2 身份驗證方法 185

      12.2.1 基于表單的認證 189

      12.2.2 客戶端證書認證 192

      12.3 安全套接層 192

      12.3.1 密碼學 192

      12.3.2 加密/解密 193

      12.3.3 認證 193

      12.3.4 數據的完整性 195

      12.3.5 SSL是怎么工作的 195

      12.4 編程式安全 196

      12.4.1 安全注釋類型 196

      12.4.2 Servlet的安全API 197

      12.5 總結 199

      第 13章 部署 200

      13.1 概述 200

      13.1.1 核心元素 202

      13.1.2 context-param 202

      13.1.3 distributable 202

      13.1.4 error-page 202

      13.1.5 filter 203

      13.1.6 filter-mapping 204

      13.1.7 listener 204

      13.1.8 locale-encoding-mapping-list

      和locale-encoding-

      mapping 204

      13.1.9 login-config 205

      13.1.10 mime-mapping 205

      13.1.11 security-constraint 206

      13.1.12 security-role 207

      13.1.13 Servlet 207

      13.1.14 servlet-mapping 209

      13.1.15 session-config 209

      13.1.16 welcome-file-list 209

      13.1.17 JSP-Specific

      Elements 210

      13.1.18 taglib 210

      13.1.19 jsp-property-group 210

      13.2 部署 212

      從Servlet 1.0 開始,可以很方便地部署一個 Servlet/JSP 應用程序。僅需要將應用原始目錄結構壓縮成一個 WAR文件。可以在JDK中使用jar工具或流行的工具,如WinZip。需要確保壓縮文件有.war擴展名。如果使用WinZip,則在壓縮完成后重命名文件。
      WAR文件必須包含所有庫文件、類文件、HTML文件、JSP 頁面、圖像文件以及版權聲明(如果有的話)等,但不包括Java 源文件。任何人都可以獲取一個WAR文件的副本,井部署到一個Servlet/JSP容器上。

      13.3 web fragment 212

      13.4 小結 214

      第 二部分 Spring mvc

      第 14章 動態加載及Servlet

      容器加載器 217

      14.1 動態加載 217

      14.2 Servlet容器加載器 220

      14.3 小結 222

      第 15章 Spring框架 223

      15.1 Spring入門 223

      15.2 依賴注入 223

      依賴注入框架會分別創建對象A和對象B,將對象B注入到對象A中。

      15.3 XML配置文件 226

      15.4 Spring控制反轉容器的

      使用 226

      15.4.1 通過構造器創建一個

      bean實例 226

      15.4.2 通過工廠方法創建

      一個bean實例 227

      15.4.3 Destroy Method的

      使用 227

      15.4.4 向構造器傳遞參數 228

      15.4.5 setter方式依賴注入 229

      15.4.6 構造器方式依賴

      注入 231

      15.5 小結 232

      第 16章 模型2和MVC模式 233

      16.1 模型1介紹 233

      16.2 模型2介紹 233

      flowchart LR     Brower[web瀏覽器]-->one     one-->DB[(數據庫)]     subgraph one[web容器]     JSP --> Bean     Servlet[Servlet<br>控制器] --> JSP[JSP<br>視圖]     Servlet --> Bean[JavaBean<br>模型]     end    

      16.3 模型2之Servlet控制器 234

      16.3.1 Product類 236

      16.3.2 ProductForm類 237

      16.3.3 ControllerServlet類 238

      16.3.4 視圖 241

      16.3.5 測試應用 243

      16.4 解耦控制器代碼 243

      16.5 校驗器 247

      16.6 后端 251

      16.7 小結 252

      第 17章 Spring MVC介紹 253

      Spring MVC框架可以幫助開發人員快速地開發MVC應用。

      17.1 采用Spring MVC的好處 253

      17.2 Spring MVC的

      DispatcherServlet 254

      17.3 Controller接口 255

      17.4 第 一個Spring MVC應用 255

      17.4.1 目錄結構 255

      17.4.2 部署描述符文件和Spring

      MVC配置文件 256

      17.4.3 Controller 257

      17.4.4 View 259

      17.4.5 測試應用 260

      17.5 View Resolver 261

      17.6 小結 263

      第 18章 基于注解的控制器 264

      18.1 Spring MVC注解類型 264

      18.1.1 Controller注解

      類型 264

      18.1.2 RequestMapping

      注解類型 265

      18.2 編寫請求處理方法 267

      18.3 應用基于注解的控制器 269

      18.3.1 目錄結構 269

      18.3.2 配置文件 270

      18.3.3 Controller類 272

      18.3.4 View 273

      18.3.5 測試應用 274

      18.4 應用@Autowired和@Service

      進行依賴注入 275

      18.5 重定向和Flash屬性 278

      作為一個經驗豐富的ServletUJSP程序員,必須知道轉發和重定向的區別。轉發比重定向快,因為重定向經過客戶端,而轉發沒有。但是,有時采用重定向更好,若需要重定向到一個外部網站,則無法使用轉發。

      使用重定向的一個不便的地方是:無法輕松地傳值給目標頁面。而采用轉發,則可以簡單地將屬性添加到Model,使得目標視圖可以輕松訪問。由于重定向經過客戶端,所以Model中的一切都在重定向時丟失。幸運的是,Spring 3.1版本以及更高版本通過Flash 屬性提供了一種供重定向傳值的方法。

      18.6 請求參數和路徑變量 279

      18.7 @ModelAttribute 281

      18.8 小結 282

      第 19章 數據綁定和表單標簽庫 283

      19.1 數據綁定概覽 283

      19.2 表單標簽庫 284

      標簽 描述
      form 渲染表單元素
      input 渲染<input type="text"/>元素

      19.2.1 form標簽 284

      19.2.2 input標簽 285

      19.2.3 password標簽 286

      19.2.4 hidden標簽 287

      19.2.5 textarea標簽 287

      19.2.6 checkbox標簽 287

      19.2.7 radiobutton標簽 288

      19.2.8 checkboxes標簽 288

      19.2.9 radiobuttons標簽 289

      19.2.10 select標簽 290

      19.2.11 option標簽 290

      19.2.12 options標簽 291

      19.2.13 errors標簽 291

      19.3 數據綁定范例 292

      19.3.1 目錄結構 292

      19.3.2 Domain類 293

      19.3.3 Controller類 294

      19.3.4 Service類 295

      19.3.5 配置文件 298

      19.3.6 視圖 299

      19.3.7 測試應用 301

      19.4 小結 302

      第 20章 轉換器和格式化 303

      20.1 Converter 303

      20.2 Formatter 307

      20.3 用Registrar注冊

      Formatter 310

      20.4 選擇Converter,還是

      Formatter 312

      20.5 小結 312

      第 21章 驗證器 313

      21.1 驗證概覽 313

      驗證器則作用于object級。它決定某一個對象中的所有field是否均是有效的,以及是否遵循某些規則。

      21.2 Spring驗證器 314

      21.3 ValidationUtils類 315

      21.4 Spring的Validator范例 316

      21.5 源文件 317

      21.6 Controller類 318

      21.7 測試驗證器 319

      21.8 JSR 303驗證 320

      @Min(value)被注釋的元素必須是一個數字,其值必須大于等于指定的最小值
      @Max(value)被注釋的元素必須是一個數字,其值必須小于等于指定的最大值

      21.9 JSR 303 Validator范例 322

      21.10 小結 323

      第 22章 國際化 324

      22.1 語言區域 324

      22.2 國際化Spring MVC

      應用程序 326

      22.2.1 將文本元件隔離成

      屬性文件 326

      22.2.2 選擇和讀取正確的

      屬性文件 328

      22.3 告訴Spring MVC使用哪個

      語言區域 329

      22.4 使用message標簽 329

      22.5 范例 330

      22.6 小結 334

      第 23章 上傳文件 335

      為此,在Spring MVC中處理文件上傳有兩種方法:
      (1)購買Apache Commons FileUpload元件。
      (2)利用Servlet 3.0及其更高版本的內置支持。

      23.1 客戶端編程 335

      23.2 MultipartFile接口 336

      23.3 用Commons FileUpload

      上傳文件 336

      23.4 Domain類 337

      23.5 控制器 338

      23.6 配置文件 340

      23.7 JSP頁面 341

      23.8 應用程序的測試 343

      23.9 用Servlet 3.0及其更高版本

      上傳文件 344

      23.10 客戶端上傳 347

      雖然Servlet 3.0中的文件上傳特性使文件上傳變得十分容易,只需在服務器端編程即可,但這對提升用戶體驗毫無幫助。單獨一個 HTML表單并不能顯示進度條,或者顯示已經成功工傳的文件數量。開發人員采用了各種不同的技術來改善用戶界面,例如,單獨用一個瀏覽器線程對服務器發出請求,以便報告上傳進度。
      HTML 5在其DOM中添加了一個FileAPI。它允許訪問本地文件。HTML 5似乎是針對客戶端文件上傳局限性的最佳解決方案。

      23.11 小結 355

      第 24章 下載文件 356

      像圖片或者HTML文件這樣的靜態資源,在瀏覽器中打開正確的URL即可下載。只要該資源是放在應用程序的目錄下,或者放在應用程序目錄的子目錄下,而不是放在WEB-INF下,ServletJSP 容器就會將該資源發送到瀏覽器。然而,有時靜態資源是保存在應用程序目錄外,或者是保存在某一個數據庫中, 或者有時需要控制它的訪間權限, 防止其他網站交叉引用它。如果出現以上任意一種情況, 都必須通過編程來發送資源。

      24.1 文件下載概覽 356

      24.2 范例1:隱藏資源 357

      24.3 范例2:防止交叉引用 360

      24.4 小結 363

      附錄A Tomcat 364

      A.1 下載和配置Tomcat 364

      A.2 啟動和終止Tomcat 364

      A.3 定義上下文 365

      A.4 定義資源 366

      A.5 安裝SSL證書 366

      附錄B Web Annotations 368

      B.1 HandlesTypes 368

      B.2 HttpConstraint 368

      B.3 HttpMethodConstraint 369

      B.4 MultipartConfig 369

      B.5 ServletSecurity 370

      B.6 WebFilter 370

      B.7 WebInitParam 371

      B.8 WebListener 371

      B.9 WebServlet 371

      附錄C SSL證書 372

      C.1 證書簡介 372

      C.2 KeyTool 373

      C.2.1 生成密鑰對 373

      C.2.2 獲得認證 374

      C.2.3 將證書導入到密鑰庫 375

      C.2.4 從密鑰庫導出證書 375

      C.2.5 列出密鑰庫條目 375

      posted @ 2025-03-11 17:23  liqinglucky  閱讀(64)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久三级国内外久久三级| 国产办公室秘书无码精品99| 成人午夜免费一区二区三区| 亚洲综合一区二区三区| 黄色三级亚洲男人的天堂| 国产午夜福利视频在线| 久爱www人成免费网站| 亚洲国产高清第一第二区| 久久综合色之久久综合| 亚洲国产美国产综合一区| 一本无码人妻在中文字幕免费 | 综合色天天久久| 亚洲女同精品久久女同| 亚洲中文字幕精品久久| 四虎国产精品永久免费网址| 国产精品人成视频免费播放| 亚洲avav天堂av在线网爱情| 不卡乱辈伦在线看中文字幕| 久久一夜天堂av一区二区| 日本少妇xxx做受| 三人成全免费观看电视剧高清| 激情伊人五月天久久综合| 丰满人妻熟妇乱又仑精品| 亚洲人成网站18禁止无码| 国产精品自在自线免费观看| 亚洲 制服 丝袜 无码| 中国CHINA体内裑精亚洲日本| 九九热在线精品视频观看| 亚洲人成网7777777国产| 妺妺窝人体色www聚色窝仙踪| 疯狂三人交性欧美| 国产精品午夜福利在线观看 | julia无码中文字幕一区| 日韩av中文字幕有码| 精品无人区一码二码三码| 337p粉嫩大胆色噜噜噜| 蜜臀午夜一区二区在线播放| 久久se精品一区二区三区| 久久亚洲精精品中文字幕| 熟妇人妻不卡中文字幕| 亚洲偷自拍国综合|