SpringMVC学习(二)之@RequestMapping

来源:互联网 发布:雪梨淘宝店衣服怎么样 编辑:程序博客网 时间:2024/05/18 20:53

一、@RequestMapping修饰类

控制器代码:

package controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@RequestMapping("/springmvc")@Controllerpublic class SpringMVCTest {    private static final String SUCCESS = "success";    /**     * 1.@RequestMapping 除了修饰方法,还可以修饰类     * 2.      *  1). 类定义处: 提供初步的请求映射信息。相对应 WEB 应用的根目录     *  2). 方法定义处:提供进一步细分映射信息     *  相对应类定义处的 URL ,若类定义出未标注 @RequestMapping , 则方法处标记的URL比,相对应 WEB 引用的根目录     */    @RequestMapping("/testRequestMapping")    private String testRequestMapping() {        System.out.println("testRequestMapping");        return SUCCESS;    }}

URL请求:

<a href="springmvc/testRequestMapping">testRequestMapping</a>

二、@RequestMapping之请求方式

标志的HTTP请求报头包括:请求方法、URL、HTTP协议及版本、报文头、报文字体
@RequestMapping除了可以使用请求URL映射请求外,还可以使用请求方法,请求参数及请求头映射请求。
@RequestMapping的value、method、params及hands分别表示请求URL、请求方式、请求请求参数及请求头的映射条件,它们之间是与的关系,联合使用多个条件可狼请求映射更加精确。
请求方式:

在SpringMVCTest 上添加方法:

    /**     * 最常用:使用method属性来指定请求方式     */    @RequestMapping(value="/testMethod", method=RequestMethod.POST)    private String testMethod() {        System.out.println("testMethod");        return SUCCESS;    }

URL请求:

<form action="springmvc/testMethod" method="POST">        <input type="submit" value="testMethod">    </form>

三、RequestMapping之请求参数&请求头

/**     * 了解:可以使用params和handers来更加精确的映射请求     * params和headers支持简单的表达式     * params1:表示请求必须包含名为param1的请求参数     * !param1:表示请求不能包含名为param1的请求参数     * param1!=value1:表示请求包含名为param1的请求参数,但其值不能为value1     * {"param1=value1","param2"}:请求必须包含名为param1和param2的两个请求参数,     * 且param1参数的值必须为value1     */    @RequestMapping(value="/testParamsAndHanders",                     params={"username", "age!=10"},                    headers={"Accept-Language!=zh-CN,zh;q=0.8,en;q=0.6"})    private String testParamsAndHanders() {        System.out.println("testParamsAndHanders");        return SUCCESS;    }

请求URL:

<a href="springmvc/testParamsAndHanders?username=aaa&age=10">testParamsAndHanders</a>    <br>

四、RequestMapping之Ant路径

    /**     * 是用@RequestMapping映射请求支持Ant风格     * 3种匹配符:     * ? :匹配文件名中的一个字符     * * :匹配文件名中的任意字符     * ^^ :匹配多层路径     */    @RequestMapping(value="mvc/*/testAntPath")    private String testAntPath() {        System.out.println("testAntPath");        return SUCCESS;    }

请求URL

<a href="springmvc/mvc/6666/testAntPath">testAntPath</a>    <br>

五、RequestMapping之PathVariable注解

/**     * 通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中     * @param id     * @return     */    @RequestMapping(value="testPathVariable/{id}")    private String testPathVaria(@PathVariable("id") Integer id) {        System.out.println("testPathVariable:"+id);        return SUCCESS;    }

URL请求:

<a href="springmvc/testPathVariable/1">testPathVariable</a>    <br>

六、RequestMapping之HiddenHttpMethodFilter过滤器

在web.xml文件中配置HiddenHttpMethodFilter过滤器

  <!-- 配置 HiddenHttpMethodFilter,  用于使用Rest风格-->  <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>

控制器的方法创建Rest风格的目标方法

/**     * Rest 风格的 URL     * 以 CURD 为例     * 新增: order POST     * 删除: order/1 DELETE     * 修改: order/1 PUT     * 获取: order/1 GET     *      * 如何发送 PUT 和  DELETE 请求呢?     * 1. 配置 HiddenHttpMethodFilter     * 2. 发送 发送 POST 请求     *      * 在使用 SpringMVC 的目标方法如何获得id呢?     * 使用 @PathVariable 注解     *      * @return     */    @RequestMapping(value="testRest", method=RequestMethod.POST)    private String testRestPost() {        System.out.println("Post");        return SUCCESS;    }    @RequestMapping(value="testRest/{id}", method=RequestMethod.DELETE)    private String testRestDelete(@PathVariable("id") Integer id) {        System.out.println("Delete:"+id);        return SUCCESS;    }    @RequestMapping(value="testRest/{id}", method=RequestMethod.PUT)    private String testRestPut(@PathVariable("id") Integer id) {        System.out.println("Put:"+id);        return SUCCESS;    }    @RequestMapping(value="testRest/{id}", method=RequestMethod.GET)    private String testRestGet(@PathVariable("id") Integer id) {        System.out.println("Get:"+id);        return SUCCESS;    }

URL请求

<form action="springmvc/testRest" method="post">        <input type="submit" value="新增">    </form>    <br>    <form action="springmvc/testRest/1" method="post">        <input type="hidden" name="_method" value="DELETE">        <input type="submit" value="删除">    </form>    <br>    <form action="springmvc/testRest/1" method="post">        <input type="hidden" name="_method" value="PUT">        <input type="submit" value="更改">    </form>    <br>    <a href="springmvc/testRest/1">获取</a>    <br>
0 0