springmvc (四种跳转方式)重定向,转发到页面和action的区别

您所在的位置:网站首页 java中跳转到指定页面 springmvc (四种跳转方式)重定向,转发到页面和action的区别

springmvc (四种跳转方式)重定向,转发到页面和action的区别

2024-03-23 17:19| 来源: 网络整理| 查看: 265

重定向与转发的区别:

1.重定向访问服务器两次,转发只访问服务器一次。

2.转发页面的URL不会改变,而重定向地址会改变

3.转发只能转发到自己的web应用内,重定向可以重定义到任意资源路径。

4.转发相当于服务器跳转,相当于方法调用,在执行当前文件的过程中转向执行目标文件,两个文件(当前文件和目标文件)属于同一次请求,前后页 共用一个request,可以通过此来传递一些数据或者session信息,request.setAttribute()和 request.getAttribute()。而重定向会产生一个新的request,不能共享request域信息与请求参数

5.由于转发相当于服务器内部方法调用,所以转发后面的代码仍然会执行(转发之后记得return);重定向代码执行之后是方法执行完成之后进行重定向操作,也就是访问第二个请求,如果是方法的最后一行进行重定向那就会马上进行重定向(重定向也需要return)。

6.无论是RequestDispatcher.forward方法,还是HttpServletResponse.sendRedirect方法,在调用它们之前,都不能有内容已经被实际输出到了客户端。如果缓冲区中已经有了一些内容,这些内容将被从缓冲区中移除。

可以这么理解:

转发相当于,张三向你借钱,但是你兜里没钱,所以你去找李四借到钱之后借给张三。对于张三而言并不知道你的钱是和李四借的。

重定向相当于,张三向你借钱,你兜里没钱,你告诉他李四有钱,所以张三再次去找李四借钱。

重定向和转发是Spring MVC中用于控制请求的两种方式。

重定向是指将请求重新发送到一个新的URL,新的URL可以是另一个控制器方法、一个静态资源或者一个外部URL。通过重定向可以实现页面跳转和访问其他资源。在Spring MVC中,可以使用redirect:前缀来实现重定向。例如,return “redirect:/index.jsp”;表示重定向到index.jsp页面。

转发是指将请求转发给另一个控制器方法或者一个JSP页面进行处理,转发不改变客户端的URL。在Spring MVC中,可以使用forward:前缀来实现转发。例如,return “forward:/url”;表示将请求转发到/url地址。转发可以在服务器内部进行,因此可以共享请求和响应对象。

重定向和转发的选择取决于具体的需求。如果需要跳转到一个新的URL或者访问其他资源,可以使用重定向。如果需要将请求转发给另一个控制器方法或者JSP页面进行处理,可以使用转发

前端请求发送页面 1.请求转发页面 2.请求转发action 3.重定向页面 4.重定向action

具体的Controller类,实现请求与转发

package com.powernode.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class JumpAction { @RequestMapping("/one.action") public String one(){ System.out.println("这是请求转发页面。。。。"); return "main";//默认这是请求转发,使用视图解析器进行前后缀拼接进行页面跳转 } @RequestMapping("/two.action") public String two(){ System.out.println("这是请求转发action跳转。。。。"); //forward:这组字符串可以屏蔽前后缀的拼接 return "forward:/other.action"; } @RequestMapping("/three.action") public String three(){ System.out.println("这是重定向页面。。。。"); //redirect: 这组字符串可以屏蔽前缀后缀的拼接,实现重定向跳转 return "redirect:/admin/main.jsp"; } @RequestMapping("/four.action") public String four(){ System.out.println("这是重定向 action跳转。。。。"); //redirect: 这组字符串可以屏蔽前缀后缀的拼接,实现重定向跳转 return "redirect:/other.action"; } }

springmvc.xml的配置文件

不需要去创建,直接拿来使用即可. 1)HttpServletRequest 2)HttpServletResponse 3)HttpSession 4)Model 5)Map 6)ModelMap //做一个数据,传到main.jsp页面上 Users u = new Users(“张三”,22);

//传递数据 request.setAttribute("requestUsers",u); session.setAttribute("sessionUsers",u); model.addAttribute("modelUsers",u); map.put("mapUsers",u); modelMap.addAttribute("modelMapUsers",u);

注意:Map,Model,ModelMap和request一样,都使用请求作用域进行数据传递.所以服务器端的跳转必须是请求转发.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3