学习目标:
SpringMVC的重定向和转发
学习内容:
SpringMVC的重定向和转发
学习时间:
学习产出:
在springmvc-04-controller模块下的com.springmvc.controller添加一个ModelTest类
SpringMVC的重定向和转发
1、使用视图解析器进行SpringMVC的重定向和转发
2、使用ServletAPI进行重定向和转发
使用ServletAPI需要将springmvc-servlet.xml的视图解析器注释掉
(1)ServletAPI输出
@Controller
public class ModelTest {
@RequestMapping("/m1/t1")
public void test(HttpServletRequest req, HttpServletResponse resp) throws IOException {
resp.getWriter().println("SpringMVC BY servlet API");
}
}
(2)ServletAPI进行转发
@Controller
public class ModelTest {
@RequestMapping("/m1/t1")
public void test(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
req.setAttribute("msg","使用request进行转发");
req.getRequestDispatcher("/WEB-INF/jsp/test.jsp").forward(req,resp);
}
}
页面显示:使用request进行转发
(3)ServletAPI进行重定向
@Controller
public class ModelTest {
@RequestMapping("/m1/t1")
public void test(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
resp.sendRedirect("/index.jsp");
}
}
页面跳转到index.jsp
3、通过SpringMVC来实现转发和重定向
使用SpringMVC来实现转发和重定向需要将springmvc-servlet.xml的视图解析器注释掉
(1)转发
方式一:
@Controller
public class ModelTest {
@RequestMapping("/m1/t1")
public String test1(Model model){
//转发
model.addAttribute("msg","SpringMVC方式实现转发");
return "/WEB-INF/jsp/test.jsp";//或者直接return "/index.jsp"
}
}
页面显示:SpringMVC方式实现转发
方式二:
@RequestMapping("/m1/t2")
public String test2(){
//转发二
return "forward:/index.jsp";
}
页面跳转到index.jsp,但是地址栏不变http://localhost:8080/m1/t2
(2)重定向
@RequestMapping("m1/t3")
public String test3(){
//重定向
return "redirect:/index.jsp";
}
页面跳转到index.jsp,地址栏显示http://localhost:8080/index.jsp
web中可以通过SpringMVC来实现重定向和转发,也可以重定向到另外一个请求