码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC学习(三)

时间:2015-06-13 09:57:40      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

静态资源访问和default-servlet-handler

由于在dispatcherServlet中设置了对“/*”进行过滤,那么当系统内访问到诸如js等静态资源的时候会报错。
因此,需要在servlet-Context.xml中配置default-servlet-handlerannotation-driven两个bean。

前者会判断来了的请求是否被映射过(即使用RequestMapping进行过标记),如果映射过,则交给dispatcherServlet进行映射;如果没有,则当做静态资源去直接访问,如果该资源或页面不存在,直接报404.

而后者annotation-driven,保证了在所有请求被过滤之后,带有注解映射的资源能够被识别到。因此,二者是同时存在的。

注:静态资源一般放在webapp目录下,即跟WEB-INF同级。否则可能需要配置静态资源访问映射。

    <mvc:default-servlet-handler/>
    <mvc:annotation-driven></mvc:annotation-driven>

HiddenHttpMethodFilter配置

我们知道,form表单的提交,method是需要设置为POST请求的。
除了GET、POST请求,还有PUT、DELETE等诸多类型的请求。
在探讨如何实现PUT、DELETE请求的时候,先要弄清楚他们是什么,为何要有他们的存在。

Rest风格中的请求方式

Rest模式get,put,post,delete含义与区别
REST当中为什么要使用HTTP PUT

使用HiddenHttpMethodFilter将POST转换为PUT和DELETE

在web.xml中仅需要做出如下配置:

    <filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

在form中,要加入input标签(delete 同理):

<input type="hidden" name="_method" value="PUT"/>

这样,尽管form的method=POST,但是在提交的时候,HiddenHttpMethodFilter会主动将该提交操作转为需要的类型。

而在Controller类中,RequestMapping需要规定相应的方法,否则会无法映射,例如:

    @RequestMapping(value="path", method=RequestMethod.PUT)
    public String update(User user){
        userDao.update(user);
        return "success";
    }

还有一点,form的action一定要是绝对路径,而不能是相对路径,否则会报错。绝对路径需要加入以下占位符:

<form:form action="${pageContext.request.contextPath }/input"
        method="POST" modelAttribute="employee">

该占位符的使用,需要引入依赖

        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.2-b01</version>
        </dependency>

上述form中的ModelAttribute作用,见SpringMVC(二)

SpringMVC学习(三)

标签:

原文地址:http://blog.csdn.net/langduhualangdu/article/details/46475573

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!