简单阐述Response对象 Request对象 Session对象和Application对象的功能。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单阐述Response对象 Request对象 Session对象和Application对象的功能。相关的知识,希望对你有一定的参考价值。
简答题…速度点回答…
1.session对象:指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例。
2.application对象:
实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直存在;这样在用户的前后连接或不同用户之间的连接中,可以对此对象的同一属性进行操作;在任何地方对此对象属性的操作,都将影响到其他用户对此的访问。服务器的启动和关闭决定了application对象的生命。它是ServletContext类的实例。
3.request对象:
客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。一般用来获取页面传参的值。
4:response对象
包含了响应客户请求的有关信息,但在JSP中很少直接用到它。它是HttpServletResponse类的实例。
参考资料:http://zhidao.baidu.com/question/129596213.html
参考技术A response 是服务器响应,该对象负责向浏览器端发送数据,其中包含响应头和响应内容例如,加入你想往浏览器端输出字符串,在ASP中就得用
response.write("hello ..."),在j2ee中用response.getWriter().writer("hello");想让发送重定向代码,让浏览器重定向,ASP中可以用response.redirect(url),在j2ee中用response.sendRedirect(url)等,response对象有很多方法,在java中可以“点出来”。
request 是客户端请求,该对象封装了与浏览器端发来的请求有关的数据,包含请求的路径、浏览器参数、客户端地址,请求参数等数据,我们可以从request对象中获取form表单中传递过来的数据和地址栏路径中传递过来的数据(问好后面的部分),在j2ee中我们还可以把request作为一种作用域,往其中放入数据,用request.setAttribute(object,key)方法,然后在同意请求的其他页面中用request.getAttribute(key)方法取出数据。
浏览器每次向服务器发送一个请求,服务器端就会生成一个request对象和response对象。
session对象维持浏览器与服务器的一次会话,在会话周期内,session对象不销毁。同一浏览器在在会话期内向服务器发送不同请求,服务器用同一session对象来维持会话。session超时时间一般为半小时左右,也就是说如果浏览器半个小时内不向服务器发送任何请求,该会话将过期失效,当然,我们可以修改session过期时间。通常我们将用户登陆信息放到session中。用法同上,j2ee中我们用session.setAttribute()方法。
Application对象,用于存放全局变量,用户之间可以通过该对象共享信息。
在J2EE中我们用pagecontext存放单页面范围的变量,用request存放一次请求跨页面范围的变量,用session存放同一用户多次请求的变量,用application存放跨用户的变量。
JSP内置对象request对象的转发与response对象的重定向
在说转发与重定向之前先说一下jsp九大内置对象的其中两个内置对象,request对象与response对象
request对象
request对象是最常用的JSP内置对象之一,其中包含了有关浏览器请求的信息。其中工作原理如下:
简单来说就是“可以对在客户请求中给出的信息进行访问,包含了所有有关当前浏览器的请求信息。”
response对象
response对象其实是与request对象是相反的,response对象可用于设置响应参数及取得响应流等。其中工作原理如下:
简单来说就是“每次服务器端都会响应一个response实例。response对象经常用于设置HTTP标题、添加Cookie、设置响应内容的类型和状态、发送HTTP重定向和编码URL等。”
接下来就是我们request对象的转发与response对象的重定向
转发是服务器行为,重定向是客户端行为。转发耗时比重定向少。
1.转发
转发的实现很简单,使用request对象的getRequestDispatcher()方法得到RequestDispatcher对象,此对象用于封装一个有路劲所标识的服务器资源,然后用这个对象调用forward()方法。
示例:
request.getRequestDispatcher("需要转发的地址(a.jsp)").forward(request,response);
2.重定向
重定向相当于通过response.sendRedirect()方法向服务器重新发送一个请求,请求的URL地址取决于response.sendRedirect()方法所给的参数。
示例:
response.sendRedirect("需要重定向的地址(a.jsp)");
差异
转发——>客户浏览器发送HTTP请求——>web服务器接受请求——>调用内部一个方法在容器内部完成请求处理和转发动作——>再将转发跳转到的那个网页资源返回给客户; 转发只能在同一个容器内完成 转发的时候浏览器地址是不会变的,在客户浏览器里只会显示第一次进入的那个网址或者路径,客户看不到这个过程,只是得到了想要的目标资源。转发行为浏览器只做了一次请求。(转发只能跳转一次)
重定向——>客户浏览器发送HTTP请求——>web服务器接受请求后发送302状态码以及新的位置给客户浏览器——>客户浏览器发现是302响应,则自动再发送一个新的HTTP请求,请求指向新的地址(302:Found 临时移动,但资源只是临时被移动。即你访问网址A,但是网址A因为服务器端的拦截器或者其他后端代码处理的原因,会被重定向到网址B。)——>服务器根据此请求寻找资源发个客户;再客户浏览器中显示的是重定向之后的路径,客户可以看到地址的变化。重定向行为浏览器做了至少两次请求。(重定向可以跳转多次)
以上是关于简单阐述Response对象 Request对象 Session对象和Application对象的功能。的主要内容,如果未能解决你的问题,请参考以下文章
springMVC中获取request和response对象的几种方式(RequestContextHolder)
JSP最常用的五种内置对象(out,request,response,session,application)