




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、TomcatIE0.學前交流0.1. 關于新技術學法(三步走) /WHAT?它是一個什么東西, 它有什么作用( WHY?它是為了解決什么問題而出現的?用它來做什么)?不用這個技術能不能實現它能實現的功能, 有什么問題?HOW?它涉及到哪些 API, 一些重要的接口或類都是什么角色, 分別用來做什么的SesFilterMy TagListenerCSSJSTLELI18NServletJSPHTMLHTTPFileuploadJSONAjaxXMLJSjQuery0.2. 關于一個新接口(類)的學習方法它是什么的抽象?它的對象都有哪些功能(方法)?0.3. 以 JDBC 來說明: List1.H
2、TML1.1.HTML 的常用表格 table/tr/td表單 form/ select/option/button/input(text/password/radio/checkbox/submit/reset/hidden) script:直接寫代碼 / src 屬性style(直接寫代碼)/link(關聯 css 文件)div..aimgiframe 相當地一個內部窗口(window)事件(事件屬性)1.2.HTML 的類型結構Node(節點)(html 文件/文檔)Element(/元素) Attribute(屬性)Text(文本體)2.CSS2.1. 基本
3、語法組成selector property1: value1;property2: value2;2.2. CSS 選擇器1). 基本選擇器:(tagname),通配符(*),屬性選擇器( pname=value) ID(#id)class(. class)2). 組合選擇器:分組選擇器: selector1 ,selector 2后代選擇器: selector1 selector 2子選擇器: selector1selector 2相鄰兄弟選擇器: selector1+selector 22.3.CSS機制-盒子模型(Box M)外邊距: margin邊框: border內邊距: paddi
4、ng3.JavaScript1.1.javascript 是什么?解釋型面象,弱類型動態變量可以反復賦不同類型的值可以給對象動態添加屬性/方法基于原型(對象)(不基于類)一般函數-構造函數functionvar p = new var t =()()(); /undefined數據的類型a. 基本類型:數值(number)字符串(string)-String s = “abc”; s.length布爾值( undefinedb. 對象類型:對象(object),數組(array),函數(function)var t; alert(t); alert(.tt);4. HTML DOM4.1.理解
5、 DOMNodeElementAttriubute(Attr)Text整個文檔它是樹狀結構4.2.事件(事件句柄)window.onload = tt;/瀏覽器加載完整個文檔后就會調用function tt()element.onclick = function()/點擊 element 對應的調用;4.3.DOM 中的一些 CRUD 方法查詢:.ge.ge.geementById(“id”);ementsByTagName(“tagname”);ementsByName(“nameAttrValue”);Node: nodeName, NodeValue, NodeTypeelement.c
6、hildNodeselement.Childelement.lastChildelement.ge增刪改tributeNode(attrName);.createElement(tagname);-Element.createTextNode(content);-Text element.append(newElement);element.insertBefore(newElement,Child);element.innerHTML = “”;element.replaceChild(newElement, oldChild); element.removeChild(deleteChil
7、d);element.setribute(name, value);element.removeAttribute(name);5.jQueryjQueryi 源碼的整體結構:(function(window) var jQuery = function(selector, context) return new jQuery.fn.init(selector, context, rootjQuery);window.jQuery = window.$ = jQuery;jQuery函數1 jQuery()$()2 調用$()得到的是一個 jQuery 對象$()的使用: 參數類型1 stri
8、ng 類型selector: 根據選擇器去找對應jQuery 對象(數組), 并返回一個包含所有匹配的對象的格式: 創建對象, 并返回包含這個對象的 jQuery 對象2 function 類型:$(function();window.onload = function:在加載完文檔后自動調用這個回調函數3 dom 對象類型 $(this)將 dom 對象包裝成一個jQuery 對象jQuery 對象的使用); : 遍歷jQuery 對象中包含所有dom 對象, 每取到一個 dom 對象都會調each(function()用 一個指定回調函數size()/length: 得到jQuery 對象
9、中包含所有 dom 對象的個數get(index)/ index: 根據下標得到jQuery 對象中包含對應的 dom 對象選擇器基本選擇器tagname/*#id / .class / attr=value selector1,selector2層次選擇器12selector1selector2selector1 selector2selector1 +selector2 selector1 selector2過濾選擇器都以:開頭3jQuery 對象 DOM 數據進行 CRUD 操作)(window);: append()替換: replace()刪除: empty()remove()6.w
10、eb 快速入門配置 tomcat解壓 apache-tomcat-6.0.37-windows-x86.zip 到一個非中文目錄下將tomcat 下的 bin 目錄配置到 path (D:filesapache-tomcat-6.0.37bin)作用: 可以在任何目錄執行bin 下的可執行文件找開命令行窗口, 執行: startup3說明: 需要配置一個 catalina_home 環境變量(它應該指向 tomcat 的安裝目錄)配置catalina=tomcat 的安裝目錄(D:filesapache-tomcat-6.0.37)重新啟動一個命令行窗口, 執行startup45說明: 需要配
11、置一個 java_home 環境變量(它應該指向jdk 的安裝目錄)添加 java_home 環境變量:67 重新啟動一個命令行窗口, 執行startup8:9 : 如果啟動出錯不能:tomcat 安裝目錄下/conf/server.xml, 修改它:將 8080 改為 898910 重新啟動,:如果 tomcat 已經啟動, 再次出現異常說明: 說明端口已經被綁定解決: 點擊 shutdown 關閉運行的 tomcattomcat 的目錄結構bin: 包含很多可以執行的文件catalina.bat: 啟動 tomcat 的文件startup.bat: 啟動 tomcat 的文件(調用 cat
12、alina.bat ) shutdown.bat: 關閉 tomcatconfserver.xml: 整個 tomcat 配置web.xml: 所有web 項目的 web.xml 繼承了它webapps: 包含了很多 tomcat 管理的應用, 自動部署work:包含很多項目jsp-java/class時生成的文件配置 web 應用1 方法 1:將應用文件夾放入Tomcat 安裝目錄下的 webapps 文件夾下2.方法 2在 server.xml 文件中添加一個配置path: 指定的是虛擬路徑(給瀏覽器docBase: 項目的絕對路徑(給 tomcat用的)用)3 方法 3在confCata
13、linalocalhost 目錄下創建XML 配置文件來配置Web 應用程序,Tomcat將以 XML 文件的文件名將作為 Web 應用程序的上下文路徑手動創建一個可運行的 web 應用使用 Eclipse 創建 Web 應用1: 將 ecliipse 與 tomcat 關聯2: 創建一個 tomcat 的實例, 修改其配置3: 創建一個動態的 web 應用4: 部署運行7. XMLxml 文件做什么?基本功能: 保存有關系的數據應用: 項目的配置的文件(web.xml), 數據傳輸的格式(webservice)xml 語法1: 文檔2: 元素/3: 屬性4: 文本Node: 必須在第一行體E
14、lementAttributeTextXML 文件將整個 xml 文檔加載到內存中, 并生成一個包含所有數據的對象樹DOM:-dom4j: 對 dom 進行了 api 級別的包含, api 使用更方便特點: 比較面象,可以 CURD 操作,但文件較大時不適合Sax: 基于事件方法回調機制, 將文件分隔成很多個小的部分, 每次一小部分數據就調用一個處理對象回調方法, 并把據的數據傳入.方法執行完成以后自動下一個數特點: 文件較大也不會有問題, 但找到數據后也不中途停止pull: 原理同 sax, 一次只能一個小數據, 只有調用 next()才會下一個小數據特點:找到數據后,就可以停止工作,效率高
15、8.Servlet理解 Servlet服務端用來處理瀏覽器端的請求的一種組件(需要,一般都是自動創建,有生命周期,)第PULLDOM4JSax.xml.saxDOM.w3c.domJDKJAXP(規范)javax.xml.parsers編寫 Servlet1: 寫一個類 extends HttpServlet2: 重寫 doGet/do 3: 在 web.xml 中t 方法(處理請求)這個類Servlet 處理請求的步驟1: 從請求獲取請求中獲取請求參數數據2: 對數據進行處理(操作數據庫)3: 給瀏覽器返回一個響應數據Servlet 的生命周期生命周期方法:構造方法Init()service
16、()/ doGet()/do destroy()t()第一次請求調用: 構造方法 Init()service()/ doGet()/dot()后面的請求調用: service()/ doGet()/dot()當前 Servlet 對象之前: destroy()Servlet 的配置在 web.xml 中: 全類名(反射): 當前 Servlet 對應的虛擬路徑(給瀏覽器用)它的值有幾種類型:常規: /yy通配符:*.action*.do/xx/*/*ServletConfig它的對象代表什么?代表 Servlet 配置如何創建/得到它的對象?servlet.getServeltConfig()
17、如何使用它的對象?config.getServletName()config.getInitParameter(name); config.getServletContext();ServletContext:它的對象代表什么?代表當前整個應用(web.xml), 只有一個如何創建/得到它的對象?創建: tomcat 啟動時會創建所有它管理應用的 ServletContext 對象得到: servlet.getServletContext();如何使用它的對象?得到應用的初始化參數: context.getInitParameter(name); (web.xml 文件)根據資源的虛擬路徑得到
18、資源的本地路徑: context.getRealPath()它是一個 Application 域對象:context.setribute(name, value)Object context.getribute(name);context.removeAttribute(name);實現: 實現多個 Servlet 之間的數據共享和HTTP 協議get 請求:GET /web09_servlet/HttpTestServlet?username=Tom&pwd=123 HTTP/1.1Accept: image/jpeg, application/x-ms-application, */*(瀏
19、覽器接收的數據類型) Referer: servlet/httpTest.jsp(發送請求所在資源的 path) Accept-Language:(接收的語言)User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media CentC 6.0; InfoPath.3; Tablet PC2.0)(瀏覽端的一些信息)Accept-Encoding: gzip, de
20、flate(能接收的壓縮) Host: localhost(請求的主機)Connection: Keep-Alive (保持連接): JSESID=5C179D1FDF90B4B3DFFCD46A93A8A02E (數據)T 請求:HTTP 請求:HTTP 響應HTTP/1.1 200 OKServer: Apache-Coyote/1.1 (服務器的信息) Content-Length: 12 (響應體數據的大小)content-type: text/html; charset=GB2312 (響應體內容的類型)Set-:SS=Q0=5Lb_nQ; path=/search 將數據回送給 i
21、e Date: Fri, 25 Apr 2014 01:48:27 GMT (響應的時間)sucs2222!請求行(請求方式 請求資源路徑 協議版本)多個請求頭請求體(請求參數)T /web09_servlet/HttpTestServlet HTTP/1.1Accept: image/jpeg, application/x-ms-application, image/gif, */* Referer:Accept-Language:User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2
22、; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media CentC 6.0; InfoPath.3; Tablet PC2.0)Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflateHost: localhost Content-Length: 21Connection: Keep-Alive Cache-Control: no-cache: JSESID=5C179D1FDF90B4B3DFFCD46A93A8A
23、02Eusername=Jack&pwd=123HTTP/1.1 200 OKServer: Apache-Coyote/1.1 Content-Length: 8Date: Fri, 25 Apr 2014 01:47:03 GMTsucs!請求行(請求方式 請求資源路徑?參數 協議版本)多個請求頭Get 請求與T 請求的區別轉發請求與重定向我我小四小四我: 是瀏覽器/小四: 服務器端的二個資源轉發重定向瀏覽器發了幾次請求12二個資源得到的請求是否相同同一個請求不同的請求地址欄顯示的是哪個路徑請求的路徑第 2 次請求的路徑(重定向的)轉發重定向GETT地址欄有請求參數(請求行)沒有請求參數(
24、請求體)調用 Servlet 的哪個方法doGet()dot()是否安全不安全安全數據大小是否限制有限制沒有限制200 代表成功302 代表讓瀏覽器重新請求另一個資源404 找不到請求的資源500 服務器出問題了響應狀態行(協議版本 響應碼 響應提示信息)多個響應頭響應體(給瀏覽器顯示用的)今日問題HTTP 協議的理解?作用: 規范了瀏覽器與服務器進行交互的過程和交互數據格式HTTP 請求請求行 (請求方式 資源 path?name=tom&pwd=123 HTTP/1.1)請求頭(key1:value1 key2:value2.)請求體(只有HTTP 響應t 請求有, 請求參數數據name=
25、tom&pwd=123)響應狀態行(HTTP/1.1 200 ok)響應頭響應體(瀏覽器顯示的數據)GET 請求與T 請求的區別?request 的重要功能?request.getParameter(name);getRequestDispatchgetMethod()ath).forword(req, resp);setCharacterEncoding(“utf-8”)setribute(name, value);getribute(name);removeAttribute(name);getServletContext(); getRequestURI()getRequestURL()
26、;response 的重要功能?getWriter().write(String);sendRedirect(path);setCharacterEncoding(“utf-8”);setContentType(“text/html;charset=utf-8); addHead(name, value);請求轉發與重定向區別?請求次數瀏覽器顯示是否是請求路徑是否可以共享請求數據(屬性/參數)Servlet 的中文亂碼問題?服務器得到瀏覽器提交的數據亂碼GET: 修改 server.xml 中: URIEncoding=”utf-8” T: request.setCharacterEncodi
27、ng(“utf-8”);瀏覽器得到服務器響應的數據亂碼response.setContentType(“text/html;charset=utf-8);設置服務器寫數據的編碼所用碼表告訴瀏覽器用哪個碼表path 路徑問題?絕對路徑是否需要寫項目的虛擬路徑?需要: 路徑是瀏覽提交給服務器處理的頁面路徑/重定向不需要: 服務器項目轉發/根據資源虛擬路徑取本地路徑Servlet 項目實戰BaseCRUDDML-update() DQL-Query()如何將結果集封裝指定類型的對象dbutils.jarQueryRunner: 對表數據進行 DML 和 DQL 操作的類DML-update(conn
28、ection, sql, params)DQL T query(conn, sql, ResultSendler rsh,Object. params)/conn, sql, params利用這個三參數乾查詢操作-ResultSetResultSendler處理返回的ResultSet的對象BeanHandler(Class c): 將ResultSet中的第一條封裝成一個對象id:1, name:tom, pwd:123,:nullc.newInstance();-空對象將各個字段的數據設置對應的屬性中要求: 字段名與實體類屬性名要一致(大小寫)BeanLisndler : 將ResultS
29、et中的所有封裝成對象集合publicupdate(String sql, Object params)public T query(String sql, Object params)public List queryForList(String sql, Object params)一個 web 項目的架構(MVC)bookusersServiceUserServiceUserUserServiceImplUserImplUserRegistServlet LoginServletregist.thmlregist_sucs.html regist_error.html/login 一套B
30、aseJDBCUtilsBean(實體類)ServletHTML/JSP9.JSP為什么要用 JSPHTML 只能顯示靜態數據, 不能動態數據 Servlet 可以用來顯示動態數據, 但麻煩解決辦法: HTML+Servlet-JSPJSP:寫起來和看起來像 HTML跑起來就是 ServletJSP 運行的原理web 應用下所有 jsp 都會自動對應虛擬路徑web11_JSP 應用下有 testJsp.jsp 文件:第一次請求 JSP/testJsp.jsp后面的請求jsp和 jsp 表達式page 指令% pagecontentType=text/html; charset=UTF-8 /指
31、定瀏覽器返回數據和瀏覽的用的碼表pageEncoding=gbk /指定jsp轉換為java文件所用的碼表直接調用 testJsp_jsp 對象的_jspService(req, resp)處理請求構造方法init()_jspService(req, resp)返回瀏覽器進入 Servlet 的生命周期testJsp_jsp.classtestJsp_jsp.javatestJsp.jsp進入 Servlet 的生命周期JSP 九大隱含對象jsp 隱含對象: 在jsp 中可以直接使用的對象為什么有這些對象:public void _jspService(HttpServletRequest r
32、equest, HttpServletResponse response) throws java.io.IOException, ServletException PageContext pageContext = null; HttpSesses= null;Throwable exception = JspRuntimeLibrary.getThrowable(request); ServletContext application = null;ServletConfig config = null; JspWriter out = null;Object page = this; t
33、ry response.setContentType(text/html; charset=UTF-8);pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);_jspx_page_context = pageContext;application = pageContext.getServletContext(); config = pageContext.getServletConfig();ses= pageContext.getSes(); out = pag
34、eContext.getOut();_jspx_out = out;/頁面的代碼包含的動作: 在 jsp 轉換為 java 文件時這個動作只執行一次-靜態包含import=java.util.ArrayList,java.util.List /導包 isErrorPage=false /是否是一個錯誤頁面 errorPage=/myerror.jsp /指定出錯轉向的錯誤頁面 ses=true /是否自動創建ses對象%四個域對象:區別動態包含與靜態包含/轉發請求, 還可攜帶參數include:jsp:include:名稱靜態包含動態包含生成了幾個java 文件12包含動作發生的時間jspja
35、va 文件每次請求時才發生動作發生的次數1第次請求都會發生response.sendRedirect();/重定向請求出錯的 a 頁面:頁面運行拋出異常, 轉向到 myerror.jsp錯誤信息頁面 myerror.jsp exception.getMessage()通過在 web.xml 文件中定義: 如果請求的資源不存在自動轉發到指定的頁面404/myerror.jspout.write(使用out輸出); /不會立即輸出,先緩存起來, 到最后才一起輸出response.getWriter().write(使用 response 輸出); /立即輸出pageContext: 只有當前頁面可
36、共享 request : 同一個請求共享(轉發請求) ses: 同一個會話共享(重定向) application: 整個應用共享今日問題:jsp 的運行原理和請求過程第一次請求: jsp-java-class-創建對象運行(init()_jspService()處理請求)后面的的請求: 調用對象_jspService()處理請求jsp 的表達式和的使用: 向瀏覽器輸出數據JSP 的九大隱含對象pageContextPageContext當前頁面request-HttpServletRequest同一個請求(轉發)sesHttpSes同一個會話(同一個瀏覽器沒有關閉窗口)(重定向)applica
37、tion-ServletContext整個應用setribute(name, value) /轉發之前調用 ge tribute(name) /在頁面取數據顯示提示 removeAttribute(name)response-HttpServletResponse重定向exception-Throwable在錯誤頁面顯示異常信息out-JspWriterconfig-ServletConfig Object(this)JSP 的 page 指令index_jsp.javaindex.jsp (保存編碼)index_jsp.class (輸出編碼)瀏覽器(編碼)jsp 的靜態包含與動態包含jsp
38、 的 forword 與 param使用轉發到 other.jsp, 并添加了一個新請求參數10.ELEL 的作用向瀏覽器端輸出屬性或參數數據EL 隱含對象對象名稱類型說明pageContextPageContext就是 jsp 的 pageContext$pageContext.reqontextPathrequestScopeMap包含了 request 中的所有屬性sesScopeMap包含了 sess中的所有屬性applicationScopeMap包含了 application 中的所有屬性paramMap包含了請求參數(參數值只取第一個)paramValuesMap包含了請求參數(
39、參數值包含所有的值)靜態包含動態包含動作發生的時間jspJavaclass 運行的時候生成了幾個 Java 文件12動作會發生多少次1多次(每次請求發生)struts2使用 EL 取數據1: 通過點來取一般的對象: obj.pName Map 對象: map.keymap.class/通過反射調用對應的 get 方法/map.get(key)2: 通過來取map 的 key 是可能有空格的一般的對象: obj“pName” Map 對象: map“key”如果是從四個域對象中取數據, 可以省略它們,如果沒有找到, 顯示空串.自動從小到大找對應的屬性.struts2 也有用到 ognl .EL
40、的運算運算都必須寫在中算術,比較,邏輯empty 運算 /jQeury empty()/remove() null“”/空集合三目運算符11.JSTL為什么要用 JSTL?頁面經常要動態的顯示一個列表數據El 不能做循環用 jsp和 JSp 表達式來實現, 麻煩(寫,讀)JSTL 能做什么?輸入輸出,流程控制, 遍歷,重定向(域對象/請求參數)JSTL 的庫18”數據$ item .class $item.key $, $ sus.count$itemEL 函數名作用屬性if一重條件判斷test:值choose用于多重條件判斷(包含下面的兩個)沒有when相當 if/elseiftest:值o
41、therwise相當于 else, 一個 when 都沒有執行沒有forEach遍歷 Array/List/Set遍歷 Map遍歷連續的數值(分頁)items: 用 el 取出域對象中的集合屬性var: string 類型 key, 當前遍歷的元素value:map 時是 entrybegin: 從集合的哪個下標開始取數據end: 最后取數據的下標和 Ses12.與 Ses的經典現實案例某咖啡廳推出了一個活動:累計喝五杯咖啡可以免費贈送一杯。他們該怎么實現呢?-方法一、咖啡廳服務費了幾杯。記住每個客人,在他們來到咖啡廳時候,知道他們已經消方法二、給客人一張卡片上面就知道他已經消費了幾了(id/
42、data)。他的消費次數,客人每次來都帶上卡片,咖啡廳方法三、咖啡廳為每個客人登記消費次數要出示此卡,咖啡廳就能得到用戶消費次數。方法二:方法三: ses(id/data),給客人一張會員卡(id),只id=count=2id=next3next210step: 隔幾個(1)varSus: 包含 count 屬性的對象count 標識當前數據是第幾條是什么?保存請求狀態的一種技術對應一個類瀏覽器端緩存, 它的對象代表一個數據的一個小紙片(數據(name=value)文件)?服務器端如何操作獲取瀏覽器傳過來的所有 cs = request.get/遍歷這個 cs, 根據s();的 name 找到
43、想要的創建對象c = new(name, value);c.setMaxAge(age)age0告訴瀏覽器緩存到文件中(持久化返回給瀏覽器)將的數據response.add的數據 name value(host)path(c);/set-=?瀏覽器如何操作發: 瀏覽器每次提交請求時,都會找到匹配的數據交給服務器匹配的:比較的數據(/path)與請求 path如何交給服務器?: cName=cValue: JESID=xx收:瀏覽器接收到服務器返回的數據(讀 set-響應頭數據)根據的 age 值做不同的操作age0保存到文件中(持久化) , 如果有對應存在會替換以前的過了 age 指定的有效期
44、就會自動刪除Ses是什么?是一個瀏覽器會話1 ses2 一門技術(購物車,登陸)3 HttpSes-seshashMapKey, Value)對象(debug)index key.hashCode()/數組長度key1value1key1value2key2value2Objectkey3key2key1Entrykey1value1EntryEntrykey2value2key1=value2EntryEntry如何得到或創建一個 Ses對象?request.getSes()jsp 頁面中默認是自動創建 sesSes對象的功能?debug 查看如何實現關閉瀏覽器后還使用以前的 Ses?c =
45、 newc.setMaxAge(1223);(“JSESID”, ses.getId();c.setPath(projectPath);response.add(c);如何在瀏覽器禁用 Ses后還能共享 Ses數據?URL 重寫response.encoderURL(url); url+”;jsesid=sesid”;使用 Ses如何實現防止表單重復提交?regist.jsp創建一個隨機唯一值(id)ses.setribute(“token”, id);RegistServletString pToken = request.getparameter(“pToken”);String sTok
46、en = ses.getribute(“token”);if(pToken= sToken) /第一次ses else .removeAttribute(“token”);/重復提交/轉向到錯誤提示頁面13.JavaBeanJavaBean:一些類: 一些私有的成員變量, 成員變量對應 set/get 方法JavaBean 的屬性set/get 方法去掉前面 get/get, 把一個字母變成小寫后的字符串POJO: 一般的 Java 類對象重量級輕量級1.1.web 應用的三層架構不同的層次, 在應用中承擔的功能職責是完全不同的: 負責處理與界面交互相關功能(Servlet(Filter)/J
47、SP/JavaBean): 負責復雜的業務邏輯計算和判斷(Service): 負責將數據持久化()1.2.表示層的 MVC 模型: 數據模型(JavaBean)MView: 對互(JSP)Controllor: 程序的執行和控制(Servlet/Filter)表示層業務層持久層Java 應用程序的金字塔結構14.MY Tag:如何寫一個自定義1 創建一個處理器類, 繼承于 SimplTagSupport重寫 void doTag() /操作2 創建配置文件: /WEB-INF/ tld/.tldatguiguhttp/mytagtagName處理器類全類名scriptless /體中可以寫 E
48、LattrNametrue/false/是否必須的true/false/屬性值是否可以用 EL 3 在 jsp 中使用自定義的導入庫 使用處理器類相關 API處理器類就會調用SimplTagSupport:doTag(): 每次getJspContext(): 得到 JspContext 對象getJspBody(): 得到 JspFragement 的對象getParent(): 得到父JSPContext: 代表jsp 頁面的處理器類的對象, 如果沒有父它就是 nullgetOut().write(data); /向瀏覽器輸出一個數據JSPFragement: 代表invoke(null)
49、:invoke(wirter):體的對象體, 在瀏覽器中輸出體的內容體, 將體的內容保存到 writer,后面可以得到處理后再通過 JSPContext 對象輸出練習:15.XML 約束要求:明白 XML 約束的作用看得懂如何引入 xml 約束基本看得懂 xml 約束的定義16.Filter(AOP)Filter 作用: 在請求到達請求的資源之前或資源處理請求之后,Servlet 作用: 處理請求寫 Filter 的目的: 為了在 Servlet 中減少代碼的編寫Filter 的優先最高的, 它總比請求的目標資源優先執行erceptorerceptor-stack對請求進行過濾/過濾器的處理流
50、程編寫 Fliter1 編寫一個 Filter 接口的實現類,在 doFilter()對請求進行過濾2 配置這個 Filter(跟 Servlet 的配置基本相同)FilterChain代表匹配當前請求的所有 filter 對象組成的一個鏈filterChain.doFilter(): 調用下一個 Fitler 對象的 doFilter(), 如果沒有,源處理直接交給請求的資Filter的請求類型request: 瀏覽器提交 的請求(默認) forword: 服務器內部的請求轉發 配置:REQUESTFORWARDThreadLocaleThreadLocal:同一線程內在程序的不同階段(不同
51、層)共享數據Mapthread3=conection3thread2=conection2thread1=conection1()makeOrder異常處理17.ListenerListener 的作用域對象的創建和12(request/ses/application)域對象的屬性操作(添加/刪除/修改) (request/ses/application)常用的 Listener 接口ServletContextListenerapplication 對象的創建和死亡contextInitialized(Event event) contextDestroyed(Event event)Htt
52、pSesListenerses對象的創建和sesCreated()sesDestroyed()ServletRequestListenerRequest 對象的創建和requestInitialized() requestDestroyed()ServletContextribuistenerapplication 的屬性操作attributeAdded() attributeReplaced() attributeRmoved()HttpSesAttribuistenerses的屬性操作attributeAdded()ServiceServletFlterJSP編寫自定義 Listener1
53、 創建一個類實現上面的一或者多個接口, 2 在 web.xml 中寫配置并在相應的方法中做一些事應用統計登陸用戶的列表18.I18NAPILocale: 代表一個地區/國家的對象語言代碼國家代碼DateFormat: 格式化日期樣式localMessage: 格式化帶點位符的字符串帶點位符的字符串 : 0 like 1, 1 like 2參數: 三個ResourceBundle: 對應某個資源文件baseName /Locale資源文件: baseName_語言代碼_國家代碼.propertiesJSTL/保存一個local 對象/在此之前先在域對象中保存了它/根據上面設置locale 和ba
54、sename 加載對應的資源文件attributeReplaced() attributeRmoved()ServletRequestribuistenerrequest 的屬性操作attributeAdded() attributeReplaced() attributeRmoved()/value: 從EL 中取出date 對象/dateStyle: 指定日期的樣式(LONG/SHORT/MEDIUM)/var: 將生成的日期字符串以什么為name 保存到域對象中fmt:formatDate value=$DATE dateStyle=LONG/從資源文件中以指定的key 取對應的Value 顯示var=cDate/如果Value 中有點位符, 用param來指定/ value: 使用el 從域對象中取出一個數據19.Fileupload and downloadcommons-fileupload.jar 組件(框架)的 APIDiskFileItemFactory用來創建 DiskFileItem 對象的工廠DiskFileItem它的對象對應一個表單項(一般/文件)判斷表單項是否為一般表單項: isFormField()表單項的name 屬性值 : getFieldN
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 玉米逆境生理與抗性提升考核試卷
- 電阻器表面貼裝技術考核試卷
- 2025年街道清潔服務承包合同新版樣式
- 2025標準車輛租賃合同范本
- 2025版員工試用期合同協議書范本
- 2025商業類贈與合同模板
- 物業管理基礎知識培訓資料
- 隧道工程項目實施性總體施工組織設計
- 蘇教版國標本二年級下冊數學教案
- 二零二五版汽車無償借給合同
- 義務兵家庭優待金審核登記表
- GA 255-2022警服長袖制式襯衣
- GB/T 5202-2008輻射防護儀器α、β和α/β(β能量大于60keV)污染測量儀與監測儀
- GB/T 39560.4-2021電子電氣產品中某些物質的測定第4部分:CV-AAS、CV-AFS、ICP-OES和ICP-MS測定聚合物、金屬和電子件中的汞
- GB/T 3452.4-2020液壓氣動用O形橡膠密封圈第4部分:抗擠壓環(擋環)
- 計劃生育協會基礎知識課件
- 【教材解讀】語篇研讀-Sailing the oceans
- 抗腫瘤藥物過敏反應和過敏性休克
- 排水管道非開挖預防性修復可行性研究報告
- 交通工程基礎習習題及參考答案
- 線路送出工程質量創優項目策劃書
評論
0/150
提交評論