第04章JSP内置对象详解.ppt

上传人:本田雅阁 文档编号:3417322 上传时间:2019-08-23 格式:PPT 页数:70 大小:576.54KB
返回 下载 相关 举报
第04章JSP内置对象详解.ppt_第1页
第1页 / 共70页
第04章JSP内置对象详解.ppt_第2页
第2页 / 共70页
第04章JSP内置对象详解.ppt_第3页
第3页 / 共70页
第04章JSP内置对象详解.ppt_第4页
第4页 / 共70页
第04章JSP内置对象详解.ppt_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《第04章JSP内置对象详解.ppt》由会员分享,可在线阅读,更多相关《第04章JSP内置对象详解.ppt(70页珍藏版)》请在三一文库上搜索。

1、第4章 JSP内置对象详解,Jsp基础,熟练掌握,为什么叫JSP内置对象,不用声明就可以在jsp页面的脚本部分使用。,第4章 JSP内置对象详解,4.1 请求对象:request,4.2 响应对象:response,4.3 会话对象:session,4.4 多客户端共享对象:application,4.5 页面对象:page,第4章 JSP内置对象详解,4.6 页面上下文对象:pageContext,4.7 输出对象:out,4.8 配置对象:config,4.9 异常对象:exception,http协议的运行过程,WWW协议(World Wide Web) 使用浏览器从网站获取HTTP页面

2、时,使用HTTP(Hypertext Transfer Protocol)协议规定信息在Internet上的传输方法,特别规定了浏览器与服务器的交互方法。 从网站获取页面时,首先浏览器在网站上打开一个对网络服务器的连接,并发出请求,服务器收到请求后响应,返回结果。,HTTP请求的结构,包括请求行、头域和可能的信息体 例: GET/hello.htm HTTP/1.1 Host:,一个典型的请求包含许多HTTP请求头。头提供了关于信息体的附加信息及请求的来源,其中有些头是标准的,有些头和特定的浏览器有关。 请求还可能包含信息体。如表单内容。,Accept:浏览器可接受的MIME类型。 Accep

3、t-Charset:浏览器可接受的字符集。 Accept-Encoding:浏览器能够进行解码的数据编码方式,如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。许多情形下这可以减少5到10倍的下载时间。 Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。 Content-Length:表示请求消息的正文长度。 Cookie:这是最重要的请求头信息之一。 From:请求发送者的email地址,有一些特殊的web客户程序使用,浏览器不会用到它。 Host:初始URL中的主机和端口。 Referer:包含一个URL

4、,用户从该URL代表的页面出发访问当前请求的页面。 User-Agent:浏览器类型,如servlet返回内容与浏览器类型有关则该值非常有用。 UA=Pixel,UA-Color,UA-OS,UA-CPU:由某些版本的IE浏览器所发送的非标准的请求头,表示屏幕大小、颜色深度、操作系统和CPU类型。,HTTP响应的结构,每个响应都由状态行开始,可以包含几个头及可能的信息体,称作响应的HTTP头和响应信息体。 这些头和信息体由服务器发送给客户的浏览器,信息体就是客户请求的网页的运行结果,对于JSP页面,就是网页的静态信息。,4.1 请求对象:request,内置对象request封装了用户提交的信

5、息。该对象调用相应的方法可以获得封装的信息。 客户一般使用HTML表单向服务器的某个JSP页面提交信息。 例: 提交的手段 ,4.1 请求对象:request,4.1.1 获取请求参数,4.1.2 在作用域中管理属性,4.1.3 获取Cookie对象,4.1.4 获取客户端信息,参数“name”与form表单中的name属性对应,或者与提交链接的参数名对应,如果参数值不存在,则返回null值,该方法的返回值类型是String。,request对象通过getParameter()方法可以用来获取用户提交的数据。 获取请求参数的使用格式如下:,获取请求参数,String name=request.

6、getParameter(“name”),例:request.getParameter(“boy”),例: ,tree.jsp, 获取文本框提交的信息: 获取按钮的名字: ,例: ,try number=Double.parseDouble(textContent); if(number=0) r=Math.sqrt(number); out.print(“”+String.valueOf(number)+”的平方根:”); out.print(“”+String.valueOf(r); else out.print(“”+”请输入一个正数”); catch(NumberFormatExcep

7、tion e) out.print(“”+”请输入数字字符”); ,使用对象前确定客户是否已提交数据,如客户还没有提交表单数据,那调用该对象就会出现空对象错误。即NullPointException异常。为了避免使用空对象,可以添加如下代码:,String textContent=request.getParameter(“girl”); double number=0,r=0; if(textContent=null) textContent=“”; ,处理汉字对象,当用request对象获取客户提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息必须进行特殊处理。 首先,将获取的字符

8、串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化成字符串对象,例:,String textContent=request.getParameter(“boy”); Byte b=textContent.getBytes(“ISO-8859-1”); textContent=new String(b);,例: ,tree.jsp, 获取文本框提交的信息: 获取按钮的名字: ,在作用域中管理属性,在进行请求转发操作时,把一些数据带到转发后的页面处理。这时, 就可以使用request对象的setAttribute()方法将数据设置在request范围内 存取。在r

9、equest作用域中,设置转发数据的方法使用格式如下:,request.setAttribute(“key”,value);,参数key为String类型的键名。在转发后的页面取数据时,通过这个键名来获取数据;参数value为Object类型的键值,代表需要保存在request范围内的数据。在requet作用域中,获取转发数据的方法使用格式如下:,Object object=request.getAttribute(“name”);,在requet作用域中,获取所有属性的名称集的方法使用格式如下:,request.getAttributeNames();,该方法返回值是枚举类型(Enumera

10、tion)数据。,示例:详见教材及源代码,index.jsp, 用户注册信息 账号: 密码: 真实姓名: Email地址: 性别: 男 女 ,dealwith.jsp,showUser.jsp, Email地址: 性别: ,获取Cookie对象,Cookie是Web应用程序保存用户相关信息提供的一种有效的方法,它是一段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息。在JSP页面中,可以通过requet对象中的getCookie()方法获取Cookie中的数据,格式如下:,Cookie cookie= reques

11、t.getCookie();,该方法返回值是Cookie数组。, “); if (cookie_response != null) out.println(“上一次访问的时间:“ + cookie_response.getValue(); cookie_response.setValue(new Date().toString(); if (cookies = null) cookie_response = new Cookie(“AccessTime“, “); cookie_response.setValue(new Date().toString(); response.addCooki

12、e(cookie_response); % ,获取客户端信息,request对象的一些方法可以用于确定组成JSP页面的客户端的信息,request对象用于访问请求行元素的方法如表所示。,session和cookie,session是保存在服务端的内存里面,而cookie保存于浏览器或客户端文件里面; session是基于访问的进程,记录了一个访问的开始到结束,当浏览器或进程关闭之后,session也就“消失”了,而cookie更多地被用于标识用户,它可以是长久的,用于用户跟踪和识别唯一用户(Unique Visitor)。,其他常用方法,getRemoteAddr() 获取客户端的IP地址。

13、getRemoteHost() 获取客户端的名字。 getServerName() 获取服务器的名字 getServerPort() 获取服务器的端口号。 getHeader()获取客户端的浏览器类型。,4.2 响应对象:response,Response的http文件头: http请求和http响应; 典型的http请求: post/tree.jsp/http/1.1 host:localhost:8080 accept_encoding:gzip,deflate,Response的状态行,当服务器对客户请求进行响应时,它发送的首行称作状态行。 状态行包括3位数字的状态行代码和对状态代码的描

14、述。,5类状态代码的简单描述,1yy: (1开头的3位数)主要是实验性质的。 2yy:用来表明请求成功。 3yy:用来表明在请求满足之前应采取进一步的行动。 4yy:当浏览器做出无法满足的请求时,返回该代码。 5yy:用来表示服务器出现问题。,4.2 响应对象:response,4.2.1 客户端与服务器端的交互,4.2.2 页面重定向,4.2.3 缓冲区的输出,4.2.4 response对象常用方法,客户端与服务器端的交互,request对象和response对象的结合可以使JSP更好地实现客户端与服务器的信息交互。用户在客户端浏览器中发出的请求信息被保存在request对象中并发送给We

15、b服务器,JSP引擎根据JSP文件的指示处理request对象,或者根据实际需要将request对象转发给由JSP文件所指定的其他服务器端组件,如Servlet组件、JavaBean组件或EJB组件等。处理结果则以response对象的方式返回给JSP引擎,JSP引擎和Web服务器根据response对象最终生成JSP页面,返回给客户端浏览器,这也是用户最终看到的内容。客户端与服务器端信息交互的流程如图所示。,页面重定向,JSP页面可以使用response对象中的setRedirect()方法将客户请求重定向到一个不同的页面资源。例如:,response.sendRedirect(“sanya

16、ng,jsp”),JSP页面还可以使用response对象中的sendError()方法指明一个错误状态,该方法接受一个错误及一条可选的错误信息。该信息将在内容主体上返回给客户。例如:,response.sendError(500,”请求页面存在错误”);,上述两个方法都会中止当前的请求和响应。response对象中用于重定向的方法如下:,sendError(int number)方法:使用指定的状态码向客户发送错误响应。 sendError(int number,String msg)方法:使用指定的状态码和描述性消息向 客户发送错误响应。 sendRedirect(String locat

17、ion)方法:指定的重定向位置URL并向客户发送 重定向响应,可以使用相对URL。,缓冲区的输出,缓冲可以有效地在服务器与客户之间传输内容。 HttpServletResponse对象为支持jspWriter对象而启用了缓冲区配置。response对象中的getBufferSize()方法的返回值用于JSP页面的当前缓冲区容量;response对象中的setBufferSize()方法允许JSP页面为响应的主体设置一个首选的输出缓冲区容量。response对象中用于相应缓冲的方法如下:,flushBuffer() throws IOException:强制把缓冲区中的内容发送给客户。 getB

18、ufferSize():返回响应所使用的实际缓冲区大小,如果没使用缓冲 区,则该方法返回0。 setBufferSize(int size):为响应的主体设置首选的缓冲区大小。 boolean isCommitted():表示响应是否已经提交,提交的响应已经写入 状态码。 reset():清除缓冲区存在的任何数据,同时清除状态码。,例:, 缓冲区大小: 缓冲区设置之前 输出的内容是否提交: 缓冲区设置之后 输出的内容是否提交: ,response对象常用方法,response对象常用方法如表所示。,例, 现在的时间是: ,4.3 会话对象:session,4.3.1 理解session,4.3

19、.2 内置对象对通信的控制,4.3.3 创建与获取客户端session,4.3.4 移除指定session中的对象,4.3.5 session销毁,4.3.6 session超时管理,4.3.7 session实现局部网页计数器,理解session,session是用于保存客户信息而分配给客户的对象,HTTP协议不能保存客户端请求信息的历史记录,为了解决这一问题,生成一个session对象,这样服务器和客户端之间的连接就会一直保持下去。session中的ID标识是唯一的,用来标识每个用户,当刷新浏览器时,该标识的值不变。如果在一定时间内,客户端不向服务器发出应答请求,系统默认在30分钟内,se

20、ssion对象会自动消失。session标识可以通过getId()方法得到,具体代码如下:, 客户端session的ID值: ,程序运行结果如图所示。,内置对象对通信的控制,resquest、response和session是JSP内置对象中的重要3个对象,这3个对象体现了服务器端与客户端进行交互通信的控制。resquest、response和session内置对象的通信过程如图所示。,JSP通过request对象控制客户浏览器的请求;通过response对客户浏览器进行响应;而session就维持这个反反复复的过程中会话起见需要传递的数据信息。,创建与获取客户端session,session

21、内置对象可以使用setAttribuete()方法保存对象名和对象的值,如果程序员想要获取到保存到session中的信息,则需要调用getAttribuete()方法进行获取。例如:,设置属性和获取属性可以在不同的文件中,但是不允许在同一个session中,是否在同一会话中要根据客户的访问情况来决定。通过下面的方法可以获取包含绑定在该session中所有对象的名称。,java.util.Enumeration getAttributeNames(),该方法返回一个枚举类型的对象 。,移除指定session中的对象,JSP页面可以将任何已经保存到session中的对象进行移除操作。session

22、内置对象使用removeAttribute()方法所提供的名称移除,removeAttribute()方法的语法如下:,void removeAttribute(java.lang.String name),参数name为String类型的值,代表移除的对象的名称。,session销毁,在JSP页面中,可以通过session对象中的invalidate()方法删除已经保存到session中所有对象。invalidate()方法的语法如下:,void invalidate(),session超时管理,在JSP页面中,确定客户端session是否存在唯一的方法是使用超时设置。这是因为Web客户在进

23、入非活动状态时不通知服务器。为了清除存储在session对象中的客户申请资源,Servlet容器设置一个超时窗口。在非活动的时间超出了窗口的大小时,JSP容器将使session对象无效并撤销所有属性的绑定,从而管理session的声明周期。session对象用于超时管理如表所示。,session实现局部网页计数器,使用session编写局部网页计数器,首先,设置int类型的变量number,并将该对象初始化为1。然后,通过获取session中getAttribute()方法获取number对象,并判断该对象是否为null,如果不为null,则将获取的内容赋值给number变量。最后,将该变量自

24、动加1并显示在页面中。实现代码如下:,注意:当浏览器关闭时或session过期时,网页访问次数将回到 初始化值。,4.4 多客户端共享对象:application,4.4.1 appliaction对象作用范围,4.4.2 application对象常用方法,4.4.3 application实现全局网页计数器,appliaction对象作用范围,application对象用于保存所有应用系统中的公共数据,web服务器启动并自动创建application对象后,只要没有关闭服务器,appliaction对象一直存在,所有用户可以共享appliaction对象。,appliaction对象与se

25、ssion对象有一定区别,session对象和用户客户端有关,不同的客户端的session是完全不同的对象,而appliaction对象都是相同的一个对象,即共享这个内置的appliaction对象。,在JSP页面中,作用范围的对象分别为page、request、session、application,它们之间的关系如图所示。,application对象常用方法,application对象常用方法如表所示。,application实现全局网页计数器,使用application编写全局网页计数器,首先,设置int类型的变量number,并将该对象初始化为1。然后,通过获取application中

26、getAttribute()方法获取number对象,并判断该对象是否为null,如果不为null,则将获取的内容赋值给number变量。最后,将该变量自动加1并显示在页面中。实现代码如下:,注意:当浏览器关闭时时,再次访问该网页时,访问次数继续增加。,4.5 页面对象:page,4.5.1 page对象的常用方法,4.5.2 page对象转换类型,page对象的常用方法,page对象的常用方法如表所示。,page对象转换类型,使用page输出JSP页面的对象转换类型和哈希代码值,调用page对象的hashCode()方法和toString()方法,分别获取Page对象的哈系代码值和JSP页面

27、的对象转换类型,代码如下:,“); out.println(“page对象的hash代码“+hashCode); %,程序运行结果如图所示。,4.6 页面上下文对象:pageContext,4.6.1 pageContext对象的常用方法,4.6.2 pageContext对象获取作用域的值,pageContext对象是一个比较特殊的对象,它的作用是取得任何范围的参数,通过pageContext对象可以获取JSP页面的out、request、response、session、application等对象,或者可以重新定向客户的请求等。,pageContext对象的常用方法,pageContex

28、t对象的常用方法如表所示。,pageContext对象获取作用域的值,使用pageContext对象获取作用域的值,首先在不同的范围内设置属性:,然后取出属性:,运行结果如图所示。,4.7 输出对象:out,out对象主要内容是向web浏览器内输出各种数据类型的内容,并且管理应用服务器上的输出缓冲区,缓冲区默认值是8KB。out对象被封装为javax.servlet.jsp.JspWriter接口,它是JSP编程过程中经常用到的一个对象。out对象的常用方法如表所示。,4.8 配置对象:config,4.8.1 config对象的常用方法,4.8.2 config对象获取初始化参数,confi

29、g对象的主要作用是取得服务器的配置信息。config对象被封装为javax.servletConfig接口,通过pageContext.getServletConfig()方法可以获取一个config对象。,config对象的常用方法,config对象的常用方法如表所示。,config对象获取初始化参数 (1),首先在web.xml文件中配置初始化参数:, sanyang /index.jsp email sanyang /index.jsp ,config对象获取初始化参数 (2),然后在JSP页面中通过config对象中的getInitParameter()方法获取在web.xml文件中

30、初始化的参数,程序代码如下:, 钟毅邮箱地址: ,运行结果如图所示。,4.9 异常对象:exception,4.9.1 exception错误机制,4.9.2 exception对象的常用方法,4.9.3 exception设置指定错误页面,4.9.4 exception对象指向空指针错误,exception错误机制,exception异常对象指的是web应用程序所能够识别并能够处理的问题。在Java语言中,通过“try/catch”的关键在来处理异常信息情况,如果在JSP页面中出现没有捕捉到的异常信息,那么系统会自动生成exception对象,并把这个对象传送到page指令元素中设定的错误页

31、面中,然后在错误提示页面中处理相应的exception对象。 Exexceptionception对象只能在错误页面中才可以使用,并在页面指令元素里存在isErrorPage=true的页面。,exception对象的常用方法,exception对象的常用方法如表所示。,exception设置指定错误页面,首先,建立一个自定义的错误页面“error.jsp”,即在该页面的开始部分标识符中添加如下代码:,然后,将其他页面指向该错误页面。在标识符中添加以下代码:,这样,就给其他页面指定了错误页面。,exception对象指向空指针错误(1),首先,创建一个JSP页面,在该页面设置一个空指针的错误,并为该页面指定一个错误页面“exception.jsp” 。,exception对象指向空指针错误(2),然后,创建exception.jsp页面,如果发生任何的异常信息,则系统将自动重定向到exception.jsp页面,该页面将通过exception对象中各种方法将错误信息进行输出。主要代码如下:, 下面就是异常信息 ,exception对象指向空指针错误(3),显示的错误信息:,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1