com网站建设,烟台网站建设科技公司,云主机可以做网站吗,二手车网站系统请求转发#xff1a;
请求转发#xff0c;即request.getRequestDispatcher().forward()#xff0c;是一种服务器的行为#xff0c;客户端只有一次请求#xff0c;服务器端转发后会将请求对象保存#xff0c;地址栏中的URL地址不会改变#xff0c;得到响应后服务器端再将…请求转发
请求转发即request.getRequestDispatcher().forward()是一种服务器的行为客户端只有一次请求服务器端转发后会将请求对象保存地址栏中的URL地址不会改变得到响应后服务器端再将响应发给客户端
请求重定向
请求重定向即response.sendRedirect()是一种客户端行文从本质上讲等同于两次请求前一次请求对象不会保存地址栏的URL地址会改变。 用生活中一个常见的例子来说明两者之间的区别某人要去办理护照
转发某人去了甲局甲局看了之后直到护照应该由乙局来管但甲局的工作人员并没有赶走某人而是让某人等着自己在办公室后面联系了乙局的工作人员乙局护照办好后送到了甲局然后甲局的工作人员将护照交给了某人
重定向某人去了甲局后甲局的工作人员说护照不归他们关应该去乙局。然后某人自己去了乙局办了护照。 这里写一个例子演示两者的不同。新建一个web项目创建三个页面reg.jsp、response.jsp、request.jsp。
reg.jsp代码如下 bodyh1你好/h1hrform nameregForm actionresponse.jsp methodposttabletrtd用户名/tdtdinput typetext nameusername//td/trtrtd colspan2input typesubmit value提交//td/tr/table/form/body这里输入用户名然后交给response.jsp处理。页面如下response.jsp代码如下 %response.setContentType(text/html;charsetutf-8);out.println(h1response内置对象/h1);out.println(hr);response.sendRedirect(request.jsp);//request.getRequestDispatcher(request.jsp).forward(request, response);
%首先使用重定向交给request.jsp来处理。response.jsp代码如下
bodyh1request对象/h1hr你是谁%request.getParameter(username) %/body这里仅仅获得用户名进行输出。使用重定向时结果如下
可以看到输入的用户名没有显示出来这是因为重定向本质上相当于两次请求而前一次请求不保存所以没能得到用户名。同时可以看到地址栏中的URL地址由response.jsp变为了request.jsp。
第二次修改response.jsp的代码如下 %response.setContentType(text/html;charsetutf-8);out.println(h1response内置对象/h1);out.println(hr);//response.sendRedirect(request.jsp);request.getRequestDispatcher(request.jsp).forward(request, response);
%使用转发将请求转发给request.jsp来处理结果如下可以看到页面得到了请求中的用户名并进行显示这是由于转发时客户端只有一次请求服务器会保存这次请求等到转发返回时将结果返回给客户端。同时页面显示的是request.jsp的内容但地址栏中的URL地址并没有变化。 这就是请求转发与请求重定向的区别。