《request与response的作用.docx》由会员分享,可在线阅读,更多相关《request与response的作用.docx(6页珍藏版)》请在三一办公上搜索。
1、request与response的作用Request对象:为脚本提供了当客户端请求一个页面或者传递一个窗体时,客户端提供的全部信息。这包括能指明浏览器和用户的HTTP变量,在这个域名下存放在浏览器中的cookie,任何作为查询字符串而附于URL后面的字符串或页面的FORM段中的HTML控件的值。也提供使用Secure Socket Layer或其他加密通信协议的授权访问,及有助于对连接进行管理的属性。 Response对象:用来访问服务器端所创建的并发回到客户端的响应信息。为脚本提供HTTP变量,指明服务器和服务器的功能和关于发回浏览器的内容的信息,以及任何将为这个域而存放在浏览器里新的coo
2、kie。它也提供了一系列的方法用来创建输出,例如无处不在的Response.Write方法。 cookie: Cookies是当你浏览某网站时,由Web服务器置于你硬盘上的一个非常小的文本文件,它可以记录你的用户ID、密码、浏览过的网页、停留的时间等信息。 当你再次来到该网站时,网站通过读取Cookies,得知你的相关信息,就可以做出相应的动作,如在页面显示欢迎你的标语,或者让你不用输入ID、密码就直接登录等等。 讲的通俗一点就是: Request:可以理解为客户端向服务器请求的信息,就是客户端向服务器请求时,把自己的浏览器信息、HTTP变量和保存在客户端的Cookie告诉服务器,这样服务器就
3、可以根据这些信息判断是谁请求的,之前有没有请求过,对应客户端的Session是什么等等。 Response:可以理解为服务器对客户端请求的响应,就是服务器接收到客户端的请求后,成生页面信息、Cookie等发送到客户端。 Cookie:就是保存在客户端上的一些信息,可以用来验证用户信息,提高用户响应速度等等。为何不把它理解为:我把饼干放在家里,我想吃的时候就拿出来吃。呵呵!=response.sendRedirect和request.getRequestDispatcher.forward(request,response)的区别跳转方式=运用forward方法只能重定向到同一个Web应用程序中
4、的一个资源。而sendRedirect方法可以让你重定向到任何URL。表单form的action=/uu;sendRedirect(/uu);表示相对于服务器根路径。如http:/localhost:8080/Test应用;Forward代码中的/uu则代表相对与WEB应用的路径。如http:/localhost:8080/Test应用;方法forward无法重定向至有frame的jsp文件,可以重定向至有frame的html文件,同时forward无法在后面带参数传递,比如servlet?name=frank,这样不行,可以程序内通过response.setAttribute(name,na
5、me)来传至下一个页面.重定向后浏览器地址栏URL不变.只有在客户端没有输出时才可以调用forward方法。如果当前页面的缓冲区不是空的,那么你在调用forward方法前必须先清空缓冲区。/代表相对与web应用路径RequestDispatcher rd = request.getRequestDispatcher(/ooo);rd.forward(request, response);提交至http:/localhost:8080/Test/oooRequestDispatcher rd = getServletContext.getRequestDispatcher(/ooo);rd.fo
6、rward(request, response);提交至http:/localhost:8080/Test/oooRequestDispatcher rd =getServletContext.getNamedDispatcher(TestServlet);rd.forward(request, response);提交至名为TestServlet的servlet如果在<jsp:forward>之前有很多输出,前面的输出已使缓冲区满,将自动输出到客户端,那么该语句将不起作用,这一点应该特别注意。另外要注意:它不能改变浏览器地址,刷新的话会导致重复提交从http:/localhost:8
7、080/Test/gw/page.jsp中转发<jsp:forward page=OtherPage.jsp/>在JSP页面被解析后转换成pageContext.forward(OtherPage.jsp);/OtherPage.jsp提交到http:/localhost:8080/Test/OtherPage.jspOtherPage.jsp提交到http:/localhost:8080/Test/gw/OtherPage.jsp(运用HttpServletResponse接口的sendRedirect)方法302是在用户的浏览器端工作,sendRedirect可以带参数传递,比如s
8、ervlet?name=frank传至下个页面,同时它可以重定向至不同的主机上,sendRedirect可以重定向有frame.的jsp文件.假设转发代码包含于注册的servleturl为/ggg/tt;jsp为/ggg/tt.jsp:绝对路径:response.sendRedirect()发送至根路径:response.sendRedirect(/ooo)发送至http:/localhost:8080/ooo相对路径:response.sendRedirect(ooo)发送至http:/localhost:8080/Test/ggg/ooo,sendRedirect等同于此方式respons
9、e.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);String newLocn = /newpath/jsa.jsp;response.setHeader(Location,newLocn);(Meta Refresh)方法200这种方法是由HTML提供的,Meta本身就是HTML标签。使用方法是:<meta http-equiv=refresh content=5; url= />相应的java代码String content=stayTime+;URL=+URL;response.setHeader(REFRESH,cont
10、ent); -使用response.sendRedirect地址栏将改变使用request.getRequestDispatcher.forward(request,response)地址栏中的信息保持不变.-request.setAttribute存的东西只用通过方法2跳转 才能在新页取出来-redirect 会首先发一个response给浏览器, 然后浏览器收到这个response后再发一个requeset给服务器, 然后服务器发新的response给浏览器. 这时页面收到的request是一个新从浏览器发来的.forward 发生在服务器内部, 在浏览器完全不知情的情况下发给了浏览器另外一个页面的response. 这时页面收到的request不是从浏览器直接发来了,可能己经放了数据.所以:request.setAttribute存的东西只用通过方法2跳转 才能在新页取出来