JavaWeb總結(四)—JSP深入解析

來源:互聯網
上載者:User

標籤:

一、JSP域對象

1.JSP屬性範圍(域物件範圍)    

JSP提供了四個域對象,分別是pageContextrequestsessionapplication

pageContext: 屬性範圍僅限於當前JSP頁面。一個屬性只能在一個頁面取得,跳轉到其他頁面無法取得。

request: 屬性作用範圍僅限於同一個請求。一個頁面中設定的屬性,只要經過了伺服器的跳轉,跳轉之後的頁面都可以繼續取得。

session: 儲存在session對象中的屬性可以被屬於同一個會話的所有Servlet和JSP頁面訪問。瀏覽器開啟到關閉稱作一次會話。

application: 儲存在application對象中的屬性可以被同一個Web應用程式的所有Servlet和JSP頁面訪問。

 

2.域對象的相關方法  

(1)setAttribute()

     設定屬性的方法。之前所講解的四種屬性範圍,實際上都是通過pageContext屬性範圍設定上的。開啟pageContext所在的說明文檔。

PageContext類繼承了JspContext類,在JspContext類中定義了setAttribute方法,如下:

此方法中存在一個scope的整型變數,此變數就表示一個屬性的儲存範圍。

後面有一個int類型的變數,在PageContext中可以發現有4種。

    public static final int PAGE_SCOPE = 1;    public static final int REQUEST_SCOPE = 2;    public static final int SESSION_SCOPE = 3;     public static final int APPLICATION_SCOPE = 4;

      這個setAttribute()方法如果不寫後面的int類型的scope參數,則此參數預設為PAGE_SCOPE,則此時setAttribute()方法設定的就是page屬性範圍,如果傳遞過來的int型別參數scope為REQUEST_SCOPE,則此時setAttribute()方法設定的就是request屬性範圍,同理,傳遞的scope參數為SESSION_SCOPE和APPLICATION_SCOPE時,則表示setAttribute()方法設定的就是session屬性範圍和application屬性範圍。

 

(2)getAttribute(String name)

     擷取指定的屬性。

 

(3)getAttributeNames()

     擷取所有屬性名稱字組成的Enumeration對象。

 

(2)removeAttribute(String name)

     移除指定的屬性。

 

二、請求轉寄和重新導向

 

1.用法

<html>  <head>        <title>My JSP ‘hello.jsp‘ starting page</title>      </head>    <body>  <form action="ForwardServlet">年齡: <input type="text" name="age"><br><input type="submit" value="提交"></form>    </body></html>

 

ForwardServlet.java

public class ForwardServlet extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{String age = req.getParameter("age");System.out.println("ForwardServlet: age = " + age);//請求的轉寄//1.調用HttpServletRequest的getRequestDispatcher()方法擷取RequestDispatcher對象。String path = "TestServlet";RequestDispatcher dispatcher = req.getRequestDispatcher("/" + path);//2.調用RequestDispatcher對象的forward()方法dispatcher.forward(req,resp);}public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{doGet(req,resp);}}

 

TestServlet.java

public class TestServlet extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{String age = req.getParameter("age");System.out.println("TestServlet: age = " + age);}public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{doGet(req,resp);}}

結果:

ForwardServlet: age = 123
TestServlet: age = 123

 

如果把ForwardServlet內部重新導向到TestServlet。

public class ForwardServlet extends HttpServlet{public void doGet(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{String age = req.getParameter("age");System.out.println("ForwardServletage = " + age);//請求的重新導向String path = "TestServlet";resp.sendRedirect(path);}public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{doGet(req,resp);}}

結果:

ForwardServletage = 23
TestServlet: age = null

JavaWeb總結(四)—JSP深入解析

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.