第4章 JSP内置对象.doc

上传人:飞****2 文档编号:60225956 上传时间:2022-11-15 格式:DOC 页数:24 大小:816.50KB
返回 下载 相关 举报
第4章 JSP内置对象.doc_第1页
第1页 / 共24页
第4章 JSP内置对象.doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《第4章 JSP内置对象.doc》由会员分享,可在线阅读,更多相关《第4章 JSP内置对象.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第四章、JSP内置对象JSP的内置对象由JSP容器自动为JSP页面提供,可以使用标准的变量来访问这些对象,并且不用编写任何额外的代码,可以在JSP网页中使用。在JPS 2.0规范中定义了以下9个内置对象:request(请求对象)、response(响应对象)、session(会话对象)、application(应用程序对象)、out(输出对象)、page(页面对象)、config(配置对象)、exception(异常对象)、pageContext(页面上下文对象)。在这一章中,我们将对它们进行介绍,并通过示例来介绍它们的具体使用方法。4.1内置对象概述正如第一章所介绍,Web应用程序的特点是

2、每一个JSP文件相当于独立的运行单元,类似于一个独立的应用程序,并由容器(Tomcat)进行统一管理。对于一个实际工程项目来说,不可能只有一张页面,且页面之间存在各类内部数据的实时通信问题,如:把A页面登录数据传递到B页面进行验证;购物车的设计涉及若干页面共享数据问题;公告栏涉及不同用户的数据共享问题。而且,在实际项目中,存在着对各类请求/响应有一些特殊要求等。因此,容器根据规范要求,向用户提供了一些内置对象,用于解决上述问题,并负责对这些对象的管理,包括内置对象的生存期、作用域等。这些内置对象中,request、response对象是在客户端请求一个JSP页面,由容器实时生成并作为服务参数传

3、递给JSP(实际上是servlet),请求/相应结束,由容器回收;session的生成一般是在用户第一进入系统时形成,退出系统时,由容器回收。4.2 request对象request对象最主要的作用在于接收参数,当客户端请求一个JSP页面时,JSP容器会将客户端的请求信息包装在这个request对象,请求信息的内容包括请求的头信息、请求的方式、请求的参数名称和参数值等信息。request对象封装了用户提交的信息,通过调用该对象相应的方法可以获取来自客户端的请求信息,然后做出响应。它是HttpServletRequest类的实例。4.2.1 request对象主要方法序号方 法 名方 法 说 明

4、1 * getAttribute(String name)返回指定属性的属性值2 getAttributeNames()返回所有可用属性名的枚举3 getCharacterEncoding()返回字符编码方式4 getContentLength()返回请求体的长度(以字节数)5 getContentType()得到请求体的MIME类型6 getInputStream()得到请求体中一行的二进制流7 * getParameter(String name)返回name指定参数的参数值8 getParameterNames()返回可用参数名的枚举9 getParameterValues(String

5、 name)返回包含参数name的所有值的数组10 getProtocol()返回请求用的协议类型及版本号11 getServerName()返回接受请求的服务器主机名12 getServerPort()返回服务器接受此请求所用的端口号13 getReader()返回解码过了的请求体14 getRemoteAddr()返回发送此请求的客户端IP地址15 getRemoteHost()返回发送此请求的客户端主机名16 * setAttribute(String key,Object obj)设置属性的属性值17 getRealPath(String path)返回一虚拟路径的真实路径18 get

6、Method()返回客户向服务器传输数据的方式19 getRequestURL()返回发出请求字符串的客户端地址20 * getSession()创建一个session对象表4-1 request对象方法 下面的程序示例了request对象的一些常用方法,通常使用request对象来获得客户端传来的数据。example4_1.jsprequest对象示例一.request对象常用方法请求方式:请求的资源:请求用的协议:请求的文件名:请求的服务器的IP:请求服务器的端口:客户端IP地址:客户端主机名:表单提交来的值:二.使用request获取客户端提交的参数用户名:   密

7、码:  %String str=; if(request.getParameter(username)!=null & request.getParameter(userpass)!=null) Enumeration enumt = request.getParameterNames(); while(enumt.hasMoreElements() str=enumt.nextElement().toString(); out.println(str+:+request.getParameter(str)+); %擅长:VC+ JAVA DELPHI&

8、nbsp;VB %if(request.getParameter(qwe)!=null ) for(int i=0;irequest.getParameterValues(cb).length;i+) out.println(cb+i+: +request.getParameterValues(cb)i +); out.println(request.getParameter(qwe); %执行结果如图4-1所示:图4-14.2.2 request对象的常用技术 1、用getParameter方法获取表单提交信息request对象获取客户提交信息的最常用的方法是getParamete

9、r(String s)。在下面的示例,form.html通过表单向requestForm1.jsp提交用户名和密码信息;requestForm1.jsp通过request对象获取表单提交的信息。form1.html示例代码:姓名:密码: 图4-2requestForm.jsp示例代码:姓名:密码:图4-32、用getParameterValues方法获取表单成组信息通过request对象的getParameterValues方法可以获得指定参数的成组信息,通常在表单的复选框中使用。该方法的原型如下:public String getParameterValues(String str)下面示例

10、中,form2.html表单中有三个复选框,选中复选框后,表单信息提交给requestForm2.jsp,在requestForm2.jsp中使用getParameterValues获取复选框的成组信息并显示。form2.html请选择喜欢的水果:apple banana peach 图4-4requestForm2.jsp % String temp = request.getParameterValues(checkbox); out.println(你喜欢的水果是:); for (int i = 0; i 图4-53、表单信息获取的综合应用下面示例通过request对象中的常用方法获取表

11、单中的各类信息。注意:request对象中获取中文信息经常出现乱码,在requestForm3.jsp中编写了trans方法解决乱码文题。form3.html姓名: 密码: 性别:男 女性格:热情大方 温柔体贴 多愁善感 简介: 城市: 北京 上海 图4-6requestForm3.jsp % String name = trans(request.getParameter(name); String pass = trans(request.getParameter(pass); String sex = trans(request.getParameter(sex); String tem

12、p = request.getParameterValues(checkbox); String xingge=; for (int i = 0; i 姓名: 密码: 性别: 性格: 简介: 城市: 图4-74、利用request传递任意类型对象数据正如上述,request主要用来传递数据的(二个页面之间)。大多数情况下,利用其getParameter()和getParameterValues()方法获取各类表单信息,一般是字符串或字符串数组类型。有时,项目要求传递其它类型值,如,在一个servlet中,通过数据库操作,得到一个学生记录集,以二维数组形式存放,具体可以用ArrayList实现。

13、进一步,把该记录集传递到一JSP页面,用于显示该记录集,此时,就可以利用request的setAttribute(String key,Object obj)和 getAttribute(String key)来设值和取值了。详细代码以后章节会介绍,示意代码如下所示。servletArrayList studentList;/其具体值的获得略。request.setAttribute(“student”,studentList );forward到A.jsp;A.jspArrayList list=(ArrayList)request. getAttribute(“student”);4.3

14、response对象request对象和response对象是相辅相成的,request对象用来得到客户端的信息。 response对象处理服务器端对客户端的一些响应,request用来得到客户端信息,用response处理响应。response对象对客户的请求做出动态的响应,向客户端发送数据。它是HttpServletResponse类的实例。4.3.1 response对象主要方法序号方 法 名方 法 说 明1addCoolie(Cookie coolie)向客户端写入一个cookie2addHeader(String name,String value)添加HTTP文件头3contain

15、sHeader(String name)判断名为name的header文件头是否存在4encodeURL(String url)把sessionId作为URL参数返回到客户端5getOutputStream()获得到客户端的输出流对象6sendError(int)向客户端发送错误信息。如404信息7sendRedirect(String url)重定向请求8setContentType(String type)设置响应的MIME类型9setHeader(String name, String value)设置指定的HTTP文件的头信息值,如果该值已经存在,则新值会覆盖原有的旧值.表4-24.3

16、.2 response对象的常用技术1、使用response对象设置Http文件的头信息这里主要介绍两个方法:setContentType(String type)和setHeader(String name, String value)。setContentType(String s)方法可以动态改变ContentType的属性值,参数s可取text/html、text/plain、application/x-msexcel、application/msworld等。在下面的示例中,当用户选择用world显示文件时,response对象将contentType属性值设置成为applicati

17、on/msworld。同样,当用户选择用excel显示文件时,response对象将contentType属性值设置成为application/ x-msexcel。A.txt34 79 51 9940 69 92 2267 71 85 2072 30 78 3855 61 39 4343 81 10 5536 93 41 99contenttype.html 您想使用什么方式查看文本文件A.txt? response1.jspsetHeader(String name, String value)方法可以添加新的相应头和头的值。下面的示例中response对象添加一个响应头refresh,其

18、头值是“3”。那么客户收到这个头之后,每隔3秒刷新一次页面。response2.jsp现在的时间是:2、使用rssponse实现重定向对于response对象,最常用到的是sendRedirect方法,可以使用这个方法将当前客户端的请求转到其他页面去。相应的代码格式为response.sendRedirect(URL地址);。下面示例中login.html提交姓名到response3.jsp页面,如何提交的姓名为空,需要重定向到login.html页面,否则显示欢迎界面。login.html示例代码:姓名: response3.jsp 注意:用指令和response对象中sendRedirec

19、t方法都可以实现页面的重定向,但二者是有区别的。使用只能在本网站内跳转,且跳转后,在地址栏中,仍然显示以前页面的URL,跳转前后的二个页面属同一个request,用户程序可以用request来设置或传递用户程序数据。但对于response.sendRedirect,则不一样了,它相对前者是绝对跳转,在地址栏中,显示的是跳转后页面的URL,跳转前后的二个页面不属同一个request,当然也可用其它技术手段来保证request为同一个,但这不是本节的讨论范围。对于后者来说,可以跳转到任何一个地址的页面。如:response. sendRedirect(“4.4 session对象session中文

20、是“会话”的意思,指的是客户端与服务器的一次会话过程,以便跟踪每个用户的操作状态。一般情况下,它在第一个JSP页面被装载时由服务器自动创建,并在用户退出应用程序时,由服务器销毁该session对象,完成会话期管理,这也是session的生命周期。服务器为每个访问者都设立一个独立的session对象,用以存储session变量,并且各个访问者的session对象互不干扰。session是HttpSession类的实例。session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来管理客户端信息,因此在实际工程项目中,应该注意慎用session,以免服务器内存溢

21、出。服务器为每个客户端新建一个session时,同时产生一个唯一的sessionID号与session相关联,这个sessionID的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,而且这个sessionID是保存在客户端的cookie中。如果客户端不支持cookie,那么将不能使用session了。但我们可以通过重写URL等技术来保证sessionID的唯一性。session对象用途很广泛,它主要用于网页间数据共享,系统操作安全等方面。4.4.1 session对象主要方法序号方 法 名方 法 说 明1getAttribute( String name )获取与指定名字相关联的se

22、ssion属性值2getAttributeNames()取得session内所有属性的集合3getCreationTime()返回SESSION创建时间,最小单位千分之一秒4getId()返回SESSION创建时JSP引擎为它设的惟一ID号5getLastAccessedTime()返回此SESSION里客户端最后一次访问时间6getMaxInactiveInterval()返回两次请求间隔多长时间,以秒为单位7getValueNames()返回一个包含此SESSION中所有可用属性的数组8invalidate()取消SESSION,使SESSION不可用9isNew()返回服务器创建的一个S

23、ESSION,客户端是否已经加入10removeValue(String name)删除SESSION中指定的属性11setAttribute( String name, Object value )设置指定名称的session属性值12setMaxInactiveInterval()设置两次请求间隔时间, 以秒为单位表 4-34.4.2 session对象的常用技术1、session对象的常用方法 下面这个程序用到了session的一些常用方法,代码如下:simple.jspsession对象示例session的创建时间:  session的Id号:客户端最近一次请求时间

24、:  两次请求间隔多长时间此SESSION被取消(ms):是否是新创建的一个SESSION:%for (int i = 0; i 以上程序显示了如何获知session的创建时间,session的id号以及session的存活周期等,执行结果如下图所示:图4-82、setAttribute与getAttribute方法setAttribute与getAttribute方法是session对象最常用的方法,其原型如下:l void setAttribute(String name,Object value):以键/值的方式,将一个对象的值存放到session 中。l Objec

25、t getAttribute(String name):获取session对象中含有关键字是key的对象。该方法取回对象时应强制转化为原来的类型。下面的示例是一个猜数字得小游戏。当用户访问session.jsp时,随机分配给用户一个 1到100之间的数,然后将这个数存在用户的session对象中。用户在表单中输入一个数,来猜测随机数,提交给result.jsp。如果猜测的数与session对象中存放的数匹配,链接到success.jsp,否则链接到large.jsp或small.jsp,然后用户在这些页面再重新提交数字到result.jsp。session.jsp:随机分给了你一个1到100之间的数,请猜! 输入你的所猜的数 图4-9resu

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁