spring maven freemark

http://doc.javanb.com/spring-framework-reference-zh-2-0-5/ch13s02.html

DispatcherServlet实际上是一个Servlet(它从HttpServlet继承而来)。和其它Servlet一样,DispatcherServlet定义在web应用的web.xml文件里。DispatcherServlet处理的请求必须在同一个web.xml文件里使用url-mapping定义映射。下面的例子演示了如何配置DispatcherServlet。

<web-app>

    <servlet>
        <servlet-name>example</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>example</servlet-name>
        <url-pattern>*.form</url-pattern>
    </servlet-mapping>

</web-app>
在上面的例子里,所有以.form结尾的请求都会由名为example的DispatcherServlet处理。这只是配置Spring Web MVC的第一步。接下来需要配置DispatcherServlet本身和Spring Web MVC 框架用到的其他的bean。

正如在第 3.8 节 “ApplicationContext”中所描述的,Spring中的ApplicationContext可以被限制在不同的作用域(scope)中。在web MVC框架中,每个DispatcherServlet有它自己的WebApplicationContext,这个context继承了根 WebApplicationContext的所有bean定义。这些继承的bean也可以在每个serlvet自己的所属的域中被覆盖(override),覆盖后的bean可以被设置成只有这个servlet实例自己才可以使用的属性。

Spring Web MVC中的Context体系

在DispatcherServlet的初始化过程中,Spring会在web应用的WEB-INF文件夹下寻找名为[servlet-name]-servlet.xml的配置文件,生成文件中定义的bean。这些bean会覆盖在全局范围(global cope)中定义的同名的bean。

下面这个例子展示了在web.xml中DispatcherServlet的配置:

<web-app>
    ...
    <servlet>
        <servlet-name>golfing</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>golfing</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
</web-app>
要进行如上的servlet配置,你还需要配置/WEB-INF/golfing-servlet.xml这样一个文件。golfing-servlet.xml这个文件应该声明你在Spring Web MVC 框架中需要的bean。 这个文件的路径也可以通过web.xml中servlet的初始化参数来更改。(详情见下面的例子。)

WebApplicationContext仅仅是一个拥有web应用必要功能的普通ApplicationContext。它与一个标准的ApplicationContext的不同之处在于,它能够解析theme(参考第 13.7 节 “使用主题”),并且它知道自己与哪个servlet相关联(通过ServletContext)。WebApplicationContext被绑定在ServletContext上,当你需要的时候,可以使用RequestContextUtils提供的静态方法找到WebApplicationContext。

Spring的DispatcherServlet有一组特殊的bean,用来处理请求和渲染相应的视图。这些bean包含在Spring的框架里,可以在WebApplicationContext中配置,配置方式与配置其它bean相同。这些bean中的每一个都在下文作详细描述。此刻读者只需知道它们的存在,便继续对DispatcherServlet进行讨论。对大多数bean,Spring都提供了合理的缺省值,所以在开始阶段,你不必担心如何对其进行配置。



    <!-- Processes application requests -->
    <servlet>
        <servlet-name>appServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>WEB-INF/spring/spring-logistics-tms-servlet.xml</param-value>
        </init-param> 
        <load-on-startup>1</load-on-startup>
    </servlet>

在servlet的配置当中,<load-on-startup>5</load-on-startup>的含义是:

标记容器是否在启动的时候就加载这个servlet。

当值为0或者大于0时,表示容器在应用启动时就加载这个servlet;

当是一个负数时或者没有指定时,则指示容器在该servlet被选择时才加载。

正数的值越小,启动该servlet的优先级越高。

 

Spring MVC过滤器-HiddenHttpMethodFilter

分类: Framework   3162人阅读   评论(0)   收藏   举报

        浏览器form表单只支持GET与POST请求,而DELETE、PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET、POST、PUT与DELETE请求,该过滤器为HiddenHttpMethodFilter。

        HiddenHttpMethodFilter的父类是OncePerRequestFilter,它继承了父类的doFilterInternal方法,工作原理是将jsp页面的form表单的method属性值在doFilterInternal方法中转化为标准的Http方法,即GET,、POST、 HEAD、OPTIONS、PUT、DELETE、TRACE,然后到Controller中找到对应的方法。例如,在使用注解时我们可能会在Controller中用于@RequestMapping(value = "list", method = RequestMethod.PUT),所以如果你的表单中使用的是<form method="put">,那么这个表单会被提交到标了Method="PUT"的方法中。

        需要注意的是,由于doFilterInternal方法只对method为post的表单进行过滤,所以在页面中必须如下设置:

[java]   view plain copy
  1. <form action="..." method="post">  
  2.         <input type="hidden" name="_method" value="put" />  
  3.         ......  
  4. </form>  
        而不是使用:

[java]   view plain copy
  1. <form action="..." method="put">  
  2.         ......  
  3. </form>  
        同时,HiddenHttpMethodFilter必须作用于dispatcher前,所以在web.xml中配置HiddenHttpMethodFilter时,需参照如下代码:

[java]   view plain copy
  1.       <filter>    
  2.               <filter-name>HiddenHttpMethodFilter</filter-name>    
  3.               <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>    
  4.       </filter>    
  5.       <filter-mapping>    
  6.               <filter-name>HiddenHttpMethodFilter</filter-name>    
  7.               <servlet-name>spring</servlet-name>    
  8.       </filter-mapping>  
  9.       <servlet>  
  10. <servlet-name>spring</servlet-name>  
  11. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
  12. <init-param>  
  13.     <param-name>contextConfigLocation</param-name>  
  14.     <param-value>classpath:dispatcher.xml</param-value>  
  15. </init-param>  
  16. lt;/servlet>  
  17.       <servlet-mapping>  
  18. <servlet-name>spring</servlet-name>  
  19. <url-pattern>*.html</url-pattern>  
  20. lt;/servlet-mapping>  
        同样的,作为Filter,可以在web.xml中配置HiddenHttpMethodFilter的参数,可配置的参数为methodParam,值必须为 GET,、POST、 HEAD、OPTIONS、PUT、DELETE、TRACE中的一个。
更多 0

Spring Maven源码是指Spring Framework框架在Maven项目管理工具中的源代码。Spring Framework是一个用于构建企业级Java应用程序的开源框架,它提供了许多功能强大和灵活的特性。 Spring Maven源码包含了Spring Framework的全部代码,包括核心模块(Core Module)、数据访问模块(Data Access Module)、Web模块、AOP模块(Aspect-Oriented Programming Module)、测试模块等等。开发人员可以通过阅读源码来了解Spring Framework的工作原理和内部实现。 阅读Spring Maven源码有许多好处。首先,可以帮助开发人员更好地理解Spring Framework的运行机制,并在实际项目中合理使用和配置Spring。其次,通过阅读源码可以学习到优秀的编程思想和设计模式,提升自己的编码能力和设计能力。另外,阅读Spring Maven源码还可以为开发人员提供调试和排查问题的能力,当遇到问题时,可以通过阅读源码来查找原因和解决问题。 阅读Spring Maven源码的难度相对较大,因为Spring Framework是一个复杂且庞大的框架。但是,通过系统地学习和研究,掌握了Spring Framework的核心概念后,阅读源码并不是一件困难的事情。在阅读源码时,可以结合官方文档和相关资料,使用调试工具来帮助理解代码的执行过程。 总之,阅读Spring Maven源码对于提升开发人员的技术水平和解决实际问题都有很大的帮助。通过深入理解Spring Framework的实现细节,可以更好地使用和部署Spring应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值