1. 程式人生 > >.11 四種屬性範圍

.11 四種屬性範圍

.1.1       request

在伺服器內部進行頁面跳轉的時候,可以進行request.setAttribute()進行屬性設值。

伺服器內部跳轉:位址列是不會發生變化的,只在伺服器內部進行jsp/servlet的請求,我們一般用做多層結構中。

request範圍內的變數只在單次的伺服器端頁面跳轉內有效。

<%

         request.setCharacterEncoding("UTF-8");

         String username = request.getParameter("username");

         String password = request.getParameter("password");

         Student stu = StudentService.getStudentByUsernameAndPwd(username, password);

if (null != stu) {

                   request.setAttribute("students", StudentService.getAllStudents());

                   request.setAttribute("stu", stu);

%>

<jsp:forward page="success.jsp"/>

<%

         }

else {

%>

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

         <jsp:param name="msg" value="賬號或密碼錯誤" />

</jsp:forward>

<%

         }

%>

在success.jsp中獲取request設定的屬性值

<%

                   Student stu1 = (Student)request.getAttribute("stu");

                   List<Student> students = (List<Student>) request.getAttribute("students")

;

         %>

.1.2       關於分層設計的概念

在MVC設計模式中的業務處理步驟

(1)   從客戶端獲取頁面引數到指定的伺服器端頁面(jsp),使用request.getParameter();

(2)   使用引數在Service方法中進行業務邏輯的處理,並返回處理結果(一般為JavaBean);

(3)   將處理結果放到頁面級的變數request中,request.setAttribute(“name”,Object);

(4)   通過伺服器端的頁面跳轉(jsp:forward)到相應的檢視層(success.jsp)進行資料的獲取和頁面展現輸出,request.getAttribute(“name”)

.1.3       pageContext

只在當前伺服器頁面中進行資料的儲存和讀取,頁面級別的

<%

         pageContext.setAttribute("num", 2);

//

//

         Integer num = (Integer) pageContext.getAttribute("num");

         out.print(num);

%>

.1.4       session

會話級別的變數,我們一般使用Session處理使用者的登入資訊

簡單的理解,開啟一個瀏覽器,無論你開啟多少的便籤頁,session的會話級變數都會存在,除非使用session.removeAttribute()將其顯示的銷燬。

.1.5       application

伺服器級別的變數,只要服務啟動未關閉,該變數就會一直存在,除非顯示的銷燬。

<%

         Integer num = (Integer) application.getAttribute("num");

if (null == num) {

                   application.setAttribute("num", 1);

         } else {

                   application.setAttribute("num", num+1);

         }

%>

該頁面被訪問<%=application.getAttribute("num") %>