Servlet中的跳转(redirect和forward)

Forward是通过RequestDispatcher对象的forward(HttpServletRequest request,HttpServletResponse response)方法来实现的

RequestDispatcher dispatcher = request.getRequestDispatcher("/servlet/welcom.jsp");
dispatcher.forward(request,response);

getRequestDispatcher()的参数必须以“/”开始,代表Web应用程序的根目录

当执行forward动作时不能有任何输出到客户端,否则会抛出IllegalStateException异常

Redirect是利用服务器返回的状态码来实现的,服务器通过HttpServletResponse的setStatus(int status)方法设置状态码,301代表永久重定向,302代表临时性重定向,HttpServletResponse把setStatus()与setHeader()方法封装成另一个方法sendRedirect(String url)

当使用forward形式跳转时,地址栏会显示跳转前的Servlet访问地址,因为该跳转是在服务器端实现的,对客户端浏览器是透明的

当使用redirect时,跳转是在客户端实现的,实际上请求了两次服务器,第一次获取了重定向的状态码和地址,第二次访问真实的地址

时间: 2024-10-07 05:34:27

Servlet中的跳转(redirect和forward)的相关文章

WEB-INF下的jsp通过servlet中超链接跳转

在J2EE中其主要安全性就体现在web工作目录的WEB-INF文件夹下.如果将一个页面保存在WEB-INF文件下 ,那么该页面则不能被用户访问,就好比小偷都看不见我有什么,他还能知道要偷什么吗.. 因此如果将一个页面放在WEB-INF文件夹下,那么该页面的安全性将得到提高... 但有时候当我们需要访问该页面时,却无法访问,如何能够访问WEB-INF文件夹下的页面呢? struts为此提供了很便捷的跳转环境.在struts中每一个跳转都是通过一个action来处理的,action处理完了之后在fo

[Java][Web] Servlet中转发和重定向比较

Servlet中页面跳转的两种方式 请求转发 使用requestDispatcher对象 request.getRequestDispatcher("path").forward(request, response); 使用JSP动作元素 <jsp:forward page="/"> 请求重定向 使用response的sendRedirect方法 response.sendRedirect("path"); 请求转发与请求重定向的区别

servlet中实现页面跳转return “r:”和return “f:

servlet中实现页面跳转return “r:”和return “f:”的区别和作用 2015-07-28 14:22741830480 | 浏览 48 次 Pascal 2015-07-28 14:26 #知道行家专业创造价值,火热招募中!# 提问者采纳 热心网友 r是redirect重定向,参数会丢失,url全是跳转后的url.f是forward服务器内部完成转发(参数仍在request里面),url不会变的.

Servlet、JSP中页面跳转的方式

一.Servlet:当然,在servlet中,一般跳转都发生在doGet, doPost等方法里面.1)  redirect 方式response.sendRedirect("success.jsp");页面的路径是相对路径.sendRedirect可以将页面跳转到任何页面,不一定局限于本web应用中,如:response.sendRedirect("http://www.ycul.com");跳转后浏览器地址栏变化.这种方式要传值出去的话,只能在url中带para

Spring Security4.1.3实现拦截登录后向登录页面跳转方式(redirect或forward)返回被拦截界面

一.看下内部原理 简化后的认证过程分为7步: 用户访问网站,打开了一个链接(origin url). 请求发送给服务器,服务器判断用户请求了受保护的资源. 由于用户没有登录,服务器重定向到登录页面 填写表单,点击登录 浏览器将用户名密码以表单形式发送给服务器 服务器验证用户名密码.成功,进入到下一步.否则要求用户重新认证(第三步) 服务器对用户拥有的权限(角色)判定: 有权限,重定向到origin url; 权限不足,返回状态码403("forbidden"). 从第3步,我们可以知道

Servlet中的转发

Servlet中可以把当前的请求和响应转发到另一个Servlet中,并由另一个Servlet负责输出响应.转发时,源Servlet会把它的ServletRequest对象和ServletRespnse对象都传递给目标Servlet.转发需要调用javax.servlet.RequestDispatcher接口的forward方法.转发的路径在生成RequestDispatcher实例的时候传入.有两种方法可生成RequestDispatcher实例,分别: ServletContext的getR

Java开发之Servlet之间的跳转

一.转向(Forward) 1.要点说明 转向是通过RequestDispatcher对象的forward()方法来实现的.RequestDispatcher可以通过HttpServletRequest的getRequestDispatcher()方法获得.getRequestDispatcher()方法的参数必须以“/”开始.Forward不仅可以跳转到本应用的另一个Servlet.JSP页面,也可以跳转到另一个文件,甚至WEB-INF文件夹下的文件. 转向通过request.setAttri

servlet中的相对路径和绝对路径

servlet中,所有路径的配置都要用绝对路径. 什么是绝对路径,就是以“/”开头的路径(开发中就这样理解). 实际开发中,“/”所代表的含义不同,但主要分以下两种情况: 1.servlet内部配置路径 servlet内部的含义就是:在客户端看不到,全是在(应用)后台处理的部分(简单说,就是除了JSP以外的所有地方).包含以下2点: a. web.xml中servlet 配置的路径 <servlet>  <servlet-name>helloWorld</servlet-na

JSP、Servlet中的相对路径和绝对路径

1.JSP.Servlet中的相对路径和绝对路径  前提:假设你的Http地址为http://192.168.0.1/你的web应用为test,path="/test"那么你的web应用URL为http://192.168.0.1/test/ 如果JSP,JS文件放在WEB-INF目录下根本无法访问的,JSP如果放在WEB-INF目录下可以通过服务器内部转向进行访问(主要是为了页面的安全),但是JS是通过客户端向服务器请求的,所以图片以及一些JS,CSS只能放在WEB-INF外面