您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 制造加工工艺 > jsp_ljq_03
主讲:李俊青第3章JSP内置对象详解理论介绍JSP的内置对象技能能灵活应用JSP的内置对象来开发程序要求掌握JSP的内置对象的用法,基本掌握JSP的开发技巧2020/2/1633.1对象与内置对象对象是典型的具有方法、属性和集合的事物对象的属性反映了对象的状态,可以读取或设置。对象的集合是由很多不同的与对象有关系的属性和值的配对组成的。对于一般的对象,要想使用它,必须先声明一个类,再将它实例化,就会得到一个可以使用的对象。例子:useobject.jsp2020/2/1643.1对象与内置对象JSP程序中8个默认的内置对象request、response、pageContext、session、application、out、config、page。2020/2/1653.1对象与内置对象JSP程序中8个默认的内置对象2020/2/1663.2request对象request对象是ServletRequest的一个实例。当客户端请求一个JSP网页时,JSP引擎会将客户端的请求信息包装在这个request对象中,请求信息的内容包括请求的标题头(Header)、信息(如浏览器的版本信息、语言和编码方式等),请求的方式(如HTTP方法:GET、POST、PUT等),请求的参数名称、参数值和客户端的主机名称等,然后将request对象当作jspService方法的HttpServletRequest参数值,所以我们可以通过这个对象来取得有关客户端的请求信息。2020/2/1673.2.1request对象的方法getAttribute返回请求的给出名字的属性的值getCharacterEncoding返回为请求的输入进行编码的字符集合getContentLength返回请求实体数据的大小getContenType返回请求实体数据的InternetMedia类型getlnputStream返回在请求体中读取二进制数据的输入流getParameter返回包含指定参数的单独值的字符串getParameterName返回本次请求的参数名字getParameterValues返回作为字符串列举的指定参数的值getProtocol返回请求的协议和版本号getReader返回从请求体中读取的文本的缓存数据getRealPath返回运用替换规则从虚拟地址中获得的实际地址getRemoteAddr返回发送请求的接口程序的IP地址getRemoteHost返回发送请求的接口程序的完全限定的主机名getScheme返回发出请求的URL的机制getServerName返回接收请求的服务器的主机名getServerPort返回接收请求的端口2020/2/1683.2.2request对象使用示例request对象获取服务器及客户端的信息例子:request1.jsp解决获取表单中文问题:request.setCharacterEncoding(gb2312);2020/2/1693.3response对象response对象的类型是javax.servlet.ServletResponse类的实例,JSP引擎会根据客户端的请求信息建立一个默认的response对象。它用于将浏览器参考信息,如回应的Header、回应本体(HTML的内容)以及服务器端的状态码等信息提供给客户端。2020/2/16103.3.1response对象的方法getCharacterEncoding返回用于MIME编码的字符集合getOutputStream返回用于书写二进制应答数据的输出流getWriter返回用于格式化文本应答的打印程序setContentLength为应答设置内容长度setContentType为应答设置内容类型addCookie添加一个Cookie对象,用来保存客户端的用户信息addHeader添加HTTP文件头(Header),将会传送到客户端containsHeader判断指定的HTTP文件头是否存在sendError向客户端发送错误信息setHeader设定指定名字的HTTP文件头的值sendRedirect重定向客户端的地址2020/2/16113.3.2response对象使用示例示例程序实现了定时刷新页面的功能文件refresh.jsp这个程序指定页面每隔5秒钟自动刷新一遍,服务器重新执行这个程序,产生新的当前时间,然后输出到客户端。所以,页面上显示的时间每隔5秒钟就增加5秒钟,实现了类似时钟的功能。2020/2/16123.4session对象session对象是JSP中一个很重要的内部对象,我们使用它来保存某个特定客户端(访问者)一次访问的一些特定信息。在JSP网络编程中,有多种方法可以保存客户信息,但是最常用、最实用的还是session对象。2020/2/16133.4.1session对象介绍session对象,实际上就是服务器与客户端之间的“会话”(1)session可以用来储存访问者的一些特定信息。主机服务器就是根据session来跟踪这些信息的。(2)session可以创建访问者信息容器。(3)session可以用来跟踪访问者的访问路径,从中挖掘有用的信息,如访问者的兴趣爱好、访问目的。用户在Web应用程序中访问同一页面时,session变量始终存在,当用户在应用程序的页之间跳转时,存储在session对象中的变量也不会清除,当然也可以使用session方法显式地结束一个会话和设置空闲会话的超时期限。session在JSP程序中是一个内置的对象每一个客户端都有一个session对象用来存放于这个客户端相关的数据。在JSP的程序中,通常不用任何代码,就可以直接使用session对象。不过为了确认,可以加入以下代码,以表示需要启动session功能。%@pagesession=true%如果设置上述的session值为false,则说明禁用session功能。session对象的类为HttpSession,它提供了很多使用的方法。2020/2/16143.4.2session对象的方法session对象的类是HttpSession。HttpSession由服务器的程序实现,提供HTTP服务器和HTTP客户端之间的会话。会话,就是在给定时间段内持续进行多路连接和请求。会话被用来在多页面请求中保持状态和用户认证。2020/2/16153.4.2session对象的方法getCreationTime返回会话创建的时间getId返回会话标识符getLastAccessTime返回客户端上一次发送携带会话账号的时间getSessionContext返回会话相连的上下文getValue返回和应用层数据中指定名字相联系的对象getValueNames返回和会话相连的应用层数据对象的名字invalidate使会话无效,并将其从上下文中移出isNew检查是否客户端参加了会话putValue将指定的对象和使用指定名字的会话应用层数据相连removeValue移去和会话应用层数据中指定名字相连的对象2020/2/16163.4.3session对象使用示例为说明session对象的具体应用,以用三个页面模拟一个多页面的Web应用为例(1)第一个页面(q1.html)仅包含一个要求输入用户名字的HTML表单。文件q1.htm(2)第二个页面是一个JSP页面(q2.jsp),它通过request对象提取q1.html表单中的thename值,将它存储为name变量,然后将这个name值保存到session对象中。q2.jsp的另外一个任务是询问第二个问题。(3)第三个页面也是一个JSP页面(q3.jsp),主要任务是显示问答结果,另外一个任务是提取在第二个页面中的用户输入并显示它。通常会话管理是通过服务器将SessionID作为一个cookie存储在用户的Web浏览器中来唯一标识每个用户会话如果浏览器不支持cookie,或者将浏览器设置为不接受cookie,我们可通过URL重写来实现会话管理。文件hello1.jsp使用session对象在3个不同的JSP文件中保存信息文件example0.htm(在accountBalance中必须输入数字)2020/2/16173.5application对象application对象保存了一个应用系统中一些公用的数据。与session对象相比,application对象是所有客户共享的,而session对象则是每个客户专用的。application对象可以是javax.servlet.ServletContext类型的。ServletContext接口让servlet访问关于其环境的信息。application对象的范围是application。2020/2/16183.5.1application对象的方法getAttribute以Object对象的形式返回对应名称的application对象的属性值getAttributeNames以Enumeration数据形式返回所有application对象的属性名称getInitParameter返回application某个属性的值getServerInfo获得当前版本的Servlet编译器的信息setAttribute设置某个application对象的某个属性值2020/2/16193.5.2application对象的使用示例一个使用了application对象的计数器文件appcount.jsp应用application内建对象,将上面的session例子改为application的例子。文件application1.htm2020/2/16203.6out对象out对象用于输出数据,它可以是javax.servlet.jsp.JspWriter的一个实例。out对象的范围是page。从java.io.Writer拓展而来的公共抽象类JspWriter效仿了java.io.BufferedWriter和java.Io.PrintWriter中的某些功能。但是,不同之处在于它会在打印方法中抛出(throw)java.Io.IOException异常,而PrintWriter不这样做。JSP中的out对象就是这种类型的。如果page指令选择了autoflush=true,那么当出现由于当前的操作不清空缓存而造成缓冲区溢出的情况时,这个类的所有I/O操作会自动清空缓冲区的内容。如果autoflush=false,那么当操作造成了缓冲区溢出时,这个类的所有的I/O操作将抛出一个IOException。2020/2/16213.6.1out对象的变量autoFlush类型为protectedbooleanautoflush如果变量值为真,则当当前的操作造成缓冲区溢出时,缓冲区会被清空。如果变量值为假,则如果当前操作造成缓冲区溢出就会抛出一个IOException。bufferSize类型为protectedintbufferSize表示缓冲区目前的大小。初始值根据不同的设备而不同,但是不少于8KB。DEFAULT_BUFFER类型为publicstaticfinalintDEFAULT_BUFFER表示Writer正使用的缺省的缓冲区大小设置。No_BUFFER类型为PublicstaticfinalintNO_BUFFER表示Writer是否处于缓存输出状态。2020/2/16223.6.2Out对象的方法Close关闭流,并输出flush输出流ClearClear清除缓冲区内容clearBuffer清除缓冲区的流getBufferSize获得缓冲区的大小getRemaining获得缓冲区中未使用的字节数isAutoFlush获得autoFlush的当前值newLine写一行分隔符2020/2/16233.6.
本文标题:jsp_ljq_03
链接地址:https://www.777doc.com/doc-3818051 .html