標籤:
一.JSP
原理:JSP其實就是一個servlet。
Servlet負責商務邏輯處理,JSP只負責顯示。開發中,JSP中不能有一行JAVA代碼
二.JSP文法
1. JSP模板元素:JSP中HTML標籤及文本
2. 指令碼:寫JAVA代碼,<% %>
3. 運算式:用於輸出變數及運算式,<%= %>
4. 注釋:分為三種
a) <!-- --> :JSP翻譯成Servlet時也將進行翻譯。頁面中也有。
b) <% /*.......*/ %>:JSP翻譯成Servlet時會被翻譯,但頁面(右擊原始碼)中沒有。
c) <%-- .......... --%>:JSP翻譯成Servlet時不會被翻譯。
三.指令
1. page:此指令可放在JSP頁面中的任意位置。作用範圍為整個JSP頁面
屬性:
language:預設值JAVA,目前也只有JAVA
extends:JSP對應的SERVLET的父類
import:匯入此JSP頁面中所用到的包,類。多個包以逗號分隔,預設已匯入的包有:java.lang.*,javax.servlet.*,javax.servlet.http.*,javax.servlet.jsp.*
session:是否建立HttpSession對象,預設為true
buffer:設定緩衝,取值none|8kb|sizekb,預設8kb。一般為預設值。
autoFlush:是否自動重新整理,true|false,預設true。
isThreadSafe:Jsp對應的Servlet是否實現SingleTreadMode介面。預設為true, false為實現。//實現單線程
errorPage:設定錯誤頁面
在web.xml配置預設錯誤頁面
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/exce.jsp</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
isErrorPage:預設為flase,指示是否產生Throwable對象的引用exception.
contentType:設定HTML中MIME類型的編碼,如同Servlet中response.setContentType();
pageEncoding:告知引擎翻譯JSP時使用的編碼。
isELlgnored:是否忽略EL運算式,JSP2.0以後,預設為false
四.include:
包含:
1. 動態包含
<jsp:include page=”....” />
如有兩個JSP檔案A,B. A動態包含B,A和B各自翻譯成A_jsp.class和B_jsp.class檔案,然後容器將兩個servlet合并。再輸出。
2. 靜態包含
<%@ include file=”.....” %>
A和B翻譯成一個A_jsp.class檔案。已經合并,並給容器。再輸出。
2. taglib:
<% taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c” %>
五.九大隱式對象
request: HttpServletRequest
response: HttpServletRequest
session: HttpSession(page指令中session設定true後,才會有)
config: ServletConfig
application: ServletContext
exception: Throwable(page指令中isErrorPage設定為true後,才會有)
page: 當前servlet的引用
out: JspWriter(等同於PrintWriter)
pageContext: javax.servlet.jsp.PageContext;
作用:
a. 可以擷取其它8大隱式對象
b. 本身也是一個域對象,作用範圍為本頁面
提供了操作其他域對象的方法(ServletContext,HttpSession, ServletRequest)
操作自身域對象的方法:
pageContext.getAttribute(Stringname);
pageContext.setAttribute(Stringname,Object value);
pageContext.removeAttribute(Stringname);
操作其它域對象的方法:
Object getAttribute(Stringname,int scope)
scope:PageContext有對應的常量
PageContext.APPLICATION_SCOPE
PageContext.SESSION_SCOPE
PageContext.REQUEST_SCOPE
PageContext.PAGE_SCOPE
voidremoveAttribute(String name,int scope)
voidsetAttribute(String name,Object value,int scope)
當我們只知道有name這麼一個參數,但不知道在哪個域中時。可以用:
pageContext.findAttribute(Stringname);
尋找的順序由小到大,page->request->session->context
c. 提供了包含及轉寄的方法
pageContext.forward(String path);
pageContext.include(String path)
六.四大域對象
pageContext:在本頁面中有效
request: 在一次請求及轉寄的Servlet中有效
session: 在一次會話中有效,直到逾時及銷毀
application: 在整個web應用有效,生命週期為Web運行期間
原則:域對象越小越好。
七.JSP內建標籤(動作元素)
jsp:include:動態包含
jsp:forward:請求轉寄
jsp:param:傳遞請求參數
八.JavaBean
1. 有無參的構造方法
2. 私人的欄位(欄位名小寫開頭)
3. 提供公用的getter和setter方法。
4. 一般實現java.io.Serialiable(可序列化)介面。
作用:用於封裝資料
九.JavaBean的動作元素
1、jsp:useBean
作用:從指定的域範圍尋找指定名稱的對象。找到直接返回;找不到建立該對象的執行個體,並放到指定的範圍中。
範圍:page request sessionapplication
屬性:
id:引用對象的名稱
class:尋找的類型
scope:指定的範圍。預設值是page
2、jsp:getProperty
擷取指定javabean的指定屬性的取值,並列印到頁面上。如果屬性值為null,列印null。
屬性:
name:javabean的名稱
property:操作的是getter屬性
3、jsp:setProperty
作用:設定Javabean的某個屬性的值。
屬性:
property:屬性名稱。支援萬用字元*
name:javabean的名稱
value:直接指定值
param:指定請求參數名。
十.JavaWeb的開發模型
1、模型1:JSP+JavaBean
特點:適合開發非常簡單的應用。
2、模型2:JSP+Servlet+JavaBean(MVC)
M:模型 JavaBean
V:視圖 JSP
C:控制器 Servlet
JSP--JSP文法--指令---九大隱式對象--四大域對象--JSP內建標籤--JavaBean的動作元素--MVC三層架構