JSP與Servlet的職責與區別


JSP 與 Servlet

運行在服務器端的一個應用程序

1. Servlet與JSP的職責(☆)

  • Servlet職責:用來接收並處理用戶的請求,設置字符編碼、收集表單參數、調用Dao層、跳轉JSP頁面
  • JSP的職責:負責數據的展現

2. Servlet跳轉JSP頁面(☆)

Servlet跳轉JSP頁面有兩種方式,分別如下:
  • 轉發:轉發是Web服務器(Tomcat)內部控制權的轉讓,用戶發送請求到Servlet,Servlet處理好請求后把內容轉移到JSP頁面上,給用戶瀏覽后,完成整個請求。代碼如下:request.getRequestDispatcher("頁面路徑").forward(request,response);
  • 重定向:重定向是根據業務邏輯判斷,發送一個狀態碼給瀏覽器,讓瀏覽器重新請求一個新的地址,所以瀏覽器地址會發生改變,重定向可以防止表單的重復提交。代碼如下:response.sendRedirect("頁面路徑");

3. JSP中傳遞對象(☆)

JSP中傳遞對象有四個,並且是JSP內置對象,分別如下:
對象 范圍
pageContext 本頁面有效
request 下一個頁面有效
session 整個網頁會話有效(一個瀏覽器)
application 整個應用項目有效(一個Web服務器)

4. 轉發與重定向的區別(☆)

轉發 重定向
轉發是服務器內部控制權的轉讓,多個頁面之間傳遞,使用一個request 重定向是告知瀏覽器重新發送一個請求,實現多個頁面之間的跳轉,使用兩個request
轉發只用了一個request,所以瀏覽器地址不會改變,顯示最初請求的地址 重定向使用了兩個request,瀏覽器地址顯示最后一次請求的地址
轉發只能在項目內部跳轉 重定向可以跳轉到項目外部
轉發傳遞參數:request、session、application三個對象進行傳遞,可以傳遞對象 重定向傳遞參數只能通過URL傳參(?形式),並且只能傳遞字符串
轉發后地址刷新網頁會重復提交表單 重定向后地址刷新網頁不會重復提交表單
轉發的效率高於重定向

5. Request

Request代表用戶的請求,常用方法:
方法 描述
setCharacterEncoding("UTF-8") 設置字符編碼
setAttbute(key, value) 把對象存入到request中
getAttribute(key) 在request中獲取指定的對象,到下個頁面有效
getParameter("表單的name屬性") 獲取表單參數
getRequestDispatcher("跳轉路徑") 轉發路徑
getParameterValues("表單的name屬性") 表單參數存在多個值,使用此方法,比如:復選框
getRequestURL() 獲取訪問的絕對路徑
getRequestURI() 獲取訪問的相對路徑
getQueryString() 獲取訪問的參數字符串
getServerName() 獲取項目的機器名(IP地址)
getServerPort() 獲取訪問端口
getContentPath() 獲取項目名稱
getParameterMap() 獲取表單所有參數

6. Get與Post區別

  • Get方式:
    1. get提交會在瀏覽器地址顯示參數,不安全
    2. get提交字符編碼與Tomcat有關(request、tomcat、網頁字符編碼)
    3. get提交參數長度有限制
  • Post方式:
    1. post提交不會在瀏覽器地址顯示參數,安全
    2. post提交字符編碼與Tomcat無關(request、網頁字符編碼)
    3. post提交參數沒有限制

Form表單:默認為Get方式
瀏覽器直接訪問:Get方式
JS頁面跳轉:window.location.href="";Get方式

7. JSP與Servlet區別(☆)

  • 相同點:

    • JSP就是Servlet,是一個簡易的Servlet,都可以用來處理用戶請求
  • 不同點:

    • Servlet是一個類,用來處理用戶請求,做業務邏輯的處理
    • JSP是一個頁面,用來呈現數據給用戶
    • Servlet側重於業務邏輯處理
    • JSP側重於頁面展現

8. 九大內置對象對應的類或接口

對象 超類 描述
page java.lang.Object 當前網頁對象
pageContext javax.servlet.jsp.PageContext 網頁的上下文內容
request javax.servlet.http.HttpServletRequest 當前的請求對象
response javax.servlet.http.HttpServletReponse 響應請求的對象
session javax.servlet.http.HttpSession 網頁會話
application javax.servlet.ServletContext 當前應用對象
config javax.servlet.ServletConfig 獲取配置信息對象
out servlet.jsp.JspWriter 網頁輸出對象
exceprion java.lang.Throwable 網頁異常對象

9. Session

9.1 什么是Session?

Session是一次網頁會話,一個瀏覽器與服務器的一次通話,包括瀏覽器與服務器之間的多次跳轉

9.2 Session作用(☆)

Session用來存儲用戶信息,一個用戶對應一個Session,Session與Session之間是獨立的,不會共享數據。
同一個瀏覽器同一個服務器不能登錄多個用戶

9.3 常用方法

方法 描述
request.getSession() 獲取session
setAttribute(key, value) 把對象存入session中
getAttribute(key) 從session中獲取對象
removeAttribute(key) 根據key值刪除session中的對象
setMaxInactiveInterval(int second) 設置session的時長,單位為秒
getMaxInactiveInterval() 獲取session的時長,單位為秒
getId() 獲取session的唯一標識
invalidate() 把session置成無效,清除session中的所有對象

9.4 Session的生命周期(☆)

Session存儲的數據放在服務器端的內存中

  • 誕生
    • 第一次訪問服務器時,產生一個session
  • 銷毀
    • 關閉瀏覽器
    • 超時
    • 手動把session置成對象,調用invalidate()方法

9.5 設置Session的時長

  • 在Tomcat下修改web.xml文件中的Session時長,影響整個Tomcat下所有項目的Session時長
  • 修改項目中web.xml文件中的Session時長,只影響本項目中Session的時長
  • 在Sevlet中設置Session時長(session.setMaxInactiveInterval(10);),經過此Servlet就會影響Session的時長

10. Application

10.1 什么是Application?

Application對象類似於系統的全局變量,用戶與用戶之間可以共享數據

10.2 Application的生命周期

  • 誕生
    • Tomcat啟動時會產生一個Application對象,並且只有一個,一個項目一個Application對象
  • 銷毀
    • Tomcat關閉時回收Application對象

10.3 Application的常用方法

方法 描述
session.getServletContext() 獲取Application
request.getServletContext()
this.getServletContext()
setAttribute(key, value) 把對象存入Application中
getAttribute(key) 從Application中獲取對象
getInitParameter(參數的key值) 獲取web.xml中全局參數

11. Config

11.1 什么是Config對象?

Config對象是獲取Servlet或者JSP的配置信息

11.2 Config的常用方法

方法 描述
getInitParameter(參數的key值) 獲取Servlet中初始化參數

12. JSP內嵌入JSP

12.1 在JSP頁面中可以嵌入另一個JSP,有兩種方式:

  • 靜態嵌入

    • 把JSP頁面內容嵌入到另一個JSP中,產生一個Servlet,上下文內容能關聯,稱為靜態嵌入
      • <%@ include file="頁面路徑" %>
  • 動態嵌入

    • 嵌入的JSP與主JSP各自編譯,產生兩個Servlet,上下文內容不能關聯,稱為動態嵌入
      • <jsp:include page="頁面路徑"></jsp:include>

12.2 靜態嵌入與動態嵌入的區別(☆)

靜態嵌入 動態嵌入
靜態嵌入使用的是JSP的標簽指令<%@ include file="頁面路徑"%> 動態嵌入使用的是JSP動作<jsp:include page="頁面路徑"></jsp:include>
靜態嵌入使用一個Servlet 動態嵌入使用兩個Servlet
靜態嵌入上下文內容能關聯 動態嵌入上下文內容不能關聯

13.1 什么是Cookie?

Cookie是Web服務器在客戶端保存的一系列的文本文件,存儲客戶端有一定的時間周期,周期過了會失效

13.2 創建Cookie

13.2.1 創建Cookie對象

Cookie cookie = new Cookie(name, value);

13.2.2 設置生命周期,單位:秒

cookie.setMaxAge(int second);

13.2.3 寫入Cookie

response.addCookie(cookie)

13.2.4 讀取
	String egg = "";
	Cookie[] cookies = request.getCookies();
	if (cookies != null) {
		for (Cookie cookie : cookies) {
			if (cookie.getName().equals("egg")) {
				egg = URLDecoder.decode(cookie.getValue(),"UTF-8");
			}
		}
	}

13.3 Cookie的優缺點

優點 缺點
Cookie信息存儲在客戶端電腦的硬盤中,可以減輕服務器壓力 Cookie信息透明存儲在客戶端,信息容易被泄漏,安全性較差
Cookie可以用來提高用戶體驗度 信息存儲在客戶端,由瀏覽器管理,容易被用戶刪除
注:可有可無的數據存儲在Cookie中,用來提高用戶的體驗度,比如:登錄時記住用戶名

13.4 Cookie文件的特點

  • 文件的后綴名一般都是txt
  • Cookie存儲的信息都是文本信息
  • Cookie文件大小不會超過20KB
  • Cookie文件由瀏覽器管理
  • Cookie文件有生命周期,超過時間會失效

13.5 Cookie與Session的區別(☆)

Cookie Session
Cookie信息存儲在客戶端的硬盤中 Session信息存儲在服務器的內存中
Cookie只能保存文本(String) Session可以保存對象
Cookie超出有效時間內才會失效 Session隨着會話關閉而消失
Cookie一般保存不重要信息,用來提高用戶體驗度 Session一般保存重要信息,不可以丟失的信息
Cookie不是JSP內存對象,需要手動new Session是JSP九大內置對象


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM