从控制器类向前端页面跳转时,指定传递的页面
modelandview 中的view
1.当返回的就是我要显示的页面名时,使用thymeleaf解析器(thymeleaf设置的视图解析器)解析出文件地址,转发方式跳转到该页面
2.当以forward为前缀时,创建internalsersourceview视图,此时不会直接被thymeleaf解析,而是将forward去掉,寻找控制器的value一样的方法,用thymeleaf解析该方法的返回值,并请求转发访问该页面
@RequestMapping("/forward_thymeleaf")
public String forwrad_thyleaf()
{
return "forward:/test_thymeleaf";
}
会寻找有 @RequestMapping("/test_thymeleaf")的控制方法,用thymeleaf解析该方法的返回值,得出文件的路径,并请求转发跳转至该页面
2.当以redirect为前缀时,创建internalsersourceview视图,此时不会直接被thymeleaf解析,而是将redirect去掉,寻找控制器的value一样的方法,用thymeleaf解析该方法的返回值,并重定向访问该页面
@RequestMapping("/forward_thymeleaf")
public String forwrad_thyleaf()
{
return "redirect:/test_thymeleaf";
}
会寻找有 @RequestMapping("/test_thymeleaf")的控制方法,用thymeleaf解析该方法的返回值,得出文件的路径,并请求重定向至该页面-
package org.hxut.rj1192.zyk;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ViewController {
@RequestMapping("/test_thymeleaf")
public String thyleaf()
{
return "test_restful";
}
@RequestMapping("/")
public String thyleafsucess()
{
return "index";
}
@RequestMapping("/forward_thymeleaf")
public String forwrad_thyleaf()
{
return "forward:/test_thymeleaf";
}
@RequestMapping("/redirect_thymeleaf")
public String redirect_thyleaf()
{
return "redirect:/test_thymeleaf";
}
}
forward和redirect是不管返回值是model modelandview 都可以使用
@RequestMapping(value = "/update2")
public ModelAndView after_choose_change(Books books)
{
booksServiceimpl.updateBook(books);
System.out.println("books 这是修改后的books"+books);
ModelAndView modelAndView=new ModelAndView();
modelAndView.setViewName("redirect:/books/allbooks");
return modelAndView;
}
4.当我由控制方法跳转到页面时,不需要传递数据,仅仅是告诉thymeleft我跳转的页面(仅有view)时,可以在spring.xml中(视图控制器的xml文件)中写这句,注意
<mvc:annotation-driven/>一定要写,否则其他@requestparam注解会全部失效
<mvc:view-controller path="/" view-name="index"></mvc:view-controller>
<!-- 开启mvc注解驱动-->
<mvc:annotation-driven/>
和下面是一样的效果
@RequestMapping("/")
public String thyleafsucess()
{
return "index";
}