




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5章 JSP内置对象,JSP内置对象概述,为简化Web页面的开发过程,JSP提供了一些由容器实现和管理的内置对象。 JSP页面的内置对象就是在JSP页面中不用声明就可以直接使用的对象,它们是由JSP引擎自动创建的Java类实例。 它们能与Servlet环境交互。内置对象可以实现很多功能,如从客户端获得数据、向客户端发回数据、控制传输数据的有效域和异常处理等。如:,JSP中的9种内置对象,与输入/输出有关,与属性作用域有关,与Servlet 相关,与错误处理有关,与输入/输出有关的内置对象,request对象 response对象 out对象,request对象,在JSP页面中,内置对象request代表的是来自客户端的请求,通过它可以查看请求参数、请求类型以及请求的HTTP头等客户端信息 。 request对象是实现 javax.servlet.HttpServletRequest 接口的类的一个实例。 request对象在一次请求内有效。 request 对象的方法有很多 ,从功能角度可以将这些方法分为4类:,1取得请求参数的方法,2.取得请求HTTP 头的方法,3储存和取得属性方法,4其他的方法,4其他的方法(续),request比较重要的方法,getParameter() getParameterNames() getParameterValues() getHeader(),例: 获得客户端提交的信息,题目: 一个html文档exa5_1.jsp提交一个表单给tree.jsp 页面,tree.jsp通过request.getParameter() 接收表单中的客户输入,并将有关信息送回客户端。, 文本框提交的用户名为: 客户端提交的按钮的名字为: ,exa5_1.jsp tree.jsp,1.运行,2.调用,3.结果,表单提交的汉字问题,由于客户端和服务器用GB2312编码,而HTTP协议传输时默认编码用ISO8859_1,因此,不仅服务器端必须用指令指示客户端汉字的显示编码,同时在服务器端接收到客户端数据时需要将编码转换为GB2312后进行处理。,表单提交的汉字问题,获取客户提交的汉字字符时,会出现乱码问题,必须进行处理。 方法1: 将获取的ISO_8859_1编码的字符串放到一个字节数组中,再以字节数组为参数构造一个字符串对象。 示例: String str=request.getParameter(“username”); byte b=str.getBytes(“ISO-8859-1”); str=new String(b); 或 user =new String(username.getBytes(“ISO8859_1”), “gb2312”); 方法2: 通过调用request对象的setCharacterEncoding()方法,设置requst对象字符编码 示例: % request.setCharacterEncoding(“GB2312”);,更简单!,改进后的tree.jsp,要正确显示表单中输入的中文,我们只需在tree.jsp中将: String textContent=request.getParameter(“username”); 换成:,或:,JSP中处理中文信息总结,JSP页面的汉字问题主要指三方面: 1)JSP源程序中的汉字编码 通过page指令设置 pageEncoding属性为GB2312 2)客户端内容的汉字编码 通过page指令设置 contentType属性的charset为GB2312 3)客户端提交信息的汉字编码 通过调用request对象的setCharacterEncoding()方法,或 先将获取的字符串放到字节数组中,再以字节数组构造字符串对象。,避免空指针异常,使用request对象获取信息要小心,要避免使用空对象(参数值为空值),否则会出现NullPointerException异常。 例1:获取姓名 String username =request.getParameter(“username“); if (username =null) username =“ “; 例2:获取数值 String textContent=request.getParameter(“num”); if ( textContent=null ) textContent=“100“; number=Double.parseDouble(textContent),其它常用方法,getServletPath() getContentLength() getMethod() getHeader( ) getProtocol() ,理解并调试教材p105,例5-2,熟悉request对象相关方法的使用!,课堂练习,设计登陆页面a.jsp,让用户输入用户名、密码。当用户完成输入,并按下“提交”按钮后,进入b.jsp页面,在b.jsp页面中显示刚刚用户输入的用户名、密码等信息。(要求可以实现中文信息输入,并考虑空值处理) 理解并调试教材p105,例5-2,熟悉request对象相关方法的使用!,response对象,response对象是javax.servlet.HttpServletResponse类的实例,它封装了所有返回到HTTP客户端的输出,然后被发送到客户端以响应客户的请求。 response对象在一次响应内有效. response对象包含了响应客户请求的有关信息,使用response对象可以动态响应contentType属性,设定和获取HTTP响应头信息,实现客户的重定向等。 response对象的方法也有很多, 可按如下分类 :,设定表头的方法,设定响应状态码的方法,用来URL 重写的方法,其它方法,response比较重要的方法,response对象中使用较多的方法是: setContentType() sendRedirect() setHeader(),动态设置MIME类型,用page指令只能为contentType指定一个值,如果想动态地改变这个属性的值来以各种不同的方式做出响应,就要使用response对象的setContentType()方法来动态改变contentType的值。 一旦这个属性值被改变,服务器就将按照新的MIME类型做出响应 。,MIME(Multipurpose Internet Mail Extensions): MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。,contentType属性和MIME类型的对应关系,例:动态设置MIME类型,题目: a.jsp显示如左图,它将请求提交给b.jsp, b.jsp动态设定contentType的属性值为“application/msword”或“application/x-msexcel”,用来把动态包含进来的A.txt文档显示为Word 形式或Excel电子表格形式。如:若选择了Word,运行效果如右图:, 您想使用什么方式查看文本文件A.txt? ,a.jsp,b.jsp,A.txt,A.txt文档内容如上图,注意,编辑A.txt时,回车要用表示。为能用Excel正确表示文件,数据列间要有4格空格。,Response页面重定向,页面重定向 在响应客户端请求时,有时需要将客户重新定向到另一个页面,使用response对象的sendRedirect()方法可以使当前页面重定向到另外的JSP程序或者HTML文件中,功能和动作元素类似。 使用格式为: response.sendRedirect(URL); /其中:URL可以为相对路径,也可为绝对路径。,例:Response页面重定向,客户在a.jsp中填写表单,并提交给b.jsp页面。如果表单信息填写不完整(姓名为空),b.jsp会重新定向到填写页面a.jsp,否则显示欢迎字样,运行结果如下图 :,a.jsp: 填写姓名: b.jsp: ,课堂练习,改造前面”动态设置MIME类型”例子, 使可选类型除了word、 excel,还有html,如下图: 设计登陆页面a.jsp,让用户输入用户名、密码。当用户完成输入,并按下“提交”按钮后,进入success.jsp页面进行判断,若用户名及密码正确,则显示欢迎信息;若用户名或密码有错,则转至failed.jsp页面, 提示输入信息不正确,并显示“返回”按钮,当用户点击该按钮后,重新回到a.jsp登录页面。(要求用response对象的页面重定向sendRedirect() 方法实现),out对象,out对象代表JSP 页面的输出流,主要用来向客户端输出各种格式的数据,它是javax.servlet.jsp.JspWriter 的实例。 常用方法有: void print(变量或字面值)throws IOException/可以输出基本数据类型或字符串 void println(变量或字面值)throws IOException /换行 void newLine() throws IOException /换行 void write(String str) void flush() /输出缓冲区里的数据 void clear() /清除输出缓冲区的内容,不将数据输出到客户端 void clearBuffer() /清除输出缓冲区的内容,并将数据输出到客户端 int getBufferSize( ) /取得目前缓冲区的大小,单位为KB,out对象,print()和println()方法可用来输出各种数据到客户端,如Java基本类型数据、字符串及对象等。两者的区别是: print()方法在输出完毕后并不换行,而println()方法在输出完毕后会自动换行,但println()方法不会在客户端网页上产生换行的效果(字串长度超过浏览器视窗的宽度时会自动换行),而是在查看源文件时才会看到换行的效果。newline()方法的换行和println()类似。 若要在网页上实现换行,必须使用HTML标签,可以使用print()方法或println()方法输出。,例:Out对象, javax.servlet.jsp.JspWriter - out BufferSize : Available : Used : ,因为在每个页面中都用到out对象,因此在这儿仅举一个例子再展示一下out对象的主要方法。Out.jsp显示目前缓冲区的大小 。运行结果如图所示,与属性作用域有关的对象,session对象 application对象 pageContext对象,session对象,当一个客户访问某个服务器时,可能会在这个服务器的几个页面之间反复连接或不断的向同一个页面提交信息,服务器应当通过某种办法知道这是同一个客户的操作,这就需要session对象。 session对象存储一个用户会话过程中的信息。会话指一个用户打开浏览器连接到服务器开始,到客户关闭浏览器离开这个服务器结束。 session对象用来保存每个用户的信息,以便跟踪每个用户的操作状态,实现会话状态的维持。session对象一般在需要在不同的JSP页面中记录用户信息、传递共享数据的情况下使用。 session对象是javax.servlet.http.HttpSession类的一个实例 每个session对象在服务器端存在一个唯一的标识:会话ID.,session对象的主要方法,session对象的ID标识,客户首次访问服务器上的JSP页面时,JSP引擎产生session对象,并分配给它一个String类型的ID,并将其发送到客户端存入Cookie中,这样session对象和客户端之间建立了一一对应关系,客户在该服务器不同网页间转换或从其他服务器回到该服务器时,不分配给客户新的session,直到客户关闭浏览器,分配给客户的session对象被取消。,例:Session与ID的一一对应关系,题目:打开浏览器后,客户在三个页面id1.jsp、id2.jsp和id3.jsp之间进行链接,只要不关闭浏览器,三个页面的session对象完全相同(这可从三个页面中得到的session ID完全一样证明)。运行结果如下图:,例: Session与ID的一一对应关系,id1.jsp代码:/id2.jsp和id3.jsp代码与之类似 您的session对象的ID是: 单击超连接,可到id2页面 欢迎到id2页面来。 ,补充:锚标签和 Href 属性 HTML 使用 (锚)标签来创建连接另一个文档的链接。 创建锚的语法: Text to be displayed 用来创建锚。href 属性用于定位需要链接的文档。锚的开始标签和结束标签之间的文字被作为超级链接来显示。 例:这个锚定义了指向 w3school 的链接: Visit W3School!,课堂练习,完成并扩充上例:增加输出的session对象信息,运行结果如下图:,提示: 1)新增输出的session对象信息要用到session对象的如下方法:isNew()、getCreationTime()、getLastAccessedTime(),可参考教材p111,例5-5。 2)Date对象的格式化输出需用到SimpleDateFormat类对象,可参考PPT3.3常用类,在session对象中通过属性保存数据,保存和获得session对象中的数据是JSP页面常做的工作,需要使用getAttribute()和setAttribute()方法。 下面例子在a.jsp中设置 “用户名“属性,在b.jsp中读取 “用户名”属性。(a.jsp和b.jsp两个文件通过超链接可相互到达),在session对象中通过属性保存数据,a.jsp session对象设置属性 会话ID : 去b.jsp ,b.Jsp /关键代码 会话ID : 获取属性”用户名“:用户名= 去a.jsp ,课堂练习,对上例进行改进,在a.jsp中增加“颜色”、“字号”属性的设置,用以控制b.jsp页面中的背景颜色和字号,运行如下图:,课堂练习,提示1:背景颜色和字体大小设置的HTML标签用法 。 提示2: session对象的属性值只能是对象(object),若要存放普通数值,则必须先将数值通过数据类型包装包装成类对象后再存放,如session.setAttribute(“test”,new Integer(1);同样,获取session对象某属性的值时,得到的属性值也均是Object类型,若要赋给某一具体变量,则需进行类型的强制转换。如本例要进行如下转换: ,课堂练习,猜数字游戏,guessNumber.jsp,small.jsp,large.jsp,guessNumber.jsp,另外还需一个result.jsp做判断,Result.jsp关键代码,% String str=request.getParameter(“inputno“); if(str=null) str=“0“; int guessNumber=Integer.parseInt(str);/取得所猜得数 /取得并转换随机生成的数,以下二行可简写为一行 /Integer i=(Integer)session.getAttribute(“save“); / int realnumber=Value(); int realnumber=(Integer)session.getAttribute(“save“); if(guessNumber=realnumber) int n=(Integer)session.getAttribute(“count“); n+; /session.setAttribute(“count“,new Integer(n);/正规写法 session.setAttribute(“count“,n);/int可被自动包装为Integer对象 response.sendRedirect(“success.jsp“); ,else if(guessNumberrealnumber) int n=(Integer)session.getAttribute(“count“); n+; session.setAttribute(“count“,n); response.sendRedirect(“large.jsp“); else if(guessNumber,application对象,application对象在应用范围内有效,即WEB服务器启动到停止范围内有效。服务器一旦启动,就会自动产生一个application对象,除非服务器被关闭,否则这个application对象将一直存在。 在整个JSP服务运行中只有一个application对象,服务器上的所有客户共享一个apllication对象,每个用户的application对象都是相同的。 若某一客户修改了application中存放的信息,则其它客户访问的数据也会受影响。 application对象用于保存应用系统中的公有数据,实现用户间数据的共享。 Application对象是javax.servlet.ServletContext类的实例,若有些地方不支持直接使用application对象,可通过如下语句声明并初始化对象,然后使用: ServletContext application; application =getServletContext();,application对象的常用方法,application对象的常用方法,Application对象的setAttribute()及getAttribute()方法的使用和session对象的相似,只不过applictaion对象保存的属性值是在所有用户间共享(生命周期更长,存在于整个服务器运行期间)。,例: 用application对象制作留言板,客户在messageForm.jsp中输入姓名、留言标题和留言内容。 这些信息提交给messageHandle.jsp 。该页面将客户信息存入向量,并将向量存放在application对象中。 当查看留言板时, showMessage.jsp负责从application对象中取出向量,并遍历向量显示其中的所有留言。,messageForm.jsp,messageHandle.jsp,showMessage.jsp,程序界面:, 输入您的名字: 输入您的留言标题: 输入您的留言: ,messageForm.jsp, “+s);/将字符串添加到向量中 /添加后的向量已改变,刷新application的Mess属性 application.setAttribute(“Mess“,v); % “+“标题:“+title+“+“内容:“+“+messages; sendMessage(s); /调用自定义方法,将一条留言加入向量中 out.print(“您的信息已经提交!“);/
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年无人机考试题库和部份考题带答案(典型题)
- 小儿视网膜母细胞瘤E期护理查房
- 安丘市2024-2025学年八年级下学期语文期中模拟试卷
- 2016年7月国开电大法律事务专科《行政法与行政诉讼法》期末纸质考试试题及答案
- 七夕主题活动总结2025年
- 广东省2025年下半年电机装配工:基础理论试题
- 社区网格化管理课件
- 江苏省无锡金桥双语实验学校2024-2025学年九年级下学期期中考试英语试卷(含答案)
- Unit 2 School life单元测试卷(含解析)译林版(2024)八年级英语上册
- 岩石基坑开槽合同范本
- 临床实验中不良事件的管理
- 如何开展课题研究
- 炼钢厂电工应知应会考试题库500题(含各题型)
- bc-6800产品中心医院
- GB/T 5069-2007镁铝系耐火材料化学分析方法
- GB/T 40565.2-2021液压传动连接快换接头第2部分:20 MPa~31.5 MPa平面型
- GB/T 11446.10-1997电子级水中细菌总数的滤膜培养测试方法
- 旅游区奖惩制度管理办法
- 儿童生长发育监测课件
- 实验室病原微生物危害 评估报告
- 科技项目申报专员系列培训(技术攻关项目)
评论
0/150
提交评论