一、SpringMVC的视图
- SpringMVC中的视图是View接口,视图的作用渲染数据,将模型的Model中的数据展现给用户
- SpringMVC视图种类很多,默认有转发视图和重定向视图
- 当工程引入jstl依赖,转发视图自动转换为JstlView
- 若使用视图技术是Thymeleaf,在SpringMVC的配置文件有Thymeleaf视图解析器,由此视图解析器解析之后得到是ThymeleafView
1、ThymeleafView
当控制器方法所设置的视图没有任何前缀return "xxx";,此时的视图名称会被SpringMVC配置文件中所配置的视图解析器解析,视图名称拼接视图前缀和视图后缀所得到最终路径,会通过转发的方式实现跳转。
@Controller
public class HelloController {
@RequestMapping("/")
public String index() {
return "index";
}
}
被springMVC.xml配置文件,视图解析器解析
2、转发视图
- SpringMVC中默认是转发视图是InternalResourceView
- SpringMVC中创建的转发视图情况是:
- 当控制器方法所设置的视图名称是”forward:”为前缀时,创建InternalResourceView视图,此时的视图名称不会被SpringMVC配置文件的视图解析器解析,而是将前缀的”forward:”去掉,剩余部分作为最终路径通过转发的方式实现跳转。
- 地址栏不发生变化,1次请求
- WEB-INFO的html页面不能浏览器直接访问,只能转发
①当访问http://localhost:8080/YuTest/testForward时,创建InternalResourceView视图
然后实现转发/test,地址栏没变。创建ThymeleafView,跳转到success.html页面
3.重定向视图 2次请求
- SpringMVC默认的重定向视图是RedirectView
- 当控制器方法所设置的视图名称以”redirect:”为前缀时,创建RedirectView视图,此时视图名称不会被SpringMVC配置文件的配置视图解析,而是将”redirect:”前缀去掉,剩余部分作为最终路径重定向实现跳转
- 重定向地址栏发生变化
@RequestMapping("/testRedirect")
public String test3(){
return "redirect:/test";
}
4.视图控制器view-controller
在控制器方法中,仅仅用来跳转页面,没有其他业务逻辑时,可以将处理器方法使用view-controller标签进行表示
在springMVC.xml添加
<mvc:view-controller path="/" view-name="index"></mvc:view-controller>
【注意】
控制器所有的请求映射全部失效。需要在springMVC.xml添加开启mvc注解驱动的标签
<mvc:annotation-driven />
5.访问JSP页面
在springMVC.xml添加
<!--注解扫描-->
<context:component-scan base-package="com.atguigu.mvc.controller"></context:component-scan>
<!--视图解析-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/templates/"></property>
<property name="suffix" value=".jsp"></property>
</bean>