Spring MVC 简单总结

Spring MVC 总结:

各部件作用:

DispatcherServlet -- 前置控制器

HandlerMapping 接口 -- 处理请求的映射
  SimpleUrlHandlerMapping 通过配置文件,把一个URL映射到Controller

  DefaultAnnotationHandlerMapping 通过注解,把一个URL映射到Controller类上


HandlerAdapter 接口 -- 处理请求的映射
   AnnotationMethodHandlerAdapter类,通过注解,把一个URL映射到Controller类的方法上


ViewResolver接口的实现类 ,主要实现将 Controller 返回的 view映射到对应的视图上

   UrlBasedViewResolver类 通过配置文件,把一个视图名交给到一个View来处理
   InternalResourceViewResolver类,比上面的类,加入了JSTL的支持 ,默认的


详细流程为:
1 用户请求 首先到 DispatcherServlet
2 DispatcherServlet ,通过 HandlerMapping 找到对应的处理类
3 然后再通过 HandlerAdapter 找到对应的处理方法
4 Controller 返回对应的 ModelAndView 到 DispatcherServlet ,ViewerResolver 会根据对应的 view name 查找对应的视图信息, 根据对应Model信息 查询输出参数信息  
  也可以不返回ModelAndView 而 返回一个String , 然后增加一个输入Map参数 Model ,这样后续的 ViewerResolver会根据String 去查找对应的页面,然后从Model中获取对应的输出参数 
5 ViewResolver 将 返回的View渲染为 真正的 视图 ,展示给客户

1 web.xml中配置 Servlet  DispatchServlet ,并配置对应得URL MAPPING

    <servlet>
        <servlet-name>annotation</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:anno-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>annotation</servlet-name>
        <url-pattern>/anno/*</url-pattern>
    </servlet-mapping>
表示业务的拦截是通过spring的 DispatcherServlet 来处理, 然后调用spring mvc的流程,来处理具体的业务

    
2 配置另外的  DispatchServlet ,拦截 /url 参数

<servlet>
        <servlet-name>urlmapping</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:url-context.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>urlmapping</servlet-name>
        <url-pattern>/url/*</url-pattern>
    </servlet-mapping>    

2  配置一个 监听器 ContextLoaderListener,并指定 spring 上下文配置文件地址

  <listener>
    <display-name>Context Loader Listener</display-name>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

   <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:com/zhangsan/appmarket/applicationtemplate/application-context.xml</param-value>
  </context-param>


  
3 配置 spring 配置文件 anno-context.xml


 <mvc:annotation-driven />    --注解支持
   
    <!-- 自动扫描的包名 -->
    <context:component-scan base-package="com.zhangsan"></context:component-scan>  --扫描包


    <!-- 视图解释类 -->
    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/" />
        <property name="suffix" value=".jsp" /><!--可为空,方便实现自已的依据扩展名来选择视图解释类的逻辑 -->
    </bean>

 

配置各种 MessageConverter ,主要是将request 或者 response 里面的信息转换为 java 对象
/****************************************************************************************************** 
 
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
    <property name="messageConverters">    
        <list>    
            <ref bean="byteArray_hmc" />    
            <ref bean="string_hmc" />    
            <ref bean="resource_hmc" />    
            <ref bean="source_hmc" />    
            <ref bean="xmlAwareForm_hmc" />    
            <ref bean="jaxb2RootElement_hmc" />    
            <ref bean="jackson_hmc" />    
        </list>    
    </property>    
</bean>    

<bean id="byteArray_hmc" class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /><!-- 处理.. -->  
<bean id="string_hmc" class="org.springframework.http.converter.StringHttpMessageConverter" /><!-- 处理.. -->  
<bean id="resource_hmc" class="org.springframework.http.converter.ResourceHttpMessageConverter" /><!-- 处理.. -->  
<bean id="source_hmc" class="org.springframework.http.converter.xml.SourceHttpMessageConverter" /><!-- 处理.. -->  
<bean id="xmlAwareForm_hmc" class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" /><!-- 处理.. -->  
<bean id="jaxb2RootElement_hmc" class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" /><!-- 处理.. -->  
<bean id="jackson_hmc" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" /><!-- 处理json-->   

******************************************************************************************************/  
  
  


Tomcat容器初始化 spring 过程
/****************************************************************
1 web.xml 中指定一个  ContextLoaderListener ,表示容器启动时加载 spring 上下文
该监听器,默认读取/WEB-INF/下的 applicationContext.xml文件,若不放在这个问题,可以通过context-param指定配置文件路径后,
便会去你指定的路径下读取对应的配置文件,并进行初始化。

2 配置业务 servlet , 对应处理类为spring的 DispatcherServlet, 然后调用spring的处理流程来处理用户请求

******************************************************************/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值