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映射即可:
- <bean id="testMapping"
- class="org.springframework.web.servlet.handler. SimpleUrlHandlerMapping">
- <property name="mappings">
- <props>
- <prop key="/test.do">testAction</prop>
- </props>
- </property>
- </bean>
(3)Controller是applicationContext.xml中配置的响应处理类,该配置文件中可以配置指向多个Controller处理类,不同的业务需要不同的Controller类。因此Controller是我们要自己开发的,新开发的类需要继承Controller基类。例如在上面的testMapping映射中指定了"/test.do"映射处理类为testAction,因此这里需要配置一个对应的处理类:
- <bean id="testAction"
- class="com.demo.spring.actions.TestAction">
- </bean>
(4)Form Bean是applicationContext.xml中为处理类配置的commandClass元素,表示要接收的处理表单。由于不同的HTML处理表单包含的表单元素不同,因此也需要开发多个Form类,例如我们为testAction配置一个处理表单:
- <bean id="testAction"
- class="com.demo.spring.actions.TestAction">
- <property name="commandClass">
- <value>com.demo.spring.forms.TestForm</value>
- </property>
- </bean>
(5)ModelAndView是处理类在完成业务处理后返回的对象,该对象与处理类的配置属性相关联,例如我们为testAction配置如下的两个返回对象:
- <bean id="testAction"
- class="com.demo.spring.actions.TestAction">
- <!--指定失败要返回的页面-->
- <property name="formView">
- <value>input</value>
- </property>
- <!--指定成功要返回的页面-->
- <property name="successView">
- <value>success</value>
- </property>
- </bean>
则在TestAction处理结束后,我们就可以使用下面的方式来返回ModelAndView:
- return new ModelAndView(getSuccessView());
- return new ModelAndView(getFormView());
因此,对于ModelAndView,我们只需要配置即可。
(6)ViewResolver是ModelAndView返回后对应页面的解析器,它将根据返回页面的扩展名来查找不同的解析器。例如对于JSP扩展名,我们可以配置如下的解析器:
- id="viewResolver"
- class="org.springframework.web.servlet.view. InternalResourceViewResolver">
- <property name="viewClass">
- <value> org.springframework.web.servlet.view.InternalResourceView </value>
- </property>
- <!--JSP都放在/目录下-->
- <property name="prefix">
- <value>/</value>
- </property>
- <!--JSP页面的后缀都是.jsp-->
- <property name="suffix">
- <value>.jsp</value>
- </property>
- </bean>
Spring提供了许多默认的视图解析器,通常使用这些默认的解析器就可以满足我们的要求。当然,你也可以通过继承Spring的ViewResolver父类来开发自己的解析器。
因此,在Spring系统的开发中,我们需要开发的类只有Controller和Form Bean。
阅读(4555) | 评论(3) | 转发(3) |