SpringMVC 实现页面跳转
程序员文章站
2024-03-15 11:22:59
...
1.页面跳转的两种方式
1.1请求转发
- request.getRequestDispatcher(path).forward(request, response);
- 一次请求
- 地址栏路径不会发生变化
- 可以使用请求作用域传参
- 只能访问内部资源(当前项目下的资源)
- 可以访问安全目录下的资源(WEB-INF)
- 路径中的/表示项目根路径
响应重定向
response.sendRedirect(location);
- 多次请求
- 地址栏路径会发生变化(最后一次请求的路径)
- 不能使用请求作用域传参
- 既可以访问内部资源, 也可以访问外部资源
- 不能访问安全目录下的资源(WEB-INF)
- 路径中的/表示服务器根路径
2.SpringMVC实现页面跳转
2.1请求转发
- 通过HttpServletRequest实现
- 通过返回字符串实现
- 通过返回null或void返回实现(了解)
@Controller
@RequestMapping("/demo")
public class DemoController {
@GetMapping("/demo4")
public Object demo4() {
System.out.println("DemoController.demo4");
return null;
}
@GetMapping("/demo3")
public void demo3() {
System.out.println("DemoController.demo3");
}
@GetMapping("/demo2")
public String demo2() {
System.out.println("DemoController.demo2");
// /表示项目根路径
return "forward:/demo/demo1";
}
@GetMapping("/demo1")
public void demo1(HttpServletRequest req, HttpServletResponse resp) throws Exception {
System.out.println("DemoController.demo1");
req.getRequestDispatcher("/WEB-INF/jsp/demo.jsp").forward(req, resp);
}
}
2.2响应重定向
- 通过HttpServletResponse对象实现
- 通过返回字符串实现(redirect:)
- 通过返回View对象实现
@Controller
@RequestMapping("/demo")
public class DemoController {
@GetMapping("/demo3")
public View demo3(HttpServletRequest req) {
// /表示服务器根路径
RedirectView view = new RedirectView(req.getContextPath() + "/demo.jsp");
return view;
}
@GetMapping("/demo2")
public String demo2() {
System.out.println("DemoController.demo2");
// /表示项目根路径
return "redirect:/demo.jsp";
}
@GetMapping("/demo1")
public void demo1(HttpServletRequest req, HttpServletResponse resp) throws Exception {
System.out.println("DemoController.demo1");
// /表示服务器根路径
resp.sendRedirect(req.getContextPath() + "/demo.jsp");
}
}
上一篇: 空格和换行符造成3像素距离问题解决
下一篇: C - 计算两点间的距离