從asp.net到jsp:3分鍾看透Jsp&Servlet


零:JSP是誰?

話說故事的開頭是這樣的:JSP全名為Java Server Pages,其根本是一個簡化的Servlet設計;后來的詳細事情有請各位自便。
美女→找→谷哥 or 帥哥→找→度娘 

插播:如果還想精簡繼續提速;只需在目錄導航中找點擊實心五角星★標記的3個部分(內置對象和作用域、JavaBean、EL表達式)

 

一、Jsp涼菜

1、page 指令

Language : 用來定義要使用的腳本語言;在這里java是惟一默認合法的值,記住就行。
contentType:定義JSP字符的編碼和頁面響應的MIME 類型;
pageEncoding:Jsp頁面的字符編碼;
import:定義此JSP網頁要使用哪些Java API或類;

示例:

<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8" pageEncoding="UTF-8"%>

2、scriptlet 標簽

通過scriptlet標簽我們可以在Jsp里嵌入Java代碼,主要以下三種:
① <%! %>  可以在里面定義全局變量、方法、類;
② <% %> 可以在里面定義局部變量、編寫語句;
③ <%= %> 可以在里面輸出一個變量或一個具體內容;

3、Jsp 注釋

主要以下4種方式:
① <!--  Html 注釋客戶端可見 --> 
② <%-- Jsp 注釋客戶端不可見 --%> 
③ // java 單行注釋
④ /* java 多行注釋  */ 

4、Jsp 包含指令

① <%@ include file=”要包含的文件”%> 靜態包含先包含,后編譯處理;
② <jsp:include page=”要包含的文件”> 動態包含先編譯處理,后包含;

實際開發中一般都采用第二種動態包含的方式。

5、Jsp 跳轉指令

<jsp:forward>
<jsp:param value=”” name=””>
</jsp:forward>

服務器內部跳轉,可帶參數。

 

二、★JSP內置對象和作用域

2.1 九大內置對象

在Jsp開發中,Jsp提供了9個內置對象,這些內置對象將由容器為用戶進行實例化,用戶直接使用即可。分別是:pageContext,request,response,session,application,config,out,page,exception;常用的是前面5個,需要熟練掌握;

Response內置對象和request 內置對象是相對應的,response 內置對象用於響應客戶請求,向客戶端輸出信息;
javax.servlet.HttpServletResponse 接口
① 自動刷新應用;
② 頁面重定向應用:客戶端跳轉;
③ 操作cookie應用:post/get方法比較:post放數據包里,get放url后面;get數據量小,而且不安全;
④ cookie和session 的比較:cookie信息存在客戶端,session信息存在服務器;

pageContext內置對象是一個比較特殊的對象。它相當於頁面中所有對象功能的集合,即使用它可以訪問到本頁面中所有對象。pageContext 內置對象由Jsp 容器創建並初始化,pageContext 對象提供了對JSP 頁面所有對象及控件的訪問。

Config內置對象是JSP 頁面通過JSP 容器進行初始化時被傳遞的對象。javax.servlet.ServletConfig 。在Servlet初始化的時候,JPS 引擎通過config 向它傳遞信息。這種信息可以是屬性名和屬性值匹配的參數,也可以是通過ServletContext 對象傳遞的服務器的有關信息;

Out內置對象主要用來向客戶端輸出各種類型的數據,同時還可以管理應用服務器上的輸出緩沖區。所以out 內置對象的方法是向客戶端輸出數據和管理緩沖區; 底層javax.servlet.jsp.JspWriter 抽象類。

Exception內置對象用來處理JSP 文件在執行時發生的所有異常,它是java.lang.Throwable 類的一個對象。

 

2.2 四大作用域

此外,在Jsp 開發中為了可以保存數據,Jsp提供了四種數據保存范圍;分別是:page,request,session,application。

Page:只在一個頁面中保存數據; javax.servlet.jsp.PageContext(抽象類)
Request:只在一個請求中保存數據; javax.servlet.http.HttpServletRequest(接口)
Session:在一次會話范圍中保存數據,僅供單個用戶使用;javax.servlet.http.HttpSession(接口)
Application:在整個服務器上保存數據,所有用戶共享;javax.servlet.ServletContext(接口)

 

三、★JavaBean

JavaBean是使用Java語言開發的一個可重用的組件,在JSP 開發中可以使用JavaBean減少重復代碼,使整個JSP代碼的開發更簡潔。

創建javabean
<jsp:useBean id="實例化對象名稱" scope="保存范圍" class="類完整名稱"/>
Scope有page,request,session和application 4個屬性范圍,默認是page;

設置javabean屬性值
<jsp:setProperty property="屬性名稱" name="實例化對象的名稱" value="屬性值" param="參數名稱"/>
Property=”*” 自動匹配所有

獲取javabean屬性值
<jsp:getProperty property="屬性名稱" name="實例化對象的名稱"/>

javabean保存范圍
Javabean 的保存范圍有page,request,session,application;默認是page;

刪除javabean
Page 范圍:pageContext.removeAttribute(“javaBean Name”);
request 范圍:request.removeAttribute(“javaBean Name”);
session 范圍:session.removeAttribute(“javaBean Name”);
application 范圍:application.removeAttribute(“javaBean Name”);

 

四、☆Servlet

Servlet生命周期:簡單分為四步:servlet 類加載→實例化→服務→銷毀。

客戶端/服務器端 跳轉
① 在Servlet 中獲取session,application
② 客戶端跳轉response.sendRedirect("目標地址");
③ 服務器跳轉:RequestDispatcher rd=request.getRequestDispatcher("目標地址"); rd.forward(request, response);

 

五、★EL表達式

  表達式內置對象 說明
1 pageContext 表示javax.servlet.jsp.PageContext對象
2 pageScope 表示從page屬性范圍查找輸出屬性
3 requestScope 表示從request屬性范圍查找輸出屬性
4 sessionScope 表示從session屬性范圍查找輸出屬性
5 applicationScope 表示從application屬性范圍查找輸出屬性
6 param 接收傳遞到本頁面的參數
7 paramValues 接收傳遞到本頁面的一組參數
8 header 取得一個頭信息數據
9 headerValues 取出一組頭信息數據
10 cookie 取出cookie中的數據
11 initParam 取得配置的初始化參數

尋找值的順序:page→request→session→application

EL表達式運算符操作還包括:算數運算符,關系運算符,邏輯運算符;三目運算符;Empty關鍵字;

 

六、Jsp標准標簽庫

JSTL核心標簽庫
c:out 內容輸出標簽;
c:set 用來設置4 中屬性范圍值的標簽;
c:remove 用來刪除指定范圍中的屬性;
c:catch 用來處理程序中產生的異常;
c:if 用來條件判斷;
c:choose、c:when、c:otherwise 用來多條件判斷;
c:forEach 用來遍歷數組或者集合;
c:fortokens 分隔輸出;
c:import 導入頁面;
c:url 生成一個url 地址;
c:redirect 客戶端跳轉

JSTL SQL標簽庫
Sql:setDataDource 設置JDBC 連接;
sql:query 數據庫查詢操作;
Sql:update 數據庫添加,修改,刪除操作;
Sql:transaction 數據庫事務;

JSTL XML標簽庫
x:parse 解析xml;
x:out 輸出xml 文件的內容;
x:set 把xml 讀取的內容保存到指定的屬性范圍;
x:if 判斷指定路徑的內容是否符合判斷的條件;
x:choose x:when x:otherwise 多條件判斷;
x:forEach 遍歷

 


免責聲明!

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



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