广告制作公司网站建设模板,河北智能网站建设,html5如何实现网站开发,易优系统助手插件SpringMVC的视图
转发和重定向的区别及其原理,参考文章
视图类型及特点
视图的作用就是将Model中的数据渲染到页面上并展示给用户,SpringMVC中视图对应的View接口有三种实现类对应三种视图解析器
默认有转发视图InternalResourceView和重定向视图RedirectView以及Thymeleaf…SpringMVC的视图
转发和重定向的区别及其原理,参考文章
视图类型及特点
视图的作用就是将Model中的数据渲染到页面上并展示给用户,SpringMVC中视图对应的View接口有三种实现类对应三种视图解析器
默认有转发视图InternalResourceView和重定向视图RedirectView以及ThymeleafView视图,当工程引入jstl的依赖转发视图会自动转换为JstlView
// 视图接口
View view;
// 获取视图名称
String viewName mv.getViewName();
if (viewName ! null) {// 解析视图名称,根据视图名称创建对应的视图解析器view resolveViewName(viewName, mv.getModelInternal()localerequest);
}ThymeleafView视图
当控制器方法返回或在ModelView对象中设置的视图名称没有任何前缀时,此时的视图名称会被SpringMVC配置文件中所配置的ThymeleafView视图解析器解析
ThymeleafView视图解析器会给视图名称拼接上视图前缀和视图后缀得到页面的物理地址,然后解析页面中的Thymeleaf语法渲染数据并通过转发的方式实现跳转
a th:href{/testThymeleafView}测试ThymeleafView/abrRequestMapping(/testThymeleafView)
public String testThymeleafView(){return success;
}转发视图
当控制器方法返回或在ModelView对象中所设置的视图名称以forward:为前缀时,此时的视图名称会被InternalResourceView视图解析器解析
InternalResourceView视图解析器会将前缀forward:去掉,剩余部分作为最终请求路径转发到某个请求或页面(可以解析jsp页面中的语法)
a th:href{/testForward}测试InternalResourceView/abr RequestMapping(/testForward)
public String testForward(){// 这种方式转发到的页面中如果有ThymeleafView语法是不会被解析的return forward:/testThymeleafView;
} 重定向视图
当控制器方法返回或在ModelView对象中所设置的视图名称以redirect:为前缀时,此时的视图名称会被RedirectView视图解析器解析
RedirectView视图解析器会将前缀redirect:去掉,如果剩余部分以/开始则会自动拼接上下文路径作为最终请求路径重定向到某个请求或页面
a th:href{/testRedirect}测试RedirectView/abrRequestMapping(/testRedirect)
public String testRedirect(){//redirect:/会自动加上下文路径return redirect:/testThymeleafView;
}配置视图控制器view-controller
在控制器方法中只需要实现页面跳转(只设置页面视图名称)功能而没有其他业务,此时可以在SpringMvc的配置文件中使用view-controller标签表示控制器方法
首先要引入mvc的命名空间及其约束文件只要在SpringMvc的配置文件中设置了view-controller标签,此时只有视图控制器配置的请求才会生效,其他控制器方法中配置的请求映射将全部失效开启MVC的注解驱动mvc:annotation-driven,可以保证视图控制器设置的请求和控制器方法设置的请求全部都会被前端控制器处理
属性功能path设置处理的请求地址即请求映射RequestMappingview-name设置请求地址所对应的视图名称即控制器方法返回值,依然遵守视图解析器的流程
需求: WEB-INF目录下的资源是受保护的即不能通过路径在浏览器中直接访问
!DOCTYPE html
!--引入thymeleaf的命名空间,使用thymeleaf标签--
html langen xmlns:thhttp://www.thymeleaf.org
headmeta charsetUTF-8title首页/title
/head
bodyh1Hello SpringMvc/h1
/body
/html单独定义一个控制器方法跳转到首页
Controller
public class HelloController {// 处理http://localhost:8080/SpringMvc/请求RequestMapping(/)public String index() {// 返回逻辑视图名称,对应页面的物理地址为/WEB-INF/templates/index.htmlreturn index;}
}在SpringMvC的核心配置文件中使用视图控制器标签跳转到首页
?xml version1.0 encodingUTF-8?
beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:mvchttp://www.springframework.org/schema/mvcxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd!--自动扫描控制层组件--context:component-scan base-packagecom.atguigu.mvc.controller/context:component-scan!--配置Thymeleaf视图解析器--bean idviewResolver classorg.thymeleaf.spring5.view.ThymeleafViewResolver/bean!--视图控制器,设置请求对应的视图名称实现页面的跳转--mvc:view-controller path/ view-nameindex/mvc:view-controller!--开启MVC的注解驱动,保证视图控制器设置的请求和控制器方法设置的请求全部都会被前端控制器处理--mvc:annotation-driven /
/beans