1. 程式人生 > >Jsp基本內容

Jsp基本內容

1.Jsp簡介

JSP(Java Server Pages)是JavaWeb伺服器端的動態資源,它與html頁面的作用是相同的,顯示資料和獲取資料。
jsp: 作為請求發起頁面,例如顯示錶單、超連結。 
: 作為請求結束頁面,例如顯示資料。
Servlet: 作為請求中處理資料的環節。
jsp的組成  :jsp = html + java指令碼 + jsp標籤(指令)
jsp中可直接使用的物件一共有9個,被稱之為9大內建物件
3種java指令碼: 
<%…%>:寫java程式碼片段,(類似方法) 
<%=…%>:用於輸出,用於輸出一條表示式(或變數)的結果。 
<%!…%>:宣告,用來建立類的成員變數和成員方法(類似與類)

<!-- --> Html 註釋客戶端可見
<%-- --%> Jsp 註釋客戶端不可見
// java 單行註釋
/* */ java 多行註釋
jsp註釋:<%– … –%> 
當伺服器把jsp編譯成java檔案時已經忽略了註釋部分!

jsp原理

jsp其實是一種特殊的Servlet 

  • 當jsp頁面第一次被訪問時,伺服器會把jsp編譯成java檔案
  • 然後再把java編譯成.class
  • 然後建立該類物件
  • 最後呼叫它的service()方法
  • 第二次請求同一jsp時,直接呼叫service()方法。

2.九大內建物件

在jsp中無需宣告即可直接使用的9個物件 
out(JspWriter):等同與response.getWriter(),用來向客戶端傳送文字資料;
config(ServletConfig):對應“真身”中的ServletConfig;
page(當前JSP的真身型別):當前JSP頁面的“this”,即當前物件,引用為Object型別;
pageContext(PageContext):頁面上下文物件,它是最後一個沒講的域物件;
exception(Throwable):只有在錯誤頁面中可以使用這個物件;
request(HttpServletRequest):即HttpServletRequest類的物件;
response(HttpServletResponse):即HttpServletResponse類的物件;
application(ServletContext):即ServletContext類的物件;
session(HttpSession):即HttpSession類的物件,不是每個JSP頁面中都可以使用,如果在某個JSP頁面中設定<%@page session=”false”%>,說明這個頁面不能使用session。
pageContext(一個頂9個!) 

3.jsp四大作用域
Servlet中有三大域,而JSP中有四大域! 

Page 範圍:只在一個頁面中儲存資料; javax.servlet.jsp.PageContext(抽象類)
Request 範圍:只在一個請求中儲存資料; javax.servlet.http.HttpServletRequest(介面)
Session 範圍:在一次會話範圍中儲存資料,僅供單個使用者使用;javax.servlet.http.HttpSession(介面)
Application 範圍:在整個伺服器上儲存資料,所有使用者共享;javax.servlet.ServletContext(介面)

application.jsp(伺服器上的所有使用者共享資料)

<%//設定兩個application頁面的資料key value 
//在整個伺服器上儲存資料,供所有使用者使用
application.setAttribute("name", "request王小波");
application.setAttribute("age",35);
%>
<h1>application設定完畢</h1>
<%
  //取值
 String name= (String)application.getAttribute("name");
  int age=(Integer)application.getAttribute("age");
%>
<font>姓名:<%=name %></font>
<font>年齡:<%=age%></font>


session:整個會話(一個會話中只有一個使用者) 

<%//設定兩個session頁面的資料key value 
//在一次會話範圍內儲存資料,僅供單個使用者使用(只能用一個瀏覽器開啟,其他瀏覽器不可以)
session.setAttribute("name", "request王小波");
session.setAttribute("age",35);
%>
<h1>session設定完畢</h1>
<%
  //取值
 String name= (String)session.getAttribute("name");
  int age=(Integer)session.getAttribute("age");
%>
<font>姓名:<%=name %></font>
<font>年齡:<%=age%></font>


request:一個請求鏈! requestScope.jsp這個檔案直接跳轉到requestTarget.jsp,不顯示requestScope.jsp這個頁面!!

<%//設定兩個request頁面的資料key value 
// 只在一個請求內儲存資料
request.setAttribute("name", "request王小波");
request.setAttribute("age",35);
%>
<h1>測試這個頁面會顯示嗎?</h1>
<jsp:forward page="requestTarget.jsp"/>
<%
  //取值
 String name= (String)request.getAttribute("name");
  int age=(Integer)request.getAttribute("age");
%>

<font>姓名:<%=name %></font>
<font>年齡:<%=age%></font>


pageContext:一個jsp頁面!這個域是在當前jsp頁面和當前jsp頁面中使用的標籤之間共享資料! (只看到這裡)

<%//設定兩個page頁面的資料key value 
pageContext.setAttribute("name", "page王小波");
pageContext.setAttribute("age",35);
%>
<%
  //取值
 String name= (String)pageContext.getAttribute("name");
  int age=(Integer)pageContext.getAttribute("age");
%>
<font>姓名:<%=name %></font>
<font>年齡:<%=age%></font>

JSP動作標籤

動作標籤是由tomcat(伺服器)來解釋執行!而html標籤由瀏覽器來執行!

1.jsp包含指令 <jsp:include> 

 <%@ include file=”要包含的檔案”%> 靜態包含先包含,後編譯處理;
<jsp:include page=”要包含的檔案”> 動態包含先編譯處理,後包含;
以後開發用動態包含;

2.<jsp:forward> 

例如:<jsp:forward page="xxx"/>,用來轉發到指定頁面 

        例如在a.jsp中存在如下內容:<jsp:fowrad page="b.jsp"/> 

a.jsp中的內容不會顯示在瀏覽器上,而只是顯示b.jsp的內容。而且在<jsp:forwad>標籤下面的內容不會被執行。

3.<jsp:param> ,該標籤是和的子標籤,用來向其他頁面傳遞引數。