专题十四JSP内置对象.ppt
专题十四 JSP内置对象,提纲,request对象session对象application对象out对象,一、request对象,HTTP通信协议是客户与服务器之间一种提交信息与响应信息的通信协议。在JSP中,内置对象request封装了用户提交的信息,因此对该对象调用相应的方法可以获取用户提交的信息。客户通常使用表单向服务器的某个JSP页面提交信息,提交方法可以为get或post,主要区别是:get方法提交的信息会在提交过程中显示在浏览器地址栏中,而post方法提交的信息不会显示在地址栏中。request对象使用getParameter(String s)方法获取该表单通过text提交的信息。,获取文本框提交的信息:获取按钮的名字:,处理汉字信息当用request对象获取客户提交的汉字字符时,会出现乱码问题,所以对含有汉字字符的信息必须进行特殊的处理方式。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串对象即可。语法如下:String str=request.getParameter(“girl”)Byte b=str.getBytes(“ISO-8859-1”);Str=new String(b);,获取文本框提交的信息:获取按钮的名字:,获取HTML表单提交的数据一个表单的数据提交部分包括如下的标记符号:在下面的例子中,用单选按钮实现一个网上测试;客户在radio.jsp页面中选中几个单选按钮,将选择提交给answer.jsp页面。,无标题文档诗人李白是中国历史上哪个朝代的人:宋朝唐朝明朝元朝小说红楼梦的作者是:曹雪芹罗贯中李白司马迁,无标题文档您得了分,二、session对象,HTTP协议是一种无状态协议。一个客户向服务器发出请求,然后服务器返回响应,连接就关闭了。从一个客户打开浏览器连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称作一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接、反复刷新或不断向一个页面提交信息等,服务器应当通过某种方法知道这是同一个客户,这就需要session对象。,session对象的id当一个客户首次访问服务器上的一个JSP页面时,JSP引擎产生一个session对象,这个session对象被分配了一个String类型的id号,JSP引擎同时将这个id号发送到客户端,存放在客户的cookie中。这样,每个客户都对应着一个session对象,并具有不同的session id。在下例中,客户在服务器的三个页面之间进行连接,只要不关闭浏览器,三个页面的session对象是完全相同的。,session.jsp您的session对象的ID是:输入您的姓名连接到tom.jsp,tom.jsp我是Tom页面您的在Tom页面中的session对象的ID是:单击超链接,连接到Jerry的页面。欢迎到Jerry屋来!,jerry.jsp我是Jerry页面您在Jerry页面中的session对象的ID是:单击超链接,连接到session的页面。欢迎到session屋来!,application对象,当服务器启动时,就创建了application对象,当一个客户访问网站的各个页面时,这个application对象都是同一个,直到服务器关闭,这个application对象取消。所以客户的application对象都是同一个,即所有客户共享这个内置的application对象。,application对象的常用方法:public void setAttribute(String key,Object obj)application对象可以调用该方法将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字。public Object getAttribute(String key)获取application对象中含有关键字是key的对象。public Enumeration getAttributeNames()Application对象调用该方法产生一个枚举对象,该枚举对象使用nextElements()方法遍历application对象中所含有的全部对象。,removeAttribute(String key)从当前application对象中删除关键字是key的对象。Public String getServletInfo()获取Servlet编译器的当前版本信息。由于application对象对所有的客户都是相同的,然后客户对该对象中存储的数据的改变都会影响到其它客户,因此,在某些情况下,对该对象的操作需要同步处理。,在下例中,客户通过submit.jsp向messagePane.jsp页面提交姓名、留言标题和留言内容,messagePane.jsp获取这些内容后,将其添加到一个向量中,然后再将这个向量添加到application对象中。当用户单击查看留言板时,showMessage.jsp负责显示所有客户的留言内容,即从application对象中取出向量,遍历向量中存储的信息。,本例使用了向量这种数据结构,Java的java.util包的Vector类负责创建一个向量对象。当创建一个向量时,不必像数组那样必须给出数组大小。向量创建后,例如,Vector a=new Vector(),a可以使用add(Object o)把任何对象添加到向量的末尾,向量的大小会自动增加;a可以使用elementAt(int index)获取指定索引处的向量元素;a可以使用方法size()获取向量所含元素的个数。另外,与数组不同的是向量的元素类型不要求一致。,submit.jsp输入您的名字:输入您的留言标题:输入您的留言:,messagePane.jsp+messages;sendMessage(s);out.print(您的信息已经提交!);%返回,showMessage.jsp+str);%,out对象,out对象是一个输出流,用来向客户端输出数据。out对象可调用如下的方法用于各种数据的输出。out.print(Boolean),out.println(boolean)用于输出一个布尔值out.print(char),out.println(char)用于输出一个字符out.print(double),out.println(double)输出一个双精度的浮点数out.print(float),out.println(float)输出一个单精度的浮点数,out.print(long),out.println(long)输出一个长整型数out.print(String),out.println(String)输出一个字符串对象的内容out.newLine()输出一个换行符out.flush()输出缓冲区里的内容out.close()关闭流,