SpringMVC项目学习1_web.xml

时间:2023-01-28 14:24:52

最近接触的所有项目都是SpringMVC+ajax的项目,因此以一个项目为例学习下。

--------------------------------------------------------------------------------------------------------------

首先看web.xml

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
     /WEB-INF/applicationContext-*.xml
    </param-value>
 </context-param>

这一段代码干了什么我不清楚,但是他的作用明显是导入了项目中的xml文件,而且导入的文件是匹配applicationContext-*.xml格式的文件。

--------------------------------------------------------------------------------------------------------------

继续向下看

<filter>
  <filter-name>encodingFilter</filter-name>
  <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>
  <init-param>
   <param-name>forceEncoding</param-name>
   <param-value>true</param-value>
  </init-param>
 </filter>
 <filter-mapping>
  <filter-name>encodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>

filter是过滤器,encoding是和编码相关的所以猜测是为项目统一编码格式的作用,百度了一下,确实如此:

通过类org.springframework.web.filter.CharacterEncodingFilter,定义request和response的编码。

CharacterEncodingFilter类具有encoding和forceEncoding两个属性,其中encoding是表示设置request的编码,forceEncoding表示是否同时设置response的编码。

--------------------------------------------------------------------------------------------------------------

继续

<servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 <servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>/</url-pattern>
 </servlet-mapping>

<filter-mapping>
  <filter-name>HttpMethodFilter</filter-name>
  <servlet-name>springmvc</servlet-name>
 </filter-mapping>

<filter>
  <filter-name>HttpMethodFilter</filter-name>
  <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
 </filter>

这一段也是过滤器,过滤什么不清楚,所以来baidu下,得到如下结果:

  可以通过HiddenHttpMethodFilter获取put表单中的参数-值,而在Spring3.0中获取put表单的参数-值还有另一种方法,即使用HttpPutFormContentFilter过滤器。HttpPutFormContentFilter过滤器的作为就是获取put表单的值,并将之传递到Controller中标注了method为RequestMethod.put的方法中。

  对于SSH框架中的Spring来说最为著名的就是依赖注入功能,显然对于SpringMVC来说,由前台向后台传递数据不再像之前那样加个get,set方法就OK了。SpringMVC采用的是这种过滤器的方式将前台form表单中的数据注入到后台相应的变量中。

--------------------------------------------------------------------------------------------------------------

最后来看监听器的配置

<listener>
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 </listener>

显然不是以前常用的监听器,baidu下,结果如下:

  ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。

  显然之前看到的导入项目中匹配applicationContext-*.xml格式的xml文件就是由这个监听器作用的结果了。