Java系列-jsp九大内置对象

 

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作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。

你可能感兴趣的:(jsp,request,session,application)