servlet中的请求转发主要有三种方式:
1、 forward:是指转发,将当前request和response对象保存,交给指定的url处理。并没有表示页面的跳转,所以地址栏的地址不会发生改变。
2、 redirect:是指重定向,包含两次浏览器请求,浏览器根据url请求一个新的页面,所有的业务处理都转到下一个页面,地址栏的地址会变发生改变。
3、 include:意为包含,即包含url中的内容,进一步理解为,将url中的内容包含进当前的servlet当中来,并用当前servlet的request和respose来执行url中的内容处理业务.所以不会发生页面的跳转,地址栏地址不会发生改变。
测试如下:
首先编写三个html界面:分别是登录界面:login.html;登录成功界面:success.html;登录失败界面:fail.html.
之后,处理登录逻辑的servlet类如下:
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("gbk");
response.setCharacterEncoding("gbk");
response.setContentType("text/html;charset=gbk");
String username = request.getParameter("username");
String password = request.getParameter("password");
PrintWriter pw = response.getWriter();
pw.write("include包含。");
if(username.equals("123")&&password.equals("123")){
//include测试
request.getRequestDispatcher("/success.html").include(request, response);
}else{
//在sendRedict中url前必须加上当前web程序的路径名.....
response.sendRedirect(request.getContextPath()+"/fail.html");
}
}
运行后如果输入正确的用户名密码,则执行include方法,界面显示:include包含。 登录成功!并且地址栏地址未改变,若是输入错误登录名或者密码,界面显示:登录失败! 并且地址栏地址改变。其中要注意的是sendRedirect方法中在要跳转的页面url前必须加上当前web程序路径名,这个路径通过request.getContextPath()可以得到。
如果吧其中include方法改为forward方法:
if(username.equals("123")&&password.equals("123")){
request.getRequestDispatcher("/success.html").forward(request, response);
}else{
//在sendRedict中url前必须加上当前web程序的路径名.....
response.sendRedirect(request.getContextPath()+"/fail.html");
}
登录时输入正确信息,则跳转的页面地址不变,显示:登录成功!不包含url中的内容。
总结如下:
redirect与include、forward的区别在于是不是同一个Request,redirect会有两次交互。
include与forward的区别在于输出的内容,include包含本身servlet与跳转页面内容的结果,而forward不包含本身servlet的内容。
分享到:
相关推荐
servlet中实现请求转发,用户登录,在servlet中验证用户名和密码.
servlet请求转发、请求重定向、请求包含 获取form数据
java servlet请求转发重定向 适合于初学者更好的了解页面跳转和原理
javaServlet请求转发和重定向.pdf
通过网上总结的Servlet的转发与重定向的区别介绍。希望可以帮的上大家
内含请求转发,过滤器,${}使用
一、Servlet请求和响应 web容器概念:顾名思义就像一个盒子,里面可以装东西,这里的web容器 (Tomcat,WebLogic,WebSphere)就是装载Servlet和JSP的环境、负责管理它们的各种对象,并且负责 它们的生命周期以及相关...
当服务器接收到HTTP请求时,它会将请求转发给相应的Servlet进行处理。Servlet可以动态地生成HTML、XML或其他格式的响应并将其发送回客户端浏览器。 Servlet通过继承javax.servlet.http.HttpServlet类来创建。每个...
创建web工程还有代码是试练,请求方式+重定向+请求转发+cookie+session+jsp(四大作用域九大内置对象)
什么是servlet? web服务器 web应用(b/s架构软件)的目录结构: Web.xml 参数 系统如何提供表单给用户? 系统如何处理用户提交的表单 1路径问题 ...Servlet的请求转发方式 状态持久 范围 过滤器 事件处理
NULL 博文链接:https://macleo.iteye.com/blog/1045211
Servlet被初始化之后,它已经可以处理来自客户端的请求,每一个来自客户端的请求都被描述成一个ServletRequest对象,Servlet的响应被描述成一个ServletResponse对象。 当客户端发出请求时,Servlet引擎传递给Servlet...
对Servlet基础知识进行总结,适合新手入门用,里面详细的介绍了Servlet运行原理以及如何创建等
请求转发:在最终的 servlet (TestServlet) 中,request和中转的那个servlet(ForwardServlet)中的request对象是同一个对象 重定向:在最终的 servlet (TestServlet) 中,request和中转的那个servlet(SendServlet...
重定向时服务器产生两次请求,转发产生一次请求,重定向时可以转发到项目以外的任何网址,转发只能在当前项目里转发 重定向会导致request对象信息丢失。转发则不会 转发的url不会变,request.getRequestDispatch()...
如果说将Spring上下关联到Servlet容器中,是SpringMVC框架的第个亮点,那么在请求转发流程中,SpringMVC对各种处理环节编程元素的抽象,就
JavaWeb新版教程Servlet-1vlet-请求转发.avi
简介:本项目是javaweb最佳实践,用到一些诸如servlet的... service:业务层,处理业务 servlet:web层,获取页面数据,请求分发转向。baseServlet作为最基础的servlet,利用反射技术,使得servlet开发方便快捷了许
Logging Proxy 是一个简单的代理 Servlet,它将其请求转发到一个或多个在 servlet 的 init 参数中配置的服务器,并可选择将请求、响应和标头记录为文件。 它已经在 Tomcat 8 上进行了测试。它不是一个可以在浏览器中...