SpringMVC后端Controller页面跳转的三种方式

SpringMVC后端Controller页面跳转的三种方式

一、前言

常见的Web开发中,我们在使用SpringMVC框架时,经常遇到多种不同情况下不同的返回方式,有的多种返回页面的方式,也有的是多种返回数据到前端的方式,这篇文章主要总结常见Web开发中针对不同情况返回页面的方式。对于不同情况下,具有返回数据到前端的多种方式请参考我之前写过的一篇SpringBoot相关文章: SpringBoot系列教程(七十):SpringBoot的Controller四种方法返回值类型

二、 根据 String 字符串跳转

1、返回字符串 --- 返回jsp页面

/**

* description: 返回字符串 --- 返回jsp页面,JSP通过EL表达式取值

* @author cao

* @date 2019年4月10日 下午10:17

*/

@RequestMapping(value={"/forwardJsp"})

public String forwardJsp(Model model){

model.addAttribute("name", "张三");

return "modules/sys/sysLogin";

}

2、返回字符串 --- 服务端转发

/**

* description: 返回字符串 --- 服务端转发,JSP页面通过EL表达式取值

* @author cao

* @date 2019年4月10日 下午10:20

*/

@RequestMapping(value={"/forward"})

public String forward(Model model){

model.addAttribute("name", "张三");

return "forward:forwardJsp";

}

3、返回字符串 --- 客户端重定向

/**

* description: 返回字符串 --- 客户端重定向

* @author cao

* @date 2019年4月10日 下午10:27

*/

@RequestMapping(value="/redirect")

public String redirect(){

return "redirect:"+"/forward";

}

三、根据 request 或 response 进行跳转

1、返回 void --- 请求转发(request转发)

/**

* description: 返回 void --- 请求转发(request转发)

* @author cao

* @date 2019年4月10日 下午10:26

*/

@RequestMapping(value="/requestForward")

public void requestForward(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException{

request.setAttribute("name", "请求转发(服务端转发)");

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

}

2、返回 void --- 重定向 (response)

/**

* description: 返回 void --- 重定向 (response)

* @author cao

* @date 2019年4月10日 下午10:29

*/

@RequestMapping(value="/response")

public void response(HttpServletResponse response) throws IOException{

response.sendRedirect("/forwardJsp");

}

3、返回 void --- Json字符串

/**

* description: 返回 void --- Json字符串

* @author cao

* @date 2019年4月10日 下午10:30

*/

@RequestMapping(value="/responseJson")

public void responseJson(HttpServletResponse response) throws IOException{

response.setCharacterEncoding("utf-8");

response.setContentType("application/json;charset=utf-8");

response.getWriter().write("json串");

}

四、根据 ModelAndView 对象进行跳转

1、返回对象 ModelAndView --- 返回 jsp 页面

/**

* description: 返回对象 ModelAndView --- 返回 jsp 页面

* @author cao

* @date 2019年4月10日 下午10:32

*/

@RequestMapping(value="/modelAndViewJsp")

public ModelAndView modelAndViewJsp(){

ModelAndView modelAndView = new ModelAndView();

modelAndView.setViewName("modules/sys/sysLogin");//指定跳转的页面

modelAndView.addObject("name","李四"); //绑定传递的数据

return modelAndView;

}

2、返回对象 ModelAndView --- 服务端转发

/**

* description: 返回对象 ModelAndView --- 服务端转发

* @author cao

* @date 2019年4月10日 下午10:37

*/

@RequestMapping(value="/modelAndViewForward")

public ModelAndView modelAndViewForward(){

ModelAndView modelAndView = new ModelAndView();

modelAndView.setViewName("forward:/forwardJsp");

modelAndView.addObject("name","李四"); //绑定传递的数据

return modelAndView;

}

3、返回对象 ModelAndView --- 重定向

/**

* description: 返回对象 ModelAndView --- 重定向

* @author cao

* @date 2019年4月10日 下午10:40

*/

@RequestMapping(value="/modelAndViewRedirect")

public ModelAndView modelAndViewRedirect(){

ModelAndView modelAndView = new ModelAndView();

modelAndView.setViewName("redirect:/forwardJsp");

modelAndView.addObject("name","李四"); //绑定传递的数据

return modelAndView;

}

参考资料: forward请求转发和redirect重定向的区别图解整理

SpringMVC跳转页面方式

相关推荐

正在阅读:追书神器怎么看缓存列表 追书神器查看书籍缓存方法介绍【详解】追书神器怎么看缓存列表 追书神器查看书籍缓存方法介绍【详解】
企业私有云架构构建指南
国内365bet登录网址

企业私有云架构构建指南

📅 08-06 👁️ 2776
背包也有科技与狠活?OSPREY小鹰魔爪22升登山包南郊穿越体验
123656的网站怎么打开

背包也有科技与狠活?OSPREY小鹰魔爪22升登山包南郊穿越体验

📅 09-07 👁️ 4588