JSP資料互動(2)
阿新 • • 發佈:2019-01-01
1. application物件: void setAttribute(String key,Object value): 以key/value的形式將物件儲存到appliction中 Object getAttribute(String key): 通過key獲取application中儲存的物件 String getRealPath(String path): 返回相對路徑的真實路徑 2. 統計訪問人數: 登陸控制頁面: <% Integer count=(Integer)appliction.getAttribute("count"); if(count!=null){ count=count+1; }else{ count=1; } appliction.setAttribute("count",count); %> 統計頁面增加: <% Integer i=(Integer)appliction.getAttribute("count"); out.printIn("統計訪問量"+i+"個人訪問過本網站"); %> 3. 物件的作用域: page作用域: 指單一JSP頁面的範圍,只能在建立該物件的頁面中訪問。在客戶端每次請求JSP頁面建立,在伺服器傳送響應或請求轉發到其他 頁面或資源後失效,pageCountext物件本身也屬於page作用域 request作用域: 是與客戶端請求繫結在一起,其作用域比page作用域的範圍要大 session作用域 : application作用域: 面對整個Web程式,伺服器啟動後會建立一個application物件,被所有使用者共享 4. coolie: 由伺服器端生成,傳送給客戶端瀏覽器的,瀏覽器會將其儲存為某個目錄下的文字檔案 作用表現: 對特定的物件追蹤 統計網頁的瀏覽次數 在cookie有效期內,記錄使用者登入資訊 實現各種個性化服務 5. 在JSP中使用cookie 5.1建立cookie物件: Cookie newCookie=new Cookie(String name,String value); 5.2寫入cookie: response.addCookie(newCookie); 常用方法: void setMaxAge(int expiry):設定cookie的有效期,以秒為單位 void setValue(String value): 在cookie建立後,為cookie賦予新的值 String getName(): 獲取cookie的名稱 String getValue(): 獲取cookie的值 int getMaxAge(): 獲取cookie的有效時間,以秒為單位 5.3讀取cookie: 5.4 cookie與session區別: session是在伺服器端儲存使用者資訊,cookie是在客戶端儲存使用者資訊 session中儲存的值是Object型別,cookie儲存的是String型別 session隨會話的結束而將其儲存的資料銷燬,cookie可以長期儲存在客戶端 cookie通常用於儲存不重要額使用者資訊,重要的資訊使用session儲存 6. JSP訪問資料庫: 6.1 載入JDBC驅動 6.2 與資料庫建立連線 6.3 傳送SQL語句 7. JavaBean: 實際上是一個Java類,可以重用,功能可分為:封裝資料,封裝業務 滿足以下要求: JavaBean是一個公有類,並提供無參的公有構造方法 屬性私有 具有公有的訪問屬性的getter,和setter方法
第二章回顧: 1. 內建物件: out 用於向客戶端輸出資料 request 主要用於處理客戶端請求的資料資訊 response 用於響應客戶端請求並向客戶端輸出資訊 session 用於記錄會話狀態的相關資訊 appliction 類似於系統的全域性變數,用於實現Web應用中的資源共享 page pageContext 提供了在JSP執行時訪問和其他相關的環境資訊的功能,常用方法: ServletRequest(): 獲取request物件 ServletResponse(): 獲得response物件 HttpSession getSession(): 獲得session物件 JspWriter getOut(): 獲取out物件 void setAttribute(): 儲存屬性 Object getAttrubute(): 獲得屬性 void inclute(): 請求指定的資源,並將目標資源的響應結果包含在呼叫頁面的響應中 config exception 2. request如何解析使用者表單提交過來的資料 String name= request.getParameter("userName"); <form> <input type="text" name="userName"/> </form> 3. 給request作用域: request.setAttribute("key",Object obj); List<Student> list=(List<Student>)request.getAttribute(); 4. 轉發和重定向: 請求次數: 重定向2次,轉發1次 轉發相當於伺服器內部的一個行為,客戶端根本無法感知到這個動作 URL地址: 重定向最終頁面,轉發中間頁面 資料: 重定向不懈怠資料,轉發攜帶資料 5. response用來對客戶端請求做出相應 6. session技術,一次會話 session.setAttribute("uname","你好"); session.setAttribute("uname",user); 認證通過,客戶才有許可權訪問其他的業務模組 7. 登出: 1. 清空session 2. 跳轉到登陸 8. include:只能寫相對路徑 <%@ include file="xxx.jsp"%> 靜態包含 動態包含<jsp:include> session Loginout 單獨抽取一個Loginout.jsp 9. application: 統計網站的訪問次數 Object型別不能轉成值型別,要轉成值型別的包裝類 10.作用域: pageContext request session application 11 cookie: 實現session基礎,cookie儲存著sessionid,每次請求都要攜帶該網站的sessionid 與server上的sessionid匹配,最終判定使用者狀態,(登陸的,可以進行後續業務操作) 12 cookie的分類: 會話級別cookie: 沒有設定setMaxAge(60) 硬碟級別cookie: cookie不是內建物件,因為要new 必須通過response.addCookie(cookie); cookie形成在server端,儲存在client端
<body>
<form action="/Day03_0100/session/do.jsp" method="post">
登入名: <input type="text" name="txtName"/><br/>
密碼:<input type="password" name="txtPwd"/>
<input type="submit" value="登入"/>
</form>
</body>
<% //解決亂碼 request.setCharacterEncoding("utf-8"); String name = request.getParameter("txtName"); String pwd = request.getParameter("txtPwd"); if ("1".equals(name) && "1".equals(pwd)) { session.setAttribute("txtName", name); Cookie cookie = new Cookie("txtName", name); Cookie cookiepwd = new Cookie("txtPwd", pwd); cookie.setMaxAge(60); response.addCookie(cookie); response.addCookie(cookiepwd); request.getRequestDispatcher("/ssession/success.jsp").forward( request, response); } else { response.sendRedirect("/Day03_0100/session/login.jsp"); } %>
<body>
歡迎您 :<%=session.getAttribute("txtName") %>
<br/>
<a href="<%=path %>/session/loginout.jsp">登出</a>
</body>