`
jzkangta
  • 浏览: 157752 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring学习笔记(7)---MVC之一

阅读更多
1.DispatcherServlet
与其它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。

2.控制器
控制器的概念是MVC设计模式的一部分(确切地说,是MVC中的C)。应用程序的行为通常被定义为服务接口, 而控制器使得用户可以访问应用所提供的服务。控制器解析用户输入,并将其转换成合理的模型数据,从而可以进一步由视图展示给用户。

a.所有的Spring控制器都继承了 AbstractController,如下:
public class UserController extends AbstractController {
	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest request,
			HttpServletResponse response) throws Exception {
		// TODO Auto-generated method stub
		return null;
	}
}


b.MultiActionController
Spring提供了MultiActionController来将多个请求处理方法合并在一个控制器里,这样可以把相关功能组合在一起。 (如果你很熟悉Struts,会发现这与Struts的DispatchAction很像) MultiActionController位于org.springframework.web.mvc.multiaction包中,它可以定义页面请求到控制器方法名的映射, 然后在处理相应请求时调用该方法。当你有很多比较小的且相关的功能时使用MultiActionController很方便,这样就不必为每个小功能创建 一个单独的Controller了。

demo-servlet.xml
<?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>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics