Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1965290
  • 博文数量: 498
  • 博客积分: 2078
  • 博客等级: 大尉
  • 技术积分: 1645
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-18 22:43
个人简介

安大

文章分类

全部博文(498)

文章存档

2017年(1)

2016年(2)

2015年(21)

2014年(90)

2013年(101)

2012年(267)

2011年(16)

分类:

2011-12-31 12:52:16

原文地址:Spring MVC开发流程 作者:xueliangfei

Struts的工作流程,主要涉及的类包括DispatcherServlet、HandlerMapping、Controller、Form、ModelAndView、ViewResolver。这些类是一次请求中Spring运行所涉及的类,而对于Spring的应用开发者来说,并不需要全部开发。原因当然就是Spring是一个框架,既然是一个框架,就不需要我们开发所有的类。实际上,上面的6个类再加上这些类之间的调用关系,就是Spring所提供的框架。
 

(1)DispatcherServlet是Spring的核心控制器,一个系统中只需要一个。我们可以通过继承该类来扩展一个新的Servlet,但通常我们直接使用默认的DispatcherServlet,只需要在web.xml中配置DispatcherServlet的相关属性即可。

(2)HandlerMapping是applicationContext.xml中配置元素的实例对象,该类与applicationContext.xml中的元素和属性相匹配。由于applicationContext.xml文件的元素类型已经由Spring设计者定义完成了,因此类HandlerMapping也是仅有的一个通用类,不再需要开发人员开发;我们只需要使用Spring默认的HandlerMapping实现来配置Mapping映射即可:

 

  1. <bean id="testMapping"
  2.    class="org.springframework.web.servlet.handler. SimpleUrlHandlerMapping">
  3.    <property name="mappings">
  4.      <props>
  5.        <prop key="/test.do">testAction</prop>
  6.      </props>
  7.    </property>
  8. </bean>

(3)Controller是applicationContext.xml中配置的响应处理类,该配置文件中可以配置指向多个Controller处理类,不同的业务需要不同的Controller类。因此Controller是我们要自己开发的,新开发的类需要继承Controller基类。例如在上面的testMapping映射中指定了"/test.do"映射处理类为testAction,因此这里需要配置一个对应的处理类:

  1. <bean id="testAction"
  2.     class="com.demo.spring.actions.TestAction">
  3. </bean>

(4)Form Bean是applicationContext.xml中为处理类配置的commandClass元素,表示要接收的处理表单。由于不同的HTML处理表单包含的表单元素不同,因此也需要开发多个Form类,例如我们为testAction配置一个处理表单:

  1. <bean id="testAction"
  2.     class="com.demo.spring.actions.TestAction">
  3.     <property name="commandClass">
  4.     <value>com.demo.spring.forms.TestForm</value>
  5.     </property>
  6. </bean>

(5)ModelAndView是处理类在完成业务处理后返回的对象,该对象与处理类的配置属性相关联,例如我们为testAction配置如下的两个返回对象:

  1. <bean id="testAction"
  2.     class="com.demo.spring.actions.TestAction">
  3.     <!--指定失败要返回的页面-->
  4.     <property name="formView">
  5.         <value>input</value>
  6.     </property>
  7.     <!--指定成功要返回的页面-->
  8.     <property name="successView">
  9.         <value>success</value>
  10.     </property>
  11. </bean>

则在TestAction处理结束后,我们就可以使用下面的方式来返回ModelAndView:

 

  1. return new ModelAndView(getSuccessView());
  2. return new ModelAndView(getFormView());

因此,对于ModelAndView,我们只需要配置即可。

(6)ViewResolver是ModelAndView返回后对应页面的解析器,它将根据返回页面的扩展名来查找不同的解析器。例如对于JSP扩展名,我们可以配置如下的解析器:

 

  1. id="viewResolver"
  2.     class="org.springframework.web.servlet.view. InternalResourceViewResolver">
  3.     <property name="viewClass">
  4.      <value> org.springframework.web.servlet.view.InternalResourceView </value>
  5.      </property>
  6.      <!--JSP都放在/目录下-->
  7.      <property name="prefix">
  8.         <value>/</value>
  9.      </property>
  10.      <!--JSP页面的后缀都是.jsp-->
  11.      <property name="suffix">
  12.      <value>.jsp</value>
  13.      </property>
  14.  </bean>

 

Spring提供了许多默认的视图解析器,通常使用这些默认的解析器就可以满足我们的要求。当然,你也可以通过继承Spring的ViewResolver父类来开发自己的解析器。

因此,在Spring系统的开发中,我们需要开发的类只有Controller和Form Bean。

 
阅读(843) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~