用来记录一些原创性的总结
在使用SpringMVC开发Web应用时会存在一些没有业务逻辑,只需要直接展示对应的页面的请求。对于这些请求我们可以不定义Controller处理方法,直接建立请求路径和视图的对应关系。在使用基于XML的SpringMVC配置时可以通过mvc namespace提供的view-controller来指定请求路径和视图的对应关系。下面的代码中就指定了当请求路径是/
时将直接响应名为index
的视图。如果有需要还可以通过status-code
属性指定需要响应的Http状态码。
<mvc:view-controller path="/" view-name="index"/>
如果是使用基于Java配置的SpringMVC,则可以通过实现WebMvcConfigurer
的addViewControllers
定义请求路径直接对应的响应视图。
当视图名称是以redirect:
前缀开始时会自动转换为一个RedirectView对象用以进行页面的重定向。所以如果需要直接指定一个路径对应的重定向路径时也可以通过<mvc:view-controller/>
来进行,比如需要在请求/hello
时自动重定向到/world
可以进行如下定义:
<mvc:view-controller path="/hello" view-name="redirect:/world"/>
基于这种需求SpringMVC也特意为我们提供了<mvc:redirect-view-controller/>
直接定义请求路径与重定向路径的对应关系。所以上面的需求可以重写为如下这样:
<mvc:redirect-view-controller redirect-url="/world" path="/hello"/>
如果我们在处理某一个请求时只需要响应一个状态码,则可以直接通过<mvc:status-controller/>
来定义。下面的示例定义了当请求/bad_request
时会直接响应Http状态码400。
<mvc:status-controller status-code="400" path="/bad_request"/>
直接指定请求路径对应的重定向路径或者是对应的状态码在基于Java类的配置时也都是通过WebMvcConfigurer
的addViewControllers
定义的。
(注:本文是基于Spring4.1.0所写)