Java之JSP教程九大內(nèi)置對(duì)象詳解(中篇)
前言
之前我們?cè)谶@篇文章Java之JSP教程九大內(nèi)置對(duì)象詳解(上篇)中,講解了三個(gè)對(duì)象,接下來我們講解下面的三個(gè)對(duì)象
JSP session對(duì)象
JSP session 是 javax.servlet.http.HttpSession 的實(shí)例對(duì)象,主要用來訪問用戶數(shù)據(jù),記錄客戶的連接信息。
HTTP 協(xié)議是一種無狀態(tài)的協(xié)議(即不保存連接狀態(tài)的協(xié)議)。每次用戶向服務(wù)器發(fā)出請(qǐng)求,且服務(wù)器接收請(qǐng)求并返回響應(yīng)后,該連接就被關(guān)閉了,服務(wù)器端與客戶端的連接被斷開。此時(shí),服務(wù)器端不保留連接的有關(guān)信息,要想記住客戶的連接信息,就用到了 session 對(duì)象。
在 login.jsp 頁(yè)面登錄,并跳轉(zhuǎn)到 index.jsp。login.jsp 代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> </head> <body> <h2>用戶登錄</h2> <form action="index.jsp"> 用戶名: <input type="text" name="username" /> <br> <br> 密碼: <input type="text" name="pass" /> <br> <br> <input type="submit" value="登錄" /> </form> </body> </html>
在 index.jsp 中,使用 session.setAttribute() 方法將用戶名存儲(chǔ)到 session 對(duì)象中,代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> </head> <body> <% String username = request.getParameter("username"); out.print("歡迎" + username + "登錄"); session.setAttribute("sessname", username); %> <a href="success.jsp" rel="external nofollow" >跳轉(zhuǎn)成功頁(yè)面</a> </body> </html>
在 success.jsp 中,使用 session.getAttribute() 方法獲取 session 對(duì)象中的用戶名,并顯示。success.jsp 代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> </head> <body> <% String name = (String) session.getAttribute("sessname"); out.print("您好,您的用戶名為:" + name); %> </body> </html>
運(yùn)行結(jié)果如下圖所示:
login.jsp運(yùn)行結(jié)果
index.jsp運(yùn)行結(jié)果
index.jsp運(yùn)行結(jié)果
拓展
如果使用的是 Tomcat 服務(wù)器,可以在 web.xml 文件中添加以下內(nèi)容來設(shè)置 session 的有效時(shí)間:
<session-config> <session-timeout>15</session-timeout> </session-config>
這里單位是分鐘,即表示 session 對(duì)象的有效時(shí)間為 15 分鐘,Tomcat 默認(rèn)有效時(shí)間為 30 分鐘。
如果在 web.xml 中配置的是15分鐘,則 getMaxInactiveInterval( ) 方法返回 900。
JSP application對(duì)象
JSP application 是 javax.servlet.ServletContext 的實(shí)例對(duì)象。
在服務(wù)器部署應(yīng)用和項(xiàng)目時(shí),Web 容器僅創(chuàng)建一次 ServletContext 實(shí)例,也就是說 application 設(shè)置的任何屬性和值可以用于整個(gè)應(yīng)用(所有 JSP 頁(yè)面)。
可以將 application 對(duì)象看作 Web 應(yīng)用的全局變量。一
般用于保存應(yīng)用程序的公用數(shù)據(jù)。
application 對(duì)象在 Web 應(yīng)用運(yùn)行時(shí)一直存在于服務(wù)器中,非常占用資源,因此在實(shí)際開發(fā)中不推薦使用,否則容易造成內(nèi)存不足等情況。
application 對(duì)象常用方法如下:
- Object getAttribute(String attributeName):獲取 attributeName(屬性名稱)對(duì)應(yīng)的 object
- void setAttribute(String attributeName, Object object):設(shè)置attributeName對(duì)應(yīng)的屬性值
- Enumeration getAttributeNames():返回 application 對(duì)象中所有的 attributeName
- void removeAttribute(String objectName):刪除 application 對(duì)象中指定 attributeName 的屬性
- String getServerInfo():獲取當(dāng)前 Servlet 的版本信息
- String getRealPath(String value):獲取指定文件的實(shí)際路徑
示例
可以使用 application 對(duì)象來保存 JSP 頁(yè)面的訪問人數(shù),也就是我們常說的網(wǎng)站計(jì)數(shù)器,下面通過一個(gè)例子來演示。
index.jsp 代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.util.*"%> <!DOCTYPE html> <html> <head> </head> <body> <% Integer count = (Integer) application.getAttribute("count"); if (count == null) { count = 1; } else { count++; } application.setAttribute("count", count); %> <h2>編程幫網(wǎng)站計(jì)數(shù)器</h2> 歡迎訪問編程幫,您是第<%=count%>位訪問客戶! </body> </html>
運(yùn)行結(jié)果如下:
首次訪問count為1
連續(xù)刷新頁(yè)面count增加
JSP config對(duì)象
JSP config 是 javax.servlet.ServletConfig 的實(shí)例對(duì)象,一般用于獲取頁(yè)面和 Servlet 的初始化參數(shù)。
- config 對(duì)象的常用方法如下:
- String getInitParameter(String paramname):獲取指定的初始化參數(shù)值
- Enumeration getInitParameterNames():獲取當(dāng)前頁(yè)面所有的初始化參數(shù)值
- ServletContext getServletContext():獲取當(dāng)前執(zhí)行 Servlet 的 servletContext(Servlet 上下文)的值
- String getServletName():獲取當(dāng)前執(zhí)行 Servlet 的名稱
示例
在 web.xml 文件中定義 Servlet 名稱和映射,然后使用 config 對(duì)象獲取信息。
web.xml 代碼如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>BianChengBangServlet</servlet-name> <jsp-file>/index.jsp</jsp-file> <init-param> <param-name>url</param-name> <param-value>http://www.biancheng.net</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>BianChengBangServlet</servlet-name> <url-pattern>/index</url-pattern> </servlet-mapping> </web-app>
在 index.jsp 頁(yè)面獲取 Servlet 名稱以及初始化參數(shù),代碼如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> </head> <body> <% String sname = config.getServletName(); String url = config.getInitParameter("url"); out.print("Servlet名稱為:" + sname + "<br>"); out.print("初始化參數(shù)為:" + url + "<br>"); %> </body> </html>
運(yùn)行結(jié)果如下:
注意:因?yàn)?JSP 頁(yè)面的實(shí)質(zhì)是 Servlet,所以一般很少在 JSP 頁(yè)面中使用 config 對(duì)象。
到此這篇關(guān)于Java之JSP教程九大內(nèi)置對(duì)象詳解(中篇)的文章就介紹到這了,其他兩個(gè)部分的內(nèi)容(上、下篇)請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Java之JSP教程九大內(nèi)置對(duì)象詳解(上篇)
- jsp的九大內(nèi)置對(duì)象深入講解
- 詳解JSP 內(nèi)置對(duì)象request常見用法
- JSP中九大內(nèi)置對(duì)象和四種屬性范圍詳解
- jsp內(nèi)置對(duì)象
- 淺談jsp九大內(nèi)置對(duì)象及四個(gè)作用域
- 淺析JSP的9大內(nèi)置對(duì)象和4大作用域?qū)ο?/a>
- JSP內(nèi)置對(duì)象:Request和Response的簡(jiǎn)單介紹及使用
- jsp內(nèi)置對(duì)象及方法詳細(xì)介紹
- Java之JSP教程九大內(nèi)置對(duì)象詳解(下篇)
相關(guān)文章
HttpClient Post 二進(jìn)制/字節(jié)流/byte[]實(shí)例代碼
這篇文章主要介紹了 HttpClient Post 二進(jìn)制/字節(jié)流/byte[]實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-06-06request.getParameter()取值為null的解決方法
在后臺(tái)通過Request取值為null,是因?yàn)橹辉O(shè)置了id屬性,而取值候用的是name屬性,問題就出現(xiàn)在這里2014-06-06JSP頁(yè)面緩存cache技術(shù)--瀏覽器緩存介紹及實(shí)現(xiàn)方法
緩存的思想可以應(yīng)用在軟件分層的各個(gè)層面。它是一種內(nèi)部機(jī)制,對(duì)外界而言,是不可感知的;另外Browser也有緩存(如IE)這個(gè)大家也都知道(實(shí)現(xiàn)在 web server 上的緩存機(jī)制)越上層的緩存效果越好,越底層的緩存影響越深遠(yuǎn)2012-12-12JSP中動(dòng)態(tài)合并單元格的實(shí)例代碼
本文通過實(shí)例代碼給大家詳細(xì)介紹了jsp動(dòng)態(tài)合并單元格的方法,代碼簡(jiǎn)單易懂,非常不錯(cuò),需要的朋友參考下吧2016-12-12jsp頁(yè)面中EL表達(dá)式被當(dāng)成字符串處理不顯示值問題的解決方法
下面小編就為大家?guī)硪黄猨sp頁(yè)面中EL表達(dá)式被當(dāng)成字符串處理不顯示值問題的解決方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09Spring 事務(wù)隔離與事務(wù)傳播的詳解與對(duì)比
這篇文章主要介紹了Spring 事務(wù)隔離與事務(wù)傳播的詳解與對(duì)比的相關(guān)資料,Spring是SSH中的管理員,負(fù)責(zé)管理其它框架,協(xié)調(diào)各個(gè)部分的工作,需要的朋友可以參考下2017-08-08