ModelAndView默认是使用转发(forward)方式来完成请求的结果画面,使用RedirectView的话,则会使用重新导向(Redirect)将请求重导到指定的结果位置。如:
java 代码HelloController
- package org.beans;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.Controller;
- import org.springframework.web.servlet.view.RedirectView;
- public class HelloController implements Controller {
- private String viewPage;
- public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
- String user=request.getParameter("user");
- return new ModelAndView(viewPage,"user",user);
- }
- public void setViewPage(String viewPage) {
- this.viewPage = viewPage;
- }
- }
xml 代码
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
- <beans>
- <bean name="helloController" class="org.beans.HelloController"
- abstract="false" singleton="true" lazy-init="default"
- autowire="default" dependency-check="default">
- <property name="viewPage">
- <value>hello</value>
- </property>
- </bean>
- <bean id="viewResolver"
- class="org.springframework.web.servlet.view.InternalResourceViewResolver"
- abstract="false" singleton="true" lazy-init="default"
- autowire="default" dependency-check="default">
- <property name="prefix">
- <value>/WEB-INF/jsp/</value>
- </property>
- <property name="suffix">
- <value>.jsp</value>
- </property>
- </bean>
- <bean id="urlHandleMapping"
- class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
- abstract="false" singleton="true" lazy-init="default"
- autowire="default" dependency-check="default">
- <property name="interceptors">
- <list>
- <ref bean="loggingInterceptor"/>
- </list>
- </property>
- <property name="mappings">
- <props>
- <prop key="/hello.do">helloController</prop>
- </props>
- </property>
- </bean>
- <bean id="loggingInterceptor" class="org.beans.LoggingInterceptor"
- abstract="false" singleton="true" lazy-init="default"
- autowire="default" dependency-check="default">
- </bean></beans>
根据如上配置如果将java 代码HelloController改成如下:
java 代码
- package org.beans;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.mvc.Controller;
- import org.springframework.web.servlet.view.RedirectView;
- public class HelloController implements Controller {
- private String viewPage;
- public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
- String user=request.getParameter("user");
- return new ModelAndView(new RedirectView(viewPage),"user",user);
- }
- public void setViewPage(String viewPage) {
- this.viewPage = viewPage;
- }
- }