jsp九大内置对象
jsp九大内置对象:request,response,session,out,application,config,page, pageContext,exception
http协议
1、request对象
表单中的method取值get和post的区别:使用get方法提交的信息会在提交的过程中显示在浏览器的地址栏中,而使用post方法提交的信息不会显示在地址栏中。
转码处理:首先将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个数组转化为字符串对象即可,如下列所示
<span style="white-space:pre"> </span>String str = request.getParameter(“name”); <span style="white-space:pre"> </span>Byteb[] = str.getBytes(“ISO-8859-1”); <span style="white-space:pre"> </span>str= new String(b);
常用的获取HTML标记值的方法:
<span style="white-space:pre"> </span>request.getParemeter(“str”); <span style="white-space:pre"> </span>request.getParameterValues(“checkbox”);
2、response
2.1动态的设置相应的MIME类型response.setConentType(String s);
2.2Response对象可以使用方法addHeader(String head,String value)或者方法setHeader(Stringhead.String value)动态的添加新的响应头和头的值,并将这些头发送给用户的浏览器。
2.3response重定向 response.sendRedirect(URL url);
扩展:重定向和转发的区别
重定向和转发有一个重要的不同:当使用转发时,JSP容器将使用一个内部的方法来调用目标页面,新的页面继续处理同一个请求,而浏览器将不会知道这个过程。与之相反,重定向方式的含义是第一个页面通知浏览器发送一个新的页面请求。因为,当你使用重定向时,浏览器中所显示的URL会变成新页面的URL, 而当使用转发时,该URL会保持不变。重定向的速度比转发慢,因为浏览器还得发出一个新的请求。同时,由于重定向方式产生了一个新的请求,所以经过一次重定向后,request内的对象将无法使用。 怎么选择是重定向还是转发呢?通常情况下转发更快,而且能保持request内的对象,所以他是第一选择。但是由于在转发之后,浏览器中URL仍然指向开始页面,此时如果重载当前页面,开始页面将会被重新调用。如果你不想看到这样的情况,则选择转发。 转发和重定向的区别 不要仅仅为了把变量传到下一个页面而使用session作用域,那会无故增大变量的作用域,转发也许可以帮助你解决这个问题。 重定向:以前的request中存放的变量全部失效,并进入一个新的request作用域。 转发:以前的request中存放的变量不会失效,就像把两个页面拼到了一起。
3、session(回话)对象
从一个用户打开浏览器连接到服务器的某个web服务目录,到用户关闭浏览器离开服务器称作一个回话。
同一个用户在不同的服务目录中的session是互不相同的。
session的生命周期:session在用户首次访问web服务目录中的一个jsp页面时,jsp引擎产生一个session对象;知道用户关闭浏览器或这个session对象达到了最大生存时间,服务器端该用户的session对象被取消,和用户的会话对应关系消失。
session对象存储数据
publicvoid setAttribute(String key,Object obj);
publicObject getAttribute(String key);
publicEnumeration getAttributeName();
publiclong getCreationTime();
publicvoid removeAtrribute(String key);
4、out对象
out对象是一个输出流,用来想客户端输出数据。
out.newLine() 输出一个换行符
out.flush(); 输出缓冲区里面的内容
out.close(); 关闭流
5、application对象
tomcat启动后,就产生一个application对象。与session对象不同的是,所有用户在同一Web服务目录中的application对象是相同的,即每个web服务目录下的application对象被访问该服务目录的所有用户共享。
注:不同Web服务目录下的application是不同的。
6、Config对象
配置对象
7、Page对象
页面对象。
8、PageContext对象
页面上下文对象
Jsp引入了一个名位PageContext的类,通过它可以访问页面的许多属性。
PageContext类拥有getRequest,getResponse,getOut,getSession等方法。
pageContext变量存储与当前页面相关联的PageContext对象的值。
补:
如果方法需要访问多个与页面相关的对象,
传递pageContext要比传递request,response,out等的独立引用更容
易。(虽然两种方式都能达到同样的目的)
9、Exception对象
在处理异常的网页中可以直接访问exception隐式对象。
四个作用域:
1、 page/pageContect
page里的变量 只要页面跳转了,它们就不见了。如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。
2、 request
request里的变量可以跨越forward前后的两页。但是只要刷新页面,它们就重新计算了。如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。
3、session
session和application里的变量一直在累加,开始还看不出区别,只要关闭浏览器,再次重启浏览器访问这页,session里的变量就重新计算了。
如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。
所谓当前会话,就是指从用户打开浏览器开始,到用户关闭浏览器这中间的过程。这个过程可能包含多个请求响应。也就是说,只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话(session),而放到会话中的变量,就可以在当前会话的所有请求里使用。
4、application
application里的变量一直在累加,除非你重启tomcat,否则它会一直变大。如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。
整个应用是指从应用启动,到应用结束。我们没有说“从服务器启动,到服务器关闭”,是因为一个服务器可能部署多个应用,当然你关闭了服务器,就会把上面所有的应用都关闭了。
application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。