第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 获取文本框提交的信息: 获取按钮的名字: ,第
5、4章 JSP内置对象,11,在例Example4_2.jsp页面通过表单向自己提交一个正数,然后计算这个数的平方根。表单中的action请求的页面,如果是当前页面,可以用双引号: “代替当前页面,注意双引号中不能含有空格。,Example4_2.jsp,第4章 JSP内置对象,12,4.1.2 处理汉字信息,当用request对象获取客户提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息必须进行特殊的处理方式。 首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串对象即可。 如下列所示:,String str=request.g
6、etParameter(“girl“); 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 常
7、用方法举例,当客户访问一个页面时,会提交一个HTTP请求给服务器的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
8、分别是它们的值,这里host的值是tree2扣p的地址。上面的请求有2个头host和accept-encoding,一个典型的请求通常包含很多的头,有些头是标准的,有些和特定的浏览器有关。,一个请求还包含信息体,即HTML标记组成的部分,也可能包括各式各样用于提交 信息的表单等,如: ,第4章 JSP内置对象,18,可以使用JSP引擎的内置对象request对象来获取客户提交的信息,说明如下: (1)getProtocol() 获取客户向服务器提交信息所使用的通信协议,比如http/1.1等。 (2)getServletPath() 获取客户请求的JSP页面文件的目录。 (3)getConte
9、ntLength() 获取客户提交的整个信息的长度。 (4)getMethod() 获取客户提交信息的方式,比如post或get。 (5)getHeader(String s) 获取HTTP头文件中由参数s指定的头名字的值。(6)getHeaderNames() 获取头名字的一个枚举。 (7)getHeaders(String s) 获取头文件中指定头名字的全部值的一个枚举。 (8)getRemoteAddr() 获取客户的IP地址。 (9)getRemoteHost() 获取客户机的名称(如果获取不到,就获取IP地址)o (10)getServerName() 获取服务器的名称。 (11)g
10、etServerPort() 获取服务器的端口号。 (12)getParameterNames() 获取客户提交的信息体部分中name参数值的一个枚举。,第4章 JSP内置对象,19,Example4_4.jsp tree2.jsp,第4章 JSP内置对象,20,4.1.4 使用Tag文件处理有关数据,Tag文件可以实现代码的复用,这些代码可能是许多JSP页面部需要的。因此我们应当尽量将数据的处理让Tag文件去完成,JSP页面负责使用request对象获取数据,然后使用Tag标记调用Tag文件,并将必要的数据传递给Tag文件。Tag文件负责处理数据,根据需要将处理结果显示给用户或返回给调用它的
11、JSP页面。,在下面的例子5中,用户通过Example4_5.jsp中的表单将三角形三边的长度提交给get.jsp,get.jsp调用Tag文件Triangle.mg计算三角形的面积,Triangle.tag将计算结果返回给get.jsp页面。,第4章 JSP内置对象,21,Example4_5.jsp get.jsp Triangle.tag,第4章 JSP内置对象,22,4.1.5 处理HTML标记,Example4-6.jsp answer.jsp Example4-7.jsp Sum.jsp Example4-8.jsp Example4-9.jsp show.jsp,第4章 JSP内
12、置对象,23,4.2 response对象,当用户访问一个服务器的页面时,会提交一个HTTP请求,服务器收到请求后,返回HTTP响应。响应和请求类似,也有某种结构。每个响应都由状态行开始,可以包含几个头及可能的信息体(网页的结果输出部分)。 前面学习了用request对象获取用户请求提交的信息,与request对象相对应的对象是response对象。可以用response对象对用户的请求做出动态响应,向客户端发送数据。比如,当一个用户请求访问一个JSP页面时,该页面用page指令设置页面的contentType属性的值是text/html,那么JSP引擎将按照这种属性值响应用户对页面的请求,将
13、页面的静态部分返回给用户。如果想动态地改变contentType的属性值就需要用response对象改变页面的这个属性的值,做出动态的响应。,第4章 JSP内置对象,24,request对象是使用非常频繁的对象之一,然而request对象功能的实现离不开response对象的支持,request对象和response对象的结合可以使JSP更好地实现客户端与服务器端的信息交互,下图显示了客户端与服务器端信息交互的流程。,第4章 JSP内置对象,25,4.2.1 动态响应contentType属性,当一个用户请求访问一个JSP页面时,如果该页面用page指令设置页面的contentType属性的值
14、是text/html,那么JSP引擎将按着这种属性值做出响应,将页面的静态部分返回给用户。由于page指令只能为contentType属性指定一个值来决定响应的MIME类型,如果想动态地改变这个属性的值来响应用户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值: public void setContentType(String s),第4章 JSP内置对象,26,在下面的例子10中,当用户单击按钮,选择将当前页面保存为一个Word文档时,JSP页面动态地改变contentType的属性值为application/ms-
15、word。这时,用户的浏览器会提示用户用Ms-Word格式来显示当前页面。,Example4_10.jsp Example4_11.jsp,第4章 JSP内置对象,27,4.2.2 response的HTTP文件头,response对象可以使用方法 addHeader(String head, String value); 或方法 setHeader(String head ,String value) 动态添加新的响应头和头的值,并将这些头发送给用户的浏览器。如果添加的头已经存在,则先前的头被覆盖。,在下面的例子12中,response对象添加一个响应头refresh,其头值是5,那么用户收
16、到这个头之后,5秒钟后将再次刷新该页面,导致该网页每5秒刷新一次。,第4章 JSP内置对象,28,Example4_12.jsp JSP Page ,第4章 JSP内置对象,29,4.2.3 response重定向,在某些情况下,当响应用户时,需要将用户重新引导至另一个页面。例如,如果用户输入的表单信息不完整,就会再次被引导到该表单的输入页面。 可以使用response对象的sendRedirect(URL url)方法实现用户的重定向。,在下面的例子13中,用户在Example4_13.jsp页面填写表单提交给tree.jsp页面,如果填写的表单不完整就会被重新定向到Example4_13.
17、jsp页面。,第4章 JSP内置对象,30,Example4 _13.jsp JSP Page 填写姓名: ,第4章 JSP内置对象,31,tree.jsp ,第4章 JSP内置对象,32,4.2.4 response的状态行,当服务器对用户请求进行响应时,它发送的首行称做状态行。 状态行包括3位数字的状态代码和对状态代码的描述(称做原因短语)。下面列出了对5类状态代码的大概描述。 1yy(1开头的3位数):主要是实验性质的。 2yy:用来表明请求成功的。例如,状态代码200可以表明己成功取得了请求的页面。 3yy:用来表明在请求满足之前应采取进一步的行动。 4yy:当浏览器做出无法满足的请求
18、时,返回该状态代码。例如404表示请求的页面不存在。 5yy:用来表示服务器出现问题。例如,500说明服务器内部发生错误。 我们一般不需要修改状态行,在出现问题时,服务器会自动响应,发送相应的状态代码。我们也可以使用response对象的setStatus(int n)方法来增加状态行的内容。,第4章 JSP内置对象,33,在下面的例子14中,我们使用setStatus(int n)设置响应的状态行来防止本网站的JSP页面被“盗链”。网站就是引擎下管理的一个Web服务目录,“盗链”就是指一个网站在其JSP页面中提供其他网站上资源的超链接。在例子14中,other.jsp存放在Web服务目录ch
19、2中(一个网站);sameWebOne.jsp和sameWebTwo .jsp存放在同一服务目录ch4中(一个网站)。orther.jsp和sameWebOne.jsp都提供了关于sameWebTwo.jsp的超链接,sameWebTwo.jsp允许sameWebOne.jsp通过其中的超链接访问它,但不允许orther.jsp通过其中的超链接访问它(因为orther.jsp和sameWebOne.jsp不在同一个网站中)。,第4章 JSP内置对象,34,sameWebTwo.jsp页面怎样实现自己被“盗链”呢? sameWebTwo.jsp可以使用request对象调用方法: String
20、mess=request.getHeader(“referer“); 获取请求当前页面的其他网站页面上的URL表示,例如,如果请求当前sameWebTwo.jsp的页面是onher.jsp上的超链接,那么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方法返回的信息,决定是否允许其他页面通过超链接访问当前页面,
21、如果不允许访问当前页面,我们就使用response对象的setStatus(int n)方法增加404状态行,告知请求不成功,其他页面就会收到当前页面不可访问的信息。如果允许访问当前页面,就不必修改状态行,使用默认的状态行200(请求成功)即可。,第4章 JSP内置对象,36,orther.jsp 我是ch2服务目录中的页面 单击下面的超链接: 访问sameWebTwo.jsp ,第4章 JSP内置对象,37,sameWebone.jsp 我是ch4服务目录中的页面 单击下面的超链接: 访问sameWebTwo.jsp ,第4章 JSP内置对象,38,sameWebTwo.jsp 欢迎访问本页
22、面! 您来自: ,第4章 JSP内置对象,39,表4.1是状态代码表。,第4章 JSP内置对象,40,4.3 session对象,HTTP协议是一种无状态协议。一个用户向服务器发出请求(request),然后服务器返回响应(response),连接就被关闭了。在服务器端不保留连接的有关信息,因此当下一次连接时,服务器已没有以前的连接信息了,无法判断这一次连接和以前的连接是否属于同一个用户。因此,必须使用会话记录有关连接的信息。,从一个用户打开浏览器连接到服务器的某个Web服务目录,到用户关闭浏览器离开服务器称做一个会话。当一个用户访问一个服务器时,可能会在某个Web服务目录中反复链接几个页面、
23、反复刷新一个页面或不断地向一个页面提交信息等,服务器应当通过某种办法知道这是同一个用户,这就需要session(会话)对象。,第4章 JSP内置对象,41,session对象的作用是记录每个客户端的访问状态,以便跟踪每个客户端的操作状态。session对象被封装为javax.servlet.http.HttpSession接口,通过调用pageContext.getSession()方法可以获取一个session对象。当客户端请求超过一个以上的JSP程序网页时,session对象提供有保存请求时期对象属性的方法,所保存的对象在请求过程中都是有效的。,第4章 JSP内置对象,42,4.3.1 s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JSP 内置 对象 教学
链接地址:https://www.31doc.com/p-2255949.html