200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > springmvc重定向到另一个项目_Spring MVC重定向和转发详解

springmvc重定向到另一个项目_Spring MVC重定向和转发详解

时间:2020-11-24 09:03:09

相关推荐

springmvc重定向到另一个项目_Spring MVC重定向和转发详解

Spring MVC请求方式分为转发、重定向两种,是用forward和redirect关键字在controller层进行处理。本文我们就来探讨一下Spring MVC请求方式中的Spring MVC重定向和转发。

HttpServletResponse.sendRedirect方法和RequestDispatcher.forward方法都可以让浏览器获得另外一个URL所指向的资源,但两者的内部运行机制有很大的区别。我们依次来看看转发和重定向的定义和路径支持。

1.转发

return "index.jsp"; //这种方式默认的就是转发

return "forward:/index.jsp"; //这是全写的方式

路径支持

相对路径:相对于当前浏览器的地址 ../

根路径:以/开始(/代表当前项目)

绝对路径:不支持的——最大的范围就是当前的项目

@Controller

@RequestMapping("MyCno2")

public class MyCno2 {

@RequestMapping("demo1")

public String demo1(){

//return "../index.jsp";

return "/index.jsp";//相当于 return "forward:/index.jsp";

}

}

在类上面加 @RequestMapping("MyCno2") 是为避免不同类中方法有重名而导致不知道是进入那个类中的方法,加上之后 /MyCno2/demo1就知道是进入MyCno2类下面的demo1方法。

2.重定向

return "redirect:index.jsp";

路径支持

相对路径:支持使用的——相对于当前的浏览器路径

根路径:/ ——代表当前项目

绝对路径:支持的 如: return "redirect:";

@RequestMapping("demo2")

public String demo2(){

//return "redirect:index.jsp";

//return "redirect: ../index.jsp";

return "redirect:/index.jsp";

//return "redirect:";

}

我们来看一下请求转发和重定向的区别:

请求重定向和请求转发都是web开发中资源跳转的方式。

请求转发是服务器内部的跳转

地址栏比发生变化,只有一个请求相应

4.可以通过request域对跳转目标的请求

5.请求重定向是浏览器自动发起对跳转目标的请求

6.地址栏会发生变化

7.两次请求相应

8.无法通过request域传递对象

下面讲一讲如何在SpringMVC中实现转发和重定向

1.在SpringMVC中仍然可以使用传统方式实现转发和重定向

request.getRequestDispatcher(" ").forward(request,response);

response.sendRedirect(" ");

2.在SpringMVC中也提供了快捷方式实现转发和重定向

只要在返回视图时,使用如下方式指定即可:

/**

* 实现转发

*/

@RequestMapping("/hello11.action")

public String hello11(HttpServletRequest request){

request.setAttribute("name", "cjj");

return "forward:hello.action";

}

/**

* 实现重定向

*/

@RequestMapping("/hello12.action")

public String hello12(HttpServletRequest request){

request.setAttribute("name", "cjj");

return "redirect:/hello.action";

}

3.可以利用转发,实现允许用户访问WEB-INF下保存的指定资源

/**

* 通过转发 实现 访问到在WEB-INF目录下的资源

* @throws Exception

*/

@RequestMapping("/toFile.action")

public String toFile(String vname){

if("form".equals(vname)){

return vname;

}else{

return "err";

}

}

Spring MVC重定向和转发在Spring MVC框架体系中发挥着不可忽视的作用,然而这也是容易被我们忽视的知识点。为了避免我们对知识的遗漏,推荐观看本站的Spring MVC视频教程,全面系统的学习Spring MVC的知识讲解和解析,让你再无遗漏知识点!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。