第4章JSP内置对象(教学).ppt
《第4章JSP内置对象(教学).ppt》由会员分享,可在线阅读,更多相关《第4章JSP内置对象(教学).ppt(72页珍藏版)》请在三一办公上搜索。
1、第4章 JSP内置对象,1,第4章 JSP内置对象,第4章 JSP内置对象,2,主要内容,4.1 request对象4.2 response对象4.3 session对象4.4 out对象4.5 application对象,第4章 JSP内置对象,3,1.JSP内建对象概述,JSP规范中定义了9种内建对象,它们分别为request、response、out、session、application、config、pageContext、page和exception,在JSP中并不需要编写任何额外的代码就可以自动使用这些内建对象。其中网页输出对象out和包含客户端请求信息的response对象是最
2、基本的对象。out对象可以在Java代码中轻松地输出网页内容,而不必将HTML语法和属于JSP程序的部分区分开来。而request对象则包含了所有关于客户端的信息,只有通过该对象才能取得客户端传送过来的信息,第4章 JSP内置对象,4,JSP内部对象与对应Servlet API的关系,第4章 JSP内置对象,5,4.1 request对象,交互性是动态网页的基本功能。交互性可简单地理解为Server与Client之间相互作用、相互传递信息。JSP是实现动态网页的强大技术,request对象便是JSP实现交互性的一个重要内部对象。request对象负责向服务器传递客户端的信息,这是实现交互的基础
3、,只有通过它,服务器才能了解客户端的需求,然后才能依此做出响应。,第4章 JSP内置对象,6,JSP页面运行过程中。首先,JSP引擎把存放在request内部对象中的数据发到JSP页面 指定的服务器的组件(JavaBeans组件,Servlet或者Enterprise bean),组件收到这些数据以后,可能将这些数据保存到数据库或者其他地方(这时,页面包含了定义好的格式和从服务器端得到的数据)。然后,JSP引擎和Web服务器再发送一个整理好的完整页面给客户,客户通过浏览器就可以看到的这个完整页面运行结果。客户和服务器间的通信协议通常使用HTTP,当然也可以使用其他协议。,第4章 JSP内置对象
4、,7,要提交数据常需使用表单。表单常由三部分组成:标签、输入方法和发送数据到服务器的提交按钮。标识的主要作用是设定表单的起止位置并指定处理表单数据程序的URL地址以及表单数据的提交方法,其语法如下:,第4章 JSP内置对象,8,request对象可以使用getParameter(String s)方法获取该表单通过text提交的信息,比如:request.getParameter(boy);,第4章 JSP内置对象,9,4.1.1 获取客户提交的信息,Example4_1.jsp,第4章 JSP内置对象,10,tree.jsp 获取文本框提交的信息:获取按钮的名字:,第4章 JSP内置对象,1
5、1,在例Example4_2.jsp页面通过表单向自己提交一个正数,然后计算这个数的平方根。表单中的action请求的页面,如果是当前页面,可以用双引号:代替当前页面,注意双引号中不能含有空格。,Example4_2.jsp,第4章 JSP内置对象,12,4.1.2 处理汉字信息,当用request对象获取客户提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息必须进行特殊的处理方式。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串对象即可。如下列所示:,String str=request.getParameter(girl
6、);byte b=str.getBytes(IS0-8859-1);str=new String(b);,第4章 JSP内置对象,13,通过上述过程,提交的任何信息(无论是汉字字符或西欧字符)都能正确地显示。下面的例子3对例子1按上述办法做了改动,并将按钮上的字变成汉字,在文本框里输入“苹果:apple:12斤5$”,然后提交给tree.jsp。,第4章 JSP内置对象,14,Example4_3.jsp,第4章 JSP内置对象,15,tree.jsp 获取文本框提交的信息:获取按钮的名字:,第4章 JSP内置对象,16,4.1.3 常用方法举例,当客户访问一个页面时,会提交一个HTTP请求给
7、服务器的JSP引擎,这个请求包括一个请求行、http头和信息体,例如:post/tree2.j sp/HTTP.1.1 host:localhost:8080 accept-encoding-gzip,deflate 其中首行叫请求行,规定了向访问的页面请求提交信息的方式,如post、get等方式,以及请求的页面的文件名字和使用的通信协议。,第4章 JSP内置对象,17,第2、3行分别是两个头(Header),其中host、accept-encoding被称为头名字,而localhost:8080以及gzip、deflate分别是它们的值,这里host的值是tree2扣p的地址。上面的请求有2
8、个头host和accept-encoding,一个典型的请求通常包含很多的头,有些头是标准的,有些和特定的浏览器有关。,一个请求还包含信息体,即HTML标记组成的部分,也可能包括各式各样用于提交 信息的表单等,如:,第4章 JSP内置对象,18,可以使用JSP引擎的内置对象request对象来获取客户提交的信息,说明如下:(1)getProtocol()获取客户向服务器提交信息所使用的通信协议,比如http/1.1等。(2)getServletPath()获取客户请求的JSP页面文件的目录。(3)getContentLength()获取客户提交的整个信息的长度。(4)getMethod()获取
9、客户提交信息的方式,比如post或get。(5)getHeader(String s)获取HTTP头文件中由参数s指定的头名字的值。(6)getHeaderNames()获取头名字的一个枚举。(7)getHeaders(String s)获取头文件中指定头名字的全部值的一个枚举。(8)getRemoteAddr()获取客户的IP地址。(9)getRemoteHost()获取客户机的名称(如果获取不到,就获取IP地址)o(10)getServerName()获取服务器的名称。(11)getServerPort()获取服务器的端口号。(12)getParameterNames()获取客户提交的信息
10、体部分中name参数值的一个枚举。,第4章 JSP内置对象,19,Example4_4.jsptree2.jsp,第4章 JSP内置对象,20,4.1.4 使用Tag文件处理有关数据,Tag文件可以实现代码的复用,这些代码可能是许多JSP页面部需要的。因此我们应当尽量将数据的处理让Tag文件去完成,JSP页面负责使用request对象获取数据,然后使用Tag标记调用Tag文件,并将必要的数据传递给Tag文件。Tag文件负责处理数据,根据需要将处理结果显示给用户或返回给调用它的JSP页面。,在下面的例子5中,用户通过Example4_5.jsp中的表单将三角形三边的长度提交给get.jsp,ge
11、t.jsp调用Tag文件Triangle.mg计算三角形的面积,Triangle.tag将计算结果返回给get.jsp页面。,第4章 JSP内置对象,21,Example4_5.jspget.jspTriangle.tag,第4章 JSP内置对象,22,4.1.5 处理HTML标记,Example4-6.jspanswer.jspExample4-7.jspSum.jspExample4-8.jspExample4-9.jspshow.jsp,第4章 JSP内置对象,23,4.2 response对象,当用户访问一个服务器的页面时,会提交一个HTTP请求,服务器收到请求后,返回HTTP响应。响
12、应和请求类似,也有某种结构。每个响应都由状态行开始,可以包含几个头及可能的信息体(网页的结果输出部分)。前面学习了用request对象获取用户请求提交的信息,与request对象相对应的对象是response对象。可以用response对象对用户的请求做出动态响应,向客户端发送数据。比如,当一个用户请求访问一个JSP页面时,该页面用page指令设置页面的contentType属性的值是text/html,那么JSP引擎将按照这种属性值响应用户对页面的请求,将页面的静态部分返回给用户。如果想动态地改变contentType的属性值就需要用response对象改变页面的这个属性的值,做出动态的响应
13、。,第4章 JSP内置对象,24,request对象是使用非常频繁的对象之一,然而request对象功能的实现离不开response对象的支持,request对象和response对象的结合可以使JSP更好地实现客户端与服务器端的信息交互,下图显示了客户端与服务器端信息交互的流程。,第4章 JSP内置对象,25,4.2.1 动态响应contentType属性,当一个用户请求访问一个JSP页面时,如果该页面用page指令设置页面的contentType属性的值是text/html,那么JSP引擎将按着这种属性值做出响应,将页面的静态部分返回给用户。由于page指令只能为contentType属性
14、指定一个值来决定响应的MIME类型,如果想动态地改变这个属性的值来响应用户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值:public void setContentType(String s),第4章 JSP内置对象,26,在下面的例子10中,当用户单击按钮,选择将当前页面保存为一个Word文档时,JSP页面动态地改变contentType的属性值为application/ms-word。这时,用户的浏览器会提示用户用Ms-Word格式来显示当前页面。,Example4_10.jspExample4_11.jsp,第
15、4章 JSP内置对象,27,4.2.2 response的HTTP文件头,response对象可以使用方法 addHeader(String head,String value);或方法 setHeader(String head,String value)动态添加新的响应头和头的值,并将这些头发送给用户的浏览器。如果添加的头已经存在,则先前的头被覆盖。,在下面的例子12中,response对象添加一个响应头refresh,其头值是5,那么用户收到这个头之后,5秒钟后将再次刷新该页面,导致该网页每5秒刷新一次。,第4章 JSP内置对象,28,Example4_12.jsp JSP Page,第
16、4章 JSP内置对象,29,4.2.3 response重定向,在某些情况下,当响应用户时,需要将用户重新引导至另一个页面。例如,如果用户输入的表单信息不完整,就会再次被引导到该表单的输入页面。可以使用response对象的sendRedirect(URL url)方法实现用户的重定向。,在下面的例子13中,用户在Example4_13.jsp页面填写表单提交给tree.jsp页面,如果填写的表单不完整就会被重新定向到Example4_13.jsp页面。,第4章 JSP内置对象,30,Example4 _13.jsp JSP Page 填写姓名:,第4章 JSP内置对象,31,tree.jsp
17、,第4章 JSP内置对象,32,4.2.4 response的状态行,当服务器对用户请求进行响应时,它发送的首行称做状态行。状态行包括3位数字的状态代码和对状态代码的描述(称做原因短语)。下面列出了对5类状态代码的大概描述。1yy(1开头的3位数):主要是实验性质的。2yy:用来表明请求成功的。例如,状态代码200可以表明己成功取得了请求的页面。3yy:用来表明在请求满足之前应采取进一步的行动。4yy:当浏览器做出无法满足的请求时,返回该状态代码。例如404表示请求的页面不存在。5yy:用来表示服务器出现问题。例如,500说明服务器内部发生错误。我们一般不需要修改状态行,在出现问题时,服务器会
18、自动响应,发送相应的状态代码。我们也可以使用response对象的setStatus(int n)方法来增加状态行的内容。,第4章 JSP内置对象,33,在下面的例子14中,我们使用setStatus(int n)设置响应的状态行来防止本网站的JSP页面被“盗链”。网站就是引擎下管理的一个Web服务目录,“盗链”就是指一个网站在其JSP页面中提供其他网站上资源的超链接。在例子14中,other.jsp存放在Web服务目录ch2中(一个网站);sameWebOne.jsp和sameWebTwo.jsp存放在同一服务目录ch4中(一个网站)。orther.jsp和sameWebOne.jsp都提供
19、了关于sameWebTwo.jsp的超链接,sameWebTwo.jsp允许sameWebOne.jsp通过其中的超链接访问它,但不允许orther.jsp通过其中的超链接访问它(因为orther.jsp和sameWebOne.jsp不在同一个网站中)。,第4章 JSP内置对象,34,sameWebTwo.jsp页面怎样实现自己被“盗链”呢?sameWebTwo.jsp可以使用request对象调用方法:String mess=request.getHeader(referer);获取请求当前页面的其他网站页面上的URL表示,例如,如果请求当前sameWebTwo.jsp的页面是onher.j
20、sp上的超链接,那么mess就是:http:/127.0.0.1:8080/ch3/orther.jsp 如果请求当前sameWebTwo.jsp的页面是orther.jsp上的超链接,那么mess就是:http:/127.0.0.1:8080/ch4/sameWebOne.jsp,第4章 JSP内置对象,35,这样,我们就可以通过getHead方法返回的信息,决定是否允许其他页面通过超链接访问当前页面,如果不允许访问当前页面,我们就使用response对象的setStatus(int n)方法增加404状态行,告知请求不成功,其他页面就会收到当前页面不可访问的信息。如果允许访问当前页面,就不
21、必修改状态行,使用默认的状态行200(请求成功)即可。,第4章 JSP内置对象,36,orther.jsp 我是ch2服务目录中的页面 单击下面的超链接:访问sameWebTwo.jsp,第4章 JSP内置对象,37,sameWebone.jsp 我是ch4服务目录中的页面 单击下面的超链接:访问sameWebTwo.jsp,第4章 JSP内置对象,38,sameWebTwo.jsp 欢迎访问本页面!您来自:,第4章 JSP内置对象,39,表4.1是状态代码表。,第4章 JSP内置对象,40,4.3 session对象,HTTP协议是一种无状态协议。一个用户向服务器发出请求(request),
22、然后服务器返回响应(response),连接就被关闭了。在服务器端不保留连接的有关信息,因此当下一次连接时,服务器已没有以前的连接信息了,无法判断这一次连接和以前的连接是否属于同一个用户。因此,必须使用会话记录有关连接的信息。,从一个用户打开浏览器连接到服务器的某个Web服务目录,到用户关闭浏览器离开服务器称做一个会话。当一个用户访问一个服务器时,可能会在某个Web服务目录中反复链接几个页面、反复刷新一个页面或不断地向一个页面提交信息等,服务器应当通过某种办法知道这是同一个用户,这就需要session(会话)对象。,第4章 JSP内置对象,41,session对象的作用是记录每个客户端的访问状
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSP 内置 对象 教学
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5909356.html