JSP總結

JSP程序由JSP Engine(JSP引擎) 先將它轉換成Servlet代碼,接着將它編譯成類文件載入執行。

只有當客戶端第一次請求JSP時,才需要將其轉換、編譯

 

 

Directive 指令 

Directive是編譯期間執行的指令,常見的指令有:page include taglib

 

page:指明與JSP Container(JSP容器)的溝通方式

<%@ page language="java"

        import="java.io.*,java.util.*"     引入包和類

        errorPage="errorPageUrl"            如果頁面出現錯誤,跳轉到哪個頁面

        isErrorPage="false"                  當前頁面是否爲一個錯誤頁面

        contentType="text/html; charset=GB2312"字符編碼形式

        extends="index.jsp"                  指明這個jsp頁面是從哪個jsp繼承過來的

        buffer="8KB"                           緩衝區,默認爲8K。none代表不緩衝

        session="true"                        是否使用session,默認爲true

        autoFlush="true"                      頁面輸出完成後,是否自動刷新到客戶端

        info="InfoText"                       指明JSP相關的描述信息 

%>

 

include: JSP Engine會在jsp程序的轉換期間先把file屬性設定的文件包含進來,然後開始執行轉換及編譯

<%@ include file="index.jsp"%>//index.jsp後面不能接參數。因爲這是一個編譯指令

 

 

 

Declaration 聲明

<% 

int i = 0;//這種聲明,i爲局部變量

%>

<%!

int j = 0;//這種聲明,j爲成員變量(全局變量)

public void getMessage(){}//我們可以在此定義成員方法

%>

 

 

 

Action 運行期間的指令

Action是運行期間的指令,常見的指令有:jsp:useBean   jsp:include   jsp:forward

 

jsp:include

用於動態的JSP程序或HTML文件

除非這個指令被執行到,否則它是不會被Tomcat等JSP Engine編譯

<jsp:include page="URLSpec">

    <jsp:param name="ParamName" value="ParmValue"/> //用來設定include文件時的參數和值

</jsp:include>

jsp:forward

用於將一個jsp頁面的內容傳送到page所指定的jsp程序或者servlet中處理

<jsp:forward page="index.jsp">

    <jsp:param name="paramName" value="paramValue"/>

</jsp:forward>

 

 

<jsp:forward>與response.sendRedirect的區別


<jsp:forward> 

       1、跳轉發生在服務器端,跳轉後,客戶端的URL地址依然是1.jsp的地址

       2、<jsp:forward>在跳轉的過程中,使用的是同一個request對象

       3、工作流程:客戶端發出請求,傳遞到服務器1.jsp頁面,1.jsp頁面解析代碼到<jsp:forward>語句後跳轉到2.jsp頁面。服務器將2.jsp頁面的內容傳遞給客戶端

response.sendRedirect

       1、跳轉後,客戶端的URL地址發生改變

       2、response.sendRedirect在跳轉過程中,是不同的request對象

       3、工作流程:客戶端發出請求後,傳遞到1.jsp頁面。1.jsp向客戶端發出響應,通知客戶端重新訪問2.jsp頁面。客戶端得到請求後,再向2.jsp發出請求。2.jsp將響應內容傳遞給客戶端

 

<jsp:useBean>

Bean的基本要素:

       1、必須要有一個不帶參數的構造器(構造函數),在jsp元素創建Bean時會調用空構造器

       2、Bean類應該沒有任何公共實例變量。也就是說不允許直接訪問實例變量,變量名稱首字母必須小寫

       3、通過getter()和setter()方法來讀或寫變量值,並且將對應的變量首字母改成大寫

       4、Bean要有包,不能使用裸體類

 

<jsp:useBean id="beanName" class="cn.wyd.testBean" scope="page" type="int">

</jsp:useBean>

id:Bean對象的實例名稱

class:包名+類名

scope:這個Bean的作用範圍,共有page,request,session,application四個值,默認爲page,表示這個Bean只在當前頁面有效。

type:Bean的實例類型,如果這個選擇的是Object,則表示父類引用指向子類對象

 

<jsp:setProperty property="count" name="beanName" value="50"/>

設置Bean的屬性,property="Bean中的變量名" 這句話相當於beanName.setCount(50);

<jsp:getProperty property="count" name="beanName" />

得到Bean的屬性,相當於beanName.getCount();

 

 

JSP內置對象

內置對象是在JSP裏直接可以使用的對象,包括:

       out request response pageContext session application config exception page

 

JSP內置對象out

       out內置對象是一個緩衝的輸出流,用來給客戶端返回信息。

       它是javax.servlet.jsp.JspWriter類的一個實例

常用方法:

       println():向客戶端輸出各種類型的數據

       write():

       newline():輸出一個換行符

       close():關閉輸出流

       flush():輸出緩衝區裏的數據

       clearBuffer():清除緩衝區裏的數據,同時把數據輸出到客戶端

       clear():清除緩衝區裏的數據

       getBufferSize():返回緩衝區的大小

 

 

JSP內置對象request

request內置對象表示的是調用JSP頁面的請求。

它是javax.servlet.http.HttpServletRequest接口的一個實例

可以用此對象取得請求的Header信息,請求方式(get/post),請求的參數名稱、參數值、客戶端主機名等

常用方法:

       getParameter(String paramName)  獲得form提交過來的參數值,此參數值由paramName指定

       getMethod():返回客戶端向服務器傳送數據的方法

              getParameterNames():獲得客戶端傳送給服務器的所有參數名,返回枚舉類型(Enumeration)

              getParameterValues(String name):獲得指定參數的所有值,由name指定

              getRequestURI():獲得發出請求字符串的客戶端地址

              getRemoteAddr():獲取客戶端的IP地址

              getRemoteHost():獲取客戶端的機器名稱

              getServerName():獲取服務器的名字

           getServerPort():獲取服務器端的端口

 

 

JSP內置對象response

表示的是返回給客戶端的響應

它是javax.servlet.http.HttoServletResponse接口的一個實例

經常用於設置HTTP標題,添加cookie,設置響應內容的類型和狀態,發送HTTP重定向和編碼URL

常用方法:

           sendRedirect(String url):重定向JSP文件

setContentType(String contentType):設置MIME類型和編碼方式

addCookie(Cookie cookie):添加一個cookie對象,用於在客戶端保存特定的信息

           addHeader(String name,String value):添加HTTP頭信息,該Header信息將發送到客戶端

           containsHeader(String name):判斷指定名字的HTTP頭文件是否存在

           sendError(int):向客戶端發送錯誤的信息

   

JSP內置對象session

常用方法:

       setAttribute(String name ,Object value)

           getAttribute(String name)

           isNew()

           getSessionId()

 

Servlet和JSP的通信

從JSP調用Servlet可用<jsp:forward>或者sendRedirect,請求信息自動跳轉到servlet

 

從servlet調用JSP使用ResquestDispatcher接口的forward(request,response)方法或者使用sendRedirect跳轉到JSP頁面

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/wangyunda/archive/2008/04/30/2351083.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章