首页 理论教育 JSP内置对象–JavaEE开发指南

JSP内置对象–JavaEE开发指南

时间:2023-11-03 理论教育 版权反馈
【摘要】:下面重点介绍编程中经常使用的一些内置对象。每当客户端请求一个JSP页面时,JSP引擎就会生成一个新的request对象来代表这个请求。表2.3 request对象常用方法利用request对象获取请求的头信息。session对象在第一个JSP页面被装载时自动创建,完成会话期管理。

JSP内置对象–JavaEE开发指南

JSP文件最终会被编译成一个Java类,JSP编译成的类存放的路径为:Java工程路径\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\工程名称\org\apache\jsp\jsp文件名称_jsp.java。每个JSP文件转换成相应的类里面都有一个_jspService()方法,_jspService()方法部分代码如下所示。

由于JSP中的脚本代码以及表达式都会被生成在该方法中,所以在该方法中声明的这些变量在JSP脚本以及表达式中都可以直接使用,无须再声明,从而使程序开发者摆脱了很多繁琐的工作。这些对象也被称为JSP内置对象,主要包括:request,response,session,application,config,page,pageContext,out等。下面重点介绍编程中经常使用的一些内置对象。

1.request对象

request对象是javax.servlet.http.HttpServletRequest类的实例。每当客户端请求一个JSP页面时,JSP引擎就会生成一个新的request对象来代表这个请求。request对象提供了一系列方法来获取HTTP头信息,cookies,HTTP方法等,表2.3列出了request对象常用方法。

表2.3 request对象常用方法

【例2.7】利用request对象获取请求的头信息。

(1)在WebContent目录下新建printHeader.jsp页面,页面内容如下所示:

(2)启动Tomcat,在浏览器地址栏输入http://localhost:8080/JSP_Demo/printHeader.jsp,运行结果如图2.15所示。

图2.15 利用request对象获取请求的头信息

说明:首先通过调用request对象的getHeaderNames()方法得到所有请求头名称;其次通过迭代遍历,通过getHeader(headerName)方法获得请求头名称对应的值,最后利用JSP表达式把请求头以及对应的值输出到浏览器。

【例2.8】调查问卷

(1)在WebContent目录下新建questionnaire.jsp和getParam.jsp页面。

questionnaire.jsp内容如下:

getParam.jsp内容如下:

(2)启动tomcat,在浏览器地址栏输入http://localhost:8080/JSP_Demo/ questionnaire.jsp,运行结果如图2.16所示。

图2.16 调查问卷运行结果

程序说明:

在questionnaire.jsp页面中,form的属性action的值设置为getParam.jsp页面,当点击“提交”按钮时,form标签里面的参数传递给getParam.jsp页面。在getParam.jsp页面通过调用内置request对象的getParameter()方法类获取被调查者的姓名、年龄,对于多值参数(如本例中的checkbox),则调用getParameterValues()方法来返回一个包含所有参数值的数组。在getParam.jsp页面中要判断hobbies值是否为空,如果在questionnaire.jsp中没有选中任何爱好,则hobbies变量值为空,如果不判断则会出现空指针异常,程序最后使用JSP表达式输出变量的值。

2.response对象

response对象是javax.servlet.http.HttpServletResponse类的实例。当服务器创建request对象时会同时创建用于响应客户端的response对象。response对象用于将服务器数据发送到客户端以响应客户端的请求。可以通过response对象来组织发送到客户端的信息,如Cookie、HTTP文件头信息等。但是由于组织方式比较底层,所以不建议一般程序开发人员使用,需要向客户端发送文字时直接使用out对象即可。response对象的常用方法如表2.4所示。

表2.4 response对象常用方法

【例2.9】自动刷新网页。

(1)在WebContent目录下新建autoRefresh.jsp页面,页面内容如下所示:

(2)启动Tomcat,在浏览器输入http://localhost:8080/JSP_Demo/autoRefresh.jsp,运行结果如图2.17所示。

图2.17 自动刷新页面

程序说明:

使用response对象的setHeader()方法设置网页自动刷新,方法的第一个参数代表头名称,第二个参数1代表是每隔多少秒自动刷新页面,打开网页后看到每隔一秒自动刷新页面,实时显示当前时间。

【例2.10】定时跳转到网页。

(1)在WebContent目录下新建autoSend.jsp页面,页面内容如下所示:

(2)启动Tomcat,在浏览器输入http://localhost:8080/JSP_Demo/autoSend.jsp,等待5 s之后,页面自动跳转到百度页面。

【例2.11】重定向网页。

(1)在WebContent目录下新建redirect.jsp,页面内容如下:

redirect.jsp页面内容

(2)启动Tomcat,在浏览器输入http://localhost:8080/JSP_Demo/redirect.jsp,页面自动重定向到百度页面。

3.session对象

session表示客户端与服务器的一次会话,Web中的session指的是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。session实际上是一个特定的时间概念,在服务器的内存当中保存着不同用户的session,session和用户是一一对应的。session对象在第一个JSP页面被装载时自动创建,完成会话期管理。从客户端打开浏览器并连接到服务器开始,到客户端关闭浏览器离开这个服务器结束,这个过程被称为一个会话。当一个客户访问一个服务器,可能会在服务器的几个页面之间切换,服务器应当通过某种办法知道这是同一个客户,就需要session对象。

session的生命周期包括三个阶段:创建、活动、销毁。

1)创 建

当客户端第一次访问某个JSP或者Servlet的时候,服务器会为当前会话创建一个sessionId,每次客户端向服务器发送请求时,都会将此sessionId携带过去,服务端会对此sessionId进行校验。(www.xing528.com)

2)活 动

某次会话当中通过超链接打开的新页面属于同一次会话。只要当前页面没有全部关闭,重新打开新的浏览器窗口访问同一项目资源都属于同一次会话。本次会话的所有页面都关闭后再重新访问某个JSP将会创建新的会话。注意事项:原有会话的sessionID仍然存在服务端,只是没有任何客户端会携带它交予服务端校验。

3)销 毁

session的销毁只有三种方式:

(1)调用了session.invalidate()方法;

(2)session过期(超时);

(3)服务器重新启动。

Tomcat默认session超时时间为30 s。设置session超时时间有两种方式:

(1)session.setMaxInactiveInterval(时间);//单位是秒

(2)在WebContent/WEB-INF目录下的web.xml中配置,单位是分钟。

<session-config>

<session-timeout>

10

</session-timeout>

</session-config>

【例2.12】session使用实例。

(1)在WebContnet目录下分别新建login.jsp,loginControl.jsp页面用于用户登录操作和用于判断用户名和密码是否正确。如果正确,跳转到welcome.jsp页面;否则跳转到login.jsp页面。welcome.jsp页面首先判断用户是否登录,如果已登录显示欢迎和退出按钮,否则跳转到login.jsp页面。在index.jsp页面单击退出,则通过logout.jsp执行退出操作,最后跳转到login.jsp页面。

login.jsp页面内容如下所示:

loginControl.jsp页面内容如下所示:

welcome.jsp页面内容如下所示:

logout.jsp页面内容如下:

(2)启动Tomcat,在浏览器输入http://localhost:8080/JSP_Demo/login.jsp,程序运行结果如图2.18所示。

图2.18 session实例运行结果

程序说明:用户不论首先访问welcome.jsp、loginControl.jsp或logout.jsp中的哪个页面,系统先判断用户是否登录,通过session.getAttribute("user") == null,如果为true,则表明用户没有登录,系统跳转到登录页面login.jsp。在login.jsp页面中用户输入用户名和密码,单击“登录”按钮,form表单提交到loginControl.jsp页面,在loginControl.jsp页面判断用户名是否等于admin并且密码等于123456,如果相等,通过内置对象out向浏览器输出一段JavaScript程序(该程序首先在页面上弹出一个登录成功提示对话框,单击确定后,显示欢迎admin),并将loginName通过session.setAttribute()方法保存到session中,在页面最后输出一个“登出”按钮。单击“登出”按钮,页面提交到logout.jsp页面,在logout.jsp页面通过session对象的removeAttribute()方法移除登录用户名,然后跳转到登录页面。

4.application对象

application对象代表Web应用本身,整个Web应用共享一个application对象,该对象主要用于在多个JSP页面或者Servlet之间共享变量。Application对象通过setAttribute()方法将一个值放入某个属性,该属性的值对整个Web 应用有效,因此Web 应用的每个JSP页面或Servlet都可以访问该属性,访问属性的方法为getAttribute()。

由于application 对象在整个Web应用的过程中都有效,因此在application 对象中最适合放置整个应用共享的信息。但由于application 对象生存周期长,因此对于存储在application 对象中的属性对象要及时清理,避免占用太多的服务器资源。

【例2.13】网页访问计数器

(1)在WebContent目录下新建count.jsp页面,页面内容如下所示:

(2)启动Tomcat,在浏览器输入http://localhost:8080/JSP_Demo/count.jsp,程序运行结果如图2.19所示。

图2.19 网页访问计数器

程序说明:

在coun.jsp页面中counter++实现了每次刷新该页面时,该变量都会先自加,并被

设为application的counter属性值,即每次application的counter属性值都会加1,然后实时的将counter属性值输出到浏览器。

注意:application的属性值对于整个系统的JSP、Servlet都是共享的,所以在其他JSP页面也可以通过application对象获取到counter属性值。

5.out对象

out 对象能将特定的数据内容搭配JSP程序代码动态输出到客户端的浏览器。out对象的常用方法如表2.5所示。

表2.5 out对象常用方法

6.exception对象

exception 对象用来处理JSP文件在执行时发生的所有错误和异常。常用的方法有:

(1)getMessage(): 返回错误信息。

(2)printStackTrace():以标准错误的形式输出一个错误和错误的堆栈

(3)toString():以字符串的形式返回一个对异常的描述。

注意:必须在JSP指令中设置isErrorPage为true的情况下才可以使用exception 对象。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈