关于SpringMvc实践的一些体会和总结

原创
2016/10/29 11:34
阅读数 3.5K

一直以来都在用java的springmvc,没有深入去探究关于spring以及mvc的一些内在的工作过程,今天利用休息时间,仔细阅读了一下我们的源码,并结合搜索引擎,明白了几个之前解决了问题,还没理解原理的原因所在. 

本文将对SpringMVC的理解进行追踪描述,一来希望大家批评指正,纠正错误的理解,二来给自己一个留念,当以后忘记的时候,还有个记录,可以再次回想起来,三来总结技术经验,希望今后的路走的更好.

 

早两天我部署了一个项目,所有的配置都是从公司项目中抽取出来的.公司项目运行得很好,而我自己的项目却总是404,在这之前,为了看项目是否部署好,做了个html页面做静态资源测试,于是增加了静态资源配置如下:

 <servlet-mapping>
      <servlet-name>default</servlet-name>
      <url-pattern>*.html</url-pattern>

 </servlet-mapping> 

项目中有两个配置文件,一个是MyProject-sevlet.xml,另一个是ApplicationContext-Services.xml

在web.xml中配置是这样的

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/conf/ApplicationContext-Services.xml</param-value>
  </context-param> 

 <servlet>
    <servlet-name>MyProject</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/conf/MyProject-servlet.xml</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>

 

注解驱动<mvc:annotation-driven/>是写在ApplicationContext-Services.xml,而不是MyProject-sevlet.xml,无论怎么访问jsp页面,都是404 ,后来发现,只要在MyProject-sevlet.xml加上<mvc:annotation-driven/>就能正常访问.猜想应该是没有优先加载ApplicationContext-Services.xml所导致的问题,但奇怪的是,公司项目配置文件就是这么写的,也没有其他特殊的配置,为什么那个项目能优先记载这个配置呢?  查资料说是因为增加了default这个servlet配置,但感觉解释的不够通透,不能完全理解,希望各位大神指点迷津.

另外,从application来说,使用WebApplicationContextUtils对象时,发现它有findWebApplicationContext,getRequiredWebApplicationContext,getWebApplicationContext,initServletPropertySources,registerEnvironmentBeans,registerWebApplicationScopes等方法

通过查阅相关资料,总结如下

findWebApplicationContext实际上最终也是调用getWebApplicationContext方法,来获取webapplicationcontext

initServletPropertySources在spring classloader类初始化的时候被调用,用于初始化servlet配置参数

其他方面的总结后续再补充,敬请期待

 

 

 

 

 

 

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
1 收藏
0
分享
返回顶部
顶部