fayeyiwang 2011-02-22
spring 的MVC中,提供控制器的是org.springframework.web.servlet.DispatcherServlet负责分发控制对象。
在WEB.XML中配置。
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet><servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>在WEB.XML中定义个控制器的实例,所有以*.do结尾的请求都由控制器来处理。contextConfigLocation参数来设置BEAN定义文件的位置和名称,如果不设置,则默认使用SERVLET为前置,读取SERVLET名称-servelt.xml作为BEAN定义文件。你也可以设置多个BEAN的定义文件来源:
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-config.xml,/WEB-INF/mvc-config.xml</param-value>
</init-param>SPRING的MVC框架中控制器要实现org.springframework.web.servlet.mvc.Controller接口,然后必须实现其
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception
方法。
处理完以后回传,org.springframework.web.servlet.ModelAndView实例,包括了要呈现在VIEW层数据。
JAVA代码:
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponseresponse)throwsException{
returnnewModelAndView("hello","hello",greeting);
}ModelAndView的第一个参数为要呈现的目标网页,第二个参数来设置取得MODEL对象的KEY,而第三个参数是给VIEW层的数据对象。
然后在mvc-config.xml配置视图跳转代码:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<propertyname="prefix"value="/WEB-INF/jsp/"></property>
<propertyname="suffix"value=".jsp"></property>
</bean><bean name="/hello.do" class="com.action.HelloAction">
<propertyname="greeting">
<value>hello5566</value>
</property>
</bean>
实际上DispatchServlet 必须根据一个HandlerMapping来决定请求由哪一个CONTROLLER,如果不配置默认采用BeanNameUrlHandlerMapping也就是根据BEAN定义时的NAME属性及用户请求的URL来决定使用哪一个CONTROLER实例。
在该例子中,请求hello.do时候,控制器根据hello.do的名称,决定使用name为hello.do的BEAN的实例。当CONTROL传回MODELANDVIEW后,控制器可以配置一个viewResolver实例来将对应的请求进行转发。
因为我们现在使用的是JSP技术,所以配置org.springframework.web.servlet.view.InternalResourceViewResolver,需要设置,viewClass,该参数中有两个参数prefix,suffix,这两属性会与MODELANDVIE传回的路径相结合,例如传回hello字符串,则返回的JSP的实际路径就是、/WEB-INF/jsp/hello.jsp