SpringMVC转发与重定向
1-转发 forward
含义:当controller收到了请求后,返回了"forward:/xxxx"时,forward就代表着转发到目录下的xxxx,会接收到视图,但此时浏览器地址不会发生变化
2-重定向redirect
含义:当controller收到了请求后,返回了"redirect :/xxxx"时,redirect就代表着当前的请求重新定向到目录下的xxxx,此时地址发生了变化
3-自定义视图解析器ViewResolver
如果写法为"forward:/xxxx"或者"redirect :/xxxx"时,那么就不能再使用默认的视图解析器InternalResourceViewResolver进行默认处理,InternalResourceViewResolver的配置在xml中如下
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
默认情况下,在xml中配置的InternalResourceViewResolver会帮助我们直接进行拼串,…那么必然是找不到"forward:/xxxx"或者"redirect :/xxxx"的,所以就必须使用自定义视图解析器帮助我们解析,做法如下:
(1)准备一个继承于ViewResolver接口和Ordered接口的类,实现方法(Ordered接口是为了指定每个视图解析器的优先级的!),在里面对controller的返回值进行处理,返回自定义的视图。
(2)视图继承自View方法,重写了render方法,这个方法里对数据进行渲染与展示。
(3)放入MVC的ioc容器中,配置优先级,让spring找到它。