JAVAWeb

1、請求servlet的過程html

1、從瀏覽器發出請求到web容器java

2web容器建立HttpServletRequestHttpServletResponse兩個類型的對象web

3、調用servletservice方法,而且將requestresponse兩個對象傳遞給方法數組

4、建立PrintWriter輸出流瀏覽器

5、將輸出流響應給客戶端瀏覽器安全

2、service()doGet()doPost()方法的關係服務器

service根據請求方式若是是get請求調用doGet()方法,若是是post請求調用doPost()方法session

3、項目的上下文路徑app

request.getContextPath();jsp

4、Servlet生命週期

1、裝載Servlet

2、建立Servlet實例

3、調用init()方法:初始化方法,前3步在第一次發送請求時執行

4、調用service()方法:每次向Servlet發送請求時調用一次

5、調用destroy()方法:銷燬方法,關閉服務器時調用

5、loadOnStartUp

1、配置Servlet類在啓動服務器時完成初始化

2、配置每一個Servlet初始化的順序,數字小的先初始化

3web.xml配置

<servlet>

   <servlet-name>demo2</servlet-name>

   <servlet-class>com.jnmd.servlet.DemoServlet2</servlet-class>

   <!-- 配置Servlet啓動 -->

   <load-on-startup>2</load-on-startup>

  </servlet>

  

  <servlet-mapping>

   <servlet-name>demo2</servlet-name>

   <url-pattern>/demoServlet2</url-pattern>  

  </servlet-mapping>

 

4、註解配置

@WebServlet(urlPatterns="/DemoServlet1" , loadOnStartup=5)

6、JSP的生命週期

1Jsp文件轉換爲Servlet

2、編譯Servlet類爲字節碼文件

3、裝載Servlet

4、建立Servlet實例

5、調用_jspInit()方法:初始化,前5步第一次發送請求時執行

6、調用_jspService()方法:每次發送請求調用一次

7、調用_jspDestroy()方法:關閉服務器時執行

 

 

 

1、三種元素

1、腳本元素

(1)註釋

html註釋:<!-- -->:在網頁源碼能夠看到的

JSP註釋:<%-- --%>

Java註釋:<% /**/ //%>

(2)聲明標籤:<%! %>

能夠聲明變量、常量、方法,使用訪問控制修飾符

(3)Scriptlet標籤:<%%>

任意的Java代碼

(4)表達式輸出:<%=%>

輸出任意的表達式(常量表達式、變量表達式)

2、指令元素

<%@ 指令元素 屬性名="屬性值"%>

(1)page指令

import:導包

contentType:設置MIME類型

pageEncoding:字符編碼

(2)include指令

file:包含文件的路徑

(3)taglib指令

 

3、動做元素

(1)動態包含:<jsp:include></jsp:include>

(2)能夠向包含的文件中傳遞參數

<jsp:param name="參數名" value="參數值"></jsp:param>

(3)頁面轉發:<jsp:forward page="轉發的頁面"></jsp:forward>

服務器端跳轉:轉發了頁面可是url地址不會發生改變

2、四個做用域

1page:同一個jsp頁面

2request:同一次請求(同一個url

3session:同一次會話(同一個瀏覽器窗口)

4application:同一次應用(從服務器啓動到關閉)

5、向做用域中存儲數據:setAttribute("名字",存儲的數據)

6、從做用域中獲取數據:getAttribute("名字")

7page範圍過小,application範圍太大,不多使用,絕大多數使用requestsession

 

3、9個隱含對象

1request

(1)getContextPath():獲取上下文路徑

(2)getRequestURI():獲取請求地址

(3)getParameter("參數名"):獲取請求參數(包含、頁面轉發、超連接、表單)

2response

(1)sendRedirect("頁面地址"):地址重定向

3out:輸出流

4session:會話

servlet類中建立session對象:request.getSession()

5application

servlet類中建立application對象

request.getServletContext()

6config

7page

8pageContext

9exception

4、聲明標籤與java代碼塊聲明變量的區別

1、聲明標籤聲明的變量是實例變量

2java代碼塊中聲明的變量是service方法中的局部變量

5、指令包含與動做元素包含區別

1、指令元素包含:靜態包含,先包含內容再執行

2、動做元素包含:動態包含,先各自執行,再包含執行結果,在動做元素中能夠向包含的頁面傳遞參數。

6、服務器端跳轉與客戶端跳轉的區別

1、服務器端跳轉:<jsp:forward></jsp:forward>,地址欄不發生改變,兩個頁面在同一次請求中,可使用request做用域共享數據

2、客戶端跳轉:地址欄發生改變,兩個頁面不在同一次請求可是在同一次會話中,可使用session做用域共享數據。

(1)超連接

(2)地址重定向:response.senRedirect("頁面地址")

 

 

1、<jsp:useBean></jsp:useBean>

1、建立一個類的對象,而且存儲到做用域中

2id:對象名(存儲到做用域中的名稱)

3class:類的全名稱

4scope:做用域,缺省是page

二:<jsp:setProperty></jsp:setProperty>

1、爲對象的屬性賦值

2<jsp:setProperty name="useBeanid名稱" property="屬性名"></jsp:setProperty>:將表單中property="屬性名"名字的表單參數自動賦值給類中的同名的屬性。

3<jsp:setProperty name="useBeanid名稱" property="屬性名" param="表單參數名">:將表單中param="表單參數名"自動賦值給類中property="屬性名"的屬性。

4<jsp:setProperty name="useBeanid名稱" property="屬性名" value="數值">:將value值賦值給類中屬性

5<jsp:setProperty name="useBeanid名稱" property="*">:將表單中全部的表單參數自動賦值給類中同名的屬性。

3、<jsp:getProperty></jsp:getProperty>

1、輸出對象的屬性值

2nameuseBeanid名稱

3property:對象的屬性名

4、EL表達式

1、獲取做用域中的屬性

(1)page做用域:${pageScope.屬性名}

(2)request做用域:${requestScope.屬性名}

(3)session做用域:${sessionScope.屬性名}

(4)application做用域:${applicationScope.屬性名}

(5)${屬性名}:按照page-request-session-application的順序依次從做用域中獲取屬性,直到獲取到爲止。

(6)若是做用域中的屬性是一個對象,獲取對象的屬性值

${做用域中的屬性名.對象的屬性名}

2、獲取請求參數

(1)單個值:${param.參數名}

(2)多個值:${paramValues.參數名}

3EL表達式中的運算符

(1)算數運算符:+  -  *  /  %

(2)比較運算符:>  <   >=    <=   ==  !=  empty  not empty

(3)邏輯運算符:&&   ||   

4、輸出上下文參數:${pageContext.request.contextPath}

 

5、JSTL核心標籤庫

1、在做用域中聲明變量

<c:set var="變量名" value="數值" scope="做用域,默認是page">

2、條件判斷

<c:if test="${條件}" var="test運算結果存儲成一個變量" scope="test運算結果存儲到做用域中">

   若是條件爲true執行標籤體,不然不執行

</c:if>

3、迭代集合、迭代器對象、數組、枚舉、以逗號分隔的字符串

1

<c:forEach items="${做用域中的對象}" var="自定義循環變量名" varStatus="自定義狀態變量名">

   循環體

</c:forEach>

2)狀態

狀態變量名.count:從1開始的每次循環遞增1的數字

狀態變量名.index:從0開始的每次循環遞增1的數字

4、循環次數

<c:forEach begin="起始值" end="終止值" step="循環變量自增值">

循環體

</c:forEach>

5、地址

(1)<c:url value="url地址" var="將地址聲明爲一個變量" scope="將變量存儲到做用域中">

(2)url地址前沒有/:相對路徑

(3)url地址前有/:絕對路徑(相對於上下文的路徑)

 

 

1、過濾器

1、攔截資源的請求和響應。

2Filter接口

(1)init(FilterConfig config):初始化方法,啓動服務器時執行

(2)doFilter(ServletRequest request , ServletResponse response , FilterChain chain):執行過濾功能,向攔截的資源發送請求響應的時候執行

(3)destroy():銷燬方法,關閉服務器時執行

3FilterChain接口

(1)doFilter(ServletRequest request,ServletResponse ,response):放過請求

 

1、監聽器

1、做用:當web容器中的requestsessionServletContext發生變化時會自動響應對應的方法。

2ServletContextListener接口

(1)contextInitalized(SerlvetContextEvent sce):啓動服務器時執行

(2)contextDestroyed(ServletContextEvent sce):關閉服務器時執行

3ServletContextAttributeListener接口

(1)attributeAdded(ServletContextAttributeEvent scae):向application做用域中添加屬性時執行

(2)attributeReplaced(ServletContextAttributeEvent scae):修改application做用域中屬性時執行

(3)attributeRemoved(ServletContextAttributeEvent scae):刪除application做用域中屬性時執行

4HttpSessionListener接口

(1)sessionCreated(HttpSessionEvent hse):瀏覽器第一次發送請求時執行

(2)sessionDestroyed(HttpSessionEvent hse):會話超時或調用invilidate()方法

5HttpSessionAttributeListener接口

(1)attributeAdded(HttpSessionBindingEvent hsbe):向session做用域中添加屬性時執行

(2)attributeReplaced(HttpSessionBindingEvent hsbe):修改session做用域中屬性時執行

(3)attributeRemoved(HttpSessionBindingEvent hsbe):刪除session做用域中屬性時執行

6ServletRequestListener接口

(1)requestInitialized(ServletRequestEvent sre):發送請求時執行

(2)requestDestroyed(ServletRequestEvent sre):請求結束時執行

7ServletRequestAttributeListener接口

(1)attributeAdded(ServletRequestAttributeEvent srae):向request做用域中添加屬性時執行

(2)attributeRemoved(ServletRequestAttributeEvent srae):從request做用域中刪除屬性時執行

(3)attributeReplaced(ServletRequestAttributeEvent srae):修改request做用域中屬性時執行

 

 

一個客戶端瀏覽器發送的請求,也就是同一次會話。

 

2、CookieSession

1Session是將數據保存到服務器端,安全可是速度慢

2Cookie是將數據保存到客戶端瀏覽器,不安全可是速度快

 

3、Session的超時時間:默認是30分鐘

<session-config>

   <session-timeout>超時的時間單位分鐘</session-timeout>

</session-config>

 

4、CookieAPI

1、建立Cookie對象

new Cookie("" , "");

2、獲取Cookie對象的名稱

getName()

3、獲取Cookie對象的值

getValue()

4、設置Cookie的存活時間

setMaxAge(存活時間單位是秒)

5、將Cookie對象保存到客戶端瀏覽器

response.addCookie(Cookie對象);

6、從客戶端瀏覽器獲取Cookie對象

request.getCookies()

相關文章
相關標籤/搜索