前言
之前我們在這篇文章java之jsp教程九大內置對象詳解(上篇)中,講解了三個對象,接下來我們講解下面的三個對象
jsp session對象
jsp session 是 javax.servlet.http.httpsession 的實例對象,主要用來訪問用戶數據,記錄客戶的連接信息。
http 協議是一種無狀態的協議(即不保存連接狀態的協議)。每次用戶向服務器發出請求,且服務器接收請求并返回響應后,該連接就被關閉了,服務器端與客戶端的連接被斷開。此時,服務器端不保留連接的有關信息,要想記住客戶的連接信息,就用到了 session 對象。
在 login.jsp 頁面登錄,并跳轉到 index.jsp。login.jsp 代碼如下:
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%>用戶登錄
用戶名: 密碼:
在 index.jsp 中,使用 session.setattribute() 方法將用戶名存儲到 session 對象中,代碼如下:
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <% string username = request.getparameter("username"); out.print("歡迎" + username + "登錄"); session.setattribute("sessname", username); %> 跳轉成功頁面
在 # 中,使用 session.getattribute() 方法獲取 session 對象中的用戶名,并顯示。# 代碼如下:
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <% string name = (string) session.getattribute("sessname"); out.print("您好,您的用戶名為:" + name); %>
運行結果如下圖所示:
login.jsp運行結果
index.jsp運行結果
index.jsp運行結果
拓展
如果使用的是 tomcat 服務器,可以在 web.xml 文件中添加以下內容來設置 session 的有效時間:
15
這里單位是分鐘,即表示 session 對象的有效時間為 15 分鐘,tomcat 默認有效時間為 30 分鐘。
如果在 web.xml 中配置的是15分鐘,則 getmaxinactiveinterval( ) 方法返回 900。
jsp application對象
jsp application 是 javax.servlet.servletcontext 的實例對象。
在服務器部署應用和項目時,web 容器僅創建一次 servletcontext 實例,也就是說 application 設置的任何屬性和值可以用于整個應用(所有 jsp 頁面)。
可以將 application 對象看作 web 應用的全局變量。一
般用于保存應用程序的公用數據。
application 對象在 web 應用運行時一直存在于服務器中,非常占用資源,因此在實際開發中不推薦使用,否則容易造成內存不足等情況。
application 對象常用方法如下:
- object getattribute(string attributename):獲取 attributename(屬性名稱)對應的 object
- void setattribute(string attributename, object object):設置attributename對應的屬性值
- enumeration getattributenames():返回 application 對象中所有的 attributename
- void removeattribute(string objectname):刪除 application 對象中指定 attributename 的屬性
- string getserverinfo():獲取當前 servlet 的版本信息
- string getrealpath(string value):獲取指定文件的實際路徑
示例
可以使用 application 對象來保存 jsp 頁面的訪問人數,也就是我們常說的網站計數器,下面通過一個例子來演示。
index.jsp 代碼如下:
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <%@ page import="java.util.*"%> <% integer count = (integer) application.getattribute("count"); if (count == null) { count = 1; } else { count++; } application.setattribute("count", count); %>編程幫網站計數器
歡迎訪問編程幫,您是第<%=count%>位訪問客戶!
運行結果如下:
首次訪問count為1
連續刷新頁面count增加
jsp config對象
jsp config 是 javax.servlet.servletconfig 的實例對象,一般用于獲取頁面和 servlet 的初始化參數。
- config 對象的常用方法如下:
- string getinitparameter(string paramname):獲取指定的初始化參數值
- enumeration getinitparameternames():獲取當前頁面所有的初始化參數值
- servletcontext getservletcontext():獲取當前執行 servlet 的 servletcontext(servlet 上下文)的值
- string getservletname():獲取當前執行 servlet 的名稱
示例
在 web.xml 文件中定義 servlet 名稱和映射,然后使用 config 對象獲取信息。
web.xml 代碼如下:
bianchengbangservlet /index.jsp url http://www.biancheng.net bianchengbangservlet /index
在 index.jsp 頁面獲取 servlet 名稱以及初始化參數,代碼如下:
<%@ page language="java" contenttype="text/html; charset=utf-8" pageencoding="utf-8"%> <% string sname = config.getservletname(); string url = config.getinitparameter("url"); out.print("servlet名稱為:" + sname + " "); out.print("初始化參數為:" + url + " "); %>
運行結果如下:
注意:因為 jsp 頁面的實質是 servlet,所以一般很少在 jsp 頁面中使用 config 對象。