




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章 JSP语法之隐式对象,本章主要内容,6.1 简介 6.2 与输入输出有关的隐式对象 6.3 与Servlet有关的隐式对象 6.4 与错误有关的隐式对象 6.5 与作用域通信有关的隐式对象 6.6 属性和范围 6.7 总结 6.8 练习,6.1 简介,JSP隐式对象是Web容器加载的一组类的实例,它不像一般的Java对象那样用“new”去获取实例,而是可以直接在JSP页面使用的对象。 JSP提供的隐式对象分为4个主要类别,下表列出了JSP提供的九个隐式对象及其分类。,6.2 与输入输出有关的隐式对象,6.2.1 request对象 在JSP网页中,request对象是实现javax.servlet.http.HttpServletRequest接口的,HttpServletRequest接口所提供的方法,可以将它分为四大类: 取得请求参数的方法 存取和取得属性的方法 取得请求HTTP标头的方法 其他方法,如:取得请求的URL、IP和session等 最终要的还是要分清取得请求参数的方法,如下表所示,6.2 与输入输出有关的隐式对象,6.2.1 request对象,在这里,我们不再赘述每一个方法,如需使用它们的时候,请查看API帮助。,6.2 与输入输出有关的隐式对象,6.2.2 response对象 response隐式对象处理JSP生成的响应,然后将响应发送给客户端。Response对象是 实现javax.servlet.http.HttpServletResponse接口。其中常用的方法我们介绍如下三个,其它的方法如果需要请查看API帮助。 void setHeader(String name, String value);作用是设定标头。它还有两个类似的方法 void setDateHeader()和void setIntHeader()。我们后边介绍。 首先我们来看设定页面的缓存方式。如果是HTTP/1.0,我们通过如下方式设定 response.setHeader(“Pragma“, “no-cache“);,6.2 与输入输出有关的隐式对象,6.2.2 response对象 如果是HTTP/1.1的情况,我们通过下边方式来设定。 response.setHeader(“Cache-Control“, “no-cache“);,如果我们想让网页自动更新,则要用到setIntHeader()方法和“Refresh”标头,使用方法如下:,response.setIntHeader(“Refresh“, 3);,6.2 与输入输出有关的隐式对象,6.2.2 response对象 void setContentType(String name);作用是设置作为响应生成的内容的类型和字符编码。 void sendRedirect(String name);作用是发送一个响应给浏览器,指示其请求另一个URL。下面我们来看一个实例: 首先,创建response1.jsp,其中用到了上述方法,并重定向到response2.jsp。response1.jsp的代码如例所示。 ,6.2 与输入输出有关的隐式对象, 直接跳转到response2.jsp ,6.2 与输入输出有关的隐式对象,6.2.2 response对象 下面我们来创建response2.jsp。我们在里边显示了response1.jsp中设定的ContentType,并设定每5秒画面自己刷新一次。代码如例所示。 自刷新 ,6.2 与输入输出有关的隐式对象,6.2.2 response对象 response的content类型为: ,6.2 与输入输出有关的隐式对象,6.2.2 response对象 这时,我们看看执行结果,注意底下的刷新条,会不会每5秒刷新一次。如图。,6.2 与输入输出有关的隐式对象,6.2.3 out对象 out对象用于向客户端输出数据 out对象常用方法: print():在页面中打印出字符串信息,6.3 与Servlet有关的隐式对象,6.3.1 page对象 page对象代表JSP本身,更准确地说,它代表JSP被转译后的Servlet,因此,它可以调用Servlet类所定义的变量和方法。它是java.lang.Object类的一个实例。不过,page很少在JSP中使用,一般使用前面学过的page指令即可。例的page.jsp为我们展示了如何通过page对象获得Servlet信息。执行结果如图所示。 ,6.3 与Servlet有关的隐式对象,6.3.1 page对象 page对象 ,6.3 与Servlet有关的隐式对象,6.3.1 page对象 上列运行效果如图所示:,6.3 与Servlet有关的隐式对象,6.3.2 config对象 config对象存储Servlet的一些初始信息与page对象一样很少使用。config对象是javax.servlet.ServletConfig接口的一个实例。下面我们通过一个例子来演示通过config对象来获得web.xml中设定的Servlet初始参数值,6.4 与错误有关的隐式对象,与错误有关的隐式对象只有一个就是exception对象。 JSP页面执行后,会在网页上显示内容。如果执行JSP过程中出现错误,JSP页面的执行就会终止。exception对象就是用于处理JSP页面中的错误。 在这里我们再举一个简单的例子,我们来写一个JSP来做除数为0的计算,并显示出错误信息。 我们先来创建div0.jsp,代码如例所示。,6.4 与错误有关的隐式对象, 除数为0的计算 ,6.4 与错误有关的隐式对象,现在我们来创建异常处理页面div0exception.jsp,代码如例所示。 除数为0的计算错误处理 除数为0错误: ,6.4 与错误有关的隐式对象,注意:作为错误处理对象的JSP必须设定page指令中的isErrorPage属性为“true”。而捕获错误的JSP必须设定page指令中的errorPage属性为处理错误的页面URL。而且,printStackTrace()函数的参数要为PrintWriter而不是JspWriter。 运行结果如图所示。当我们迁移到div0.jsp时发生除数为0错误,直接跳转到处理错误的div0exception.jsp。,6.5 与作用域通信有关的隐式对象,6.5.1 session对象 session对象用来存储有关用户会话的所有信息 session对象常用方法: void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到session中 Object getAttribute(String key):根据名称去获取session中存放对象的值,session.setAttribute(“name“, “admin“);,String name = (String) session.getAttribute(“name“);,6.5 与作用域通信有关的隐式对象,6.5.1 session对象 下面我们就来举一个例子来看看这些方法。sessionfun.jsp代码如例 ,6.5 与作用域通信有关的隐式对象,6.5.1 session对象 session生成时间: session ID: 最后发送请求时间: 最大session不活动时间: 显示存放在session中的值 ,6.5 与作用域通信有关的隐式对象,6.5.1 session对象 在例中,我们往session中存入key为user值为admin的数据对,然后设定session会在5秒没有任何操作的情况下失效。并显示session的ID,生成时间等等的内容。在最下边,有一个连接迁移到另一个页面showsession.jsp中显示session中user:admin的数据对。showsession.jsp代码如例所示 user: 。,6.5 与作用域通信有关的隐式对象,执行结果如图所示。,6.5 与作用域通信有关的隐式对象,此时,我们点击“显示存放在session中的值”链接,页面显示结果如图所示。,6.5 与作用域通信有关的隐式对象,如果在如图6.7的页面中什么操作都不做等5秒以后,再点击“显示存放在session中的值”链接,将得到如图6.9的页面,得到的user值为null,因为session已经过期了。,6.5 与作用域通信有关的隐式对象,6.5.2 application对象 application对象实现javax.servlet.ServletContext接口,它主要功能在于取得或更改Servlet的设定。application对象的生命周期最长,它从服务器启动开始就存在,知道服务器关闭为止。 application类似于系统的“全局变量”,用于实现用户之间的数据共享 application对象的常用方法: void setAttribute(String key, Object value):以键/值的方式,将一个对象的值存放到application中,application.setAttribute(“LOGINED_USER“, new ArrayList();,6.5 与作用域通信有关的隐式对象,6.5.2 application对象 Object getAttribute(String key):根据键去获取application中存放对象的值,if (application.getAttribute(“LOGINED_USER“) != null) List loginedUsers = (List) application.getAttribute(“LOGINED_USER“); ,6.5 与作用域通信有关的隐式对象,6.5.2 application对象 我们来举一个简单的例子来看看这些方法的使用 首先执行setAttribute()方法,设置user:admin, 接着执行getAttribte(“user“)方法, 设置user后: 然后我们执行removeAttribute(“user“), ,6.5 与作用域通信有关的隐式对象,我们再次执行getAttribte(“user“)方法。 删除user后: 获得Srevlet容器版本: Servlet容器最大版本: Servlet容器最小版本: ,6.5 与作用域通信有关的隐式对象,执行结果如图6.10所示。,6.5 与作用域通信有关的隐式对象,6.5.3 pageContext对象 pageContext对象使用户可以访问页面作用域中定义的隐式对象。 pageContext对象也提供方法来访问隐式对象的所有属性,但必须制定范围的参数。它的作用范围仅仅在页面内。 具体方法和用法参见教材89页,6.6 属性和范围,6.6.1 Page范围 JSP中有四种范围:Page、Request、Session和Application。 所谓的Page,指的是只在一个JSP页面中起作用。 若要将数据存入Page范围时,可以用pageContext对象的setAttribute()方法;若要取得Page范围的数据时,可以使用pageContext对象的getAttribute()方法。,6.6 属性和范围,6.6.2 Request范围 接下来我们来看看第二种范围:Request。 Request的范围是指在一个JSP网页发出请求道另一个JSP页面之间,随后,这个属性就失效了。 设定Request范围的属性时可以利用request对象中的setAttribute()和getAttribute()方法。,6.6 属性和范围,6.6.3 Session范围 Session作用范围比Page和Request范围要大,一般只有三种情况,Session范围的属性才会失效: 第一种就是我们设定了session的最大不活动时间,我们在讲解session隐式对象的时候提到过,即在没有任何操作的情况下,多少秒后session对象失效; 第二种是我们在web.xml中设置session过期时间,和第一种效果一样,即在没有任何操作的情况下,超过设定的时间,session对象会失效,和第一种不同的是单位是分钟; 第三种就是关闭浏览器了,这就意味着我们和服务器断线,这样也会让session对象失效。我们设定Session范围同样就是设定session对象的setAttribute()和getAttribute()方法 具体用法请参见教材,6.6 属性和范围,6.6.4 Application范围 Application的作用范围是从服务器一开始执行服务到服务器关闭为止。 Application的范围最大,停留的时间也最长,所以要使用时同session一样要特别注意甚至要限制使用,不然可能会造成服务器负载越来越重而导致服务器崩溃的情况。,6.7 总结,隐式对象分为输入输出对象、作用域通信对象、Servlet对象和错误对象四类。 输入输出对象包括request、response和out;作用域通信对象包括session、application和pageContext;S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年智慧景区园林景观设计与施工综合服务合同
- 2025年金融机构与个人投资者P2P借贷业务合作协议书
- 2025年新型医疗仪器区域代理及市场拓展合作协议
- 2025年度高品质智能家居系统装修材料集中采购专项合同
- 2025年新型医疗产品市场推广与精准广告投放合作协议
- 2025年现代简约风格别墅装修设计施工综合服务合同
- 2025年度终止二手房买卖合同及物业维修基金清算与维护责任协议
- 2025年度低碳环保型商用空调采购及运营管理合同
- 2025年度网络文学作品版权侵权赔偿与免责协议书
- 2025年建筑行业起重机租赁及操作人员资格认证及维护保养合同
- 锂离子电池正极材料研究进展
- 二手房屋买卖物品交接清单
- 技师论文 变频器的维修与保养
- 非标自动化设备项目进度表
- 诊断学教学胸部查体
- 桥梁安全事故案例警示
- YY/T 1095-2015肌电生物反馈仪
- SB/T 10460-2008商用电开水器
- GB/T 9124.1-2019钢制管法兰第1部分:PN系列
- GA 1800.2-2021电力系统治安反恐防范要求第2部分:火力发电企业
- 欣旺集团种禽养殖管理制度手册
评论
0/150
提交评论