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

jopen 8年前發布 | 18K 次閱讀 JSP Servlet Java開發

零: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 遍歷

來自: http://www.cnblogs.com/iPragmatic/p/Jsp-Servlet.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!