[b]1.DispatcherServlet[/b]
与其它web MVC框架一样,Spring的web MVC框架是一个请求驱动的web框架,其设计围绕一个中心的servlet进行, 它能将请求分发给控制器,并提供其它功能帮助web应用开发。然而,Spring的DispatcherServlet 所做的不仅仅是这些,它和Spring的IoC容器完全集成在一起,从而允许你使用Spring的其它功能。
在web.xml文件里去定义:
在DispatcherServlet的初始化过程中,框架会在web应用的 WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml 的配置文件,生成文件中定义的bean。这些bean会覆盖在全局范围(global cope)中定义的同名的bean。
[b]2.控制器
[/b]控制器的概念是MVC设计模式的一部分(确切地说,是MVC中的C)。应用程序的行为通常被定义为服务接口, 而控制器使得用户可以访问应用所提供的服务。控制器解析用户输入,并将其转换成合理的模型数据,从而可以进一步由视图展示给用户。
[b]a.所有的Spring控制器都继承了 AbstractController,如下:[/b]
[b]b.MultiActionController[/b]
Spring提供了MultiActionController来将多个请求处理方法合并在一个控制器里,这样可以把相关功能组合在一起。 (如果你很熟悉Struts,会发现这与Struts的DispatchAction很像) MultiActionController位于org.springframework.web.mvc.multiaction包中,它可以定义页面请求到控制器方法名的映射, 然后在处理相应请求时调用该方法。当你有很多比较小的且相关的功能时使用MultiActionController很方便,这样就不必为每个小功能创建 一个单独的Controller了。
[b]demo-servlet.xml[/b]
与其它web MVC框架一样,Spring的web MVC框架是一个请求驱动的web框架,其设计围绕一个中心的servlet进行, 它能将请求分发给控制器,并提供其它功能帮助web应用开发。然而,Spring的DispatcherServlet 所做的不仅仅是这些,它和Spring的IoC容器完全集成在一起,从而允许你使用Spring的其它功能。
在web.xml文件里去定义:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<!-- 加入SpringMVC支持 还需要配置/WEB-INF/demo-servlet.xml文件 -->
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<!-- 加入SpringMVC支持end -->
<!-- 实例化ApplicationContext -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 实例化ApplicationContext end-->
<!-- 监听器首先检查contextConfigLocation参数,如果它不存在,它将使用/WEB-INF/applicationContext.xml作为默认值 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml
</param-value>
</context-param>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
在DispatcherServlet的初始化过程中,框架会在web应用的 WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml 的配置文件,生成文件中定义的bean。这些bean会覆盖在全局范围(global cope)中定义的同名的bean。
[b]2.控制器
[/b]控制器的概念是MVC设计模式的一部分(确切地说,是MVC中的C)。应用程序的行为通常被定义为服务接口, 而控制器使得用户可以访问应用所提供的服务。控制器解析用户输入,并将其转换成合理的模型数据,从而可以进一步由视图展示给用户。
[b]a.所有的Spring控制器都继承了 AbstractController,如下:[/b]
public class UserController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
// TODO Auto-generated method stub
return null;
}
}
[b]b.MultiActionController[/b]
Spring提供了MultiActionController来将多个请求处理方法合并在一个控制器里,这样可以把相关功能组合在一起。 (如果你很熟悉Struts,会发现这与Struts的DispatchAction很像) MultiActionController位于org.springframework.web.mvc.multiaction包中,它可以定义页面请求到控制器方法名的映射, 然后在处理相应请求时调用该方法。当你有很多比较小的且相关的功能时使用MultiActionController很方便,这样就不必为每个小功能创建 一个单独的Controller了。
[b]demo-servlet.xml[/b]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<!-- 这个是MultiActionController的参数解析器,
如果没有定义那么会默认的使用InternalPathMethodNameResolver 来解析请求
这里定义了,那么继承了MultiActionController的Contorller默认就是用
paramResolver这个解析器来处理请求
-->
<bean id="paramResolver"
class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName">
<value>method</value>
</property>
</bean>
<!-- 使用BeanNameUrlHandlerMapping来处理Contorller映射
请求中如果含有/login.do 则交给bean处理
-->
<bean id="handlerMapping"
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<bean name="/login.do" class="com.jzkangta.demo.contorller.LoginContorller"></bean>
<!-- 使用BeanNameUrlHandlerMapping来处理Contorller映射 end-->
<!-- 使用SimpleUrlHandlerMapping来处理Contorller映射 -->
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/index.do">indexController</prop>
<prop key="/menu.do">indexController</prop>
</props>
</property>
</bean>
<bean id="indexController" class="com.jzkangta.demo.contorller.IndexController"></bean>
<!-- 使用SimpleUrlHandlerMapping来处理Contorller映射 end-->
</beans>