Spring MVC教程二

从教程一,我们对于springMVC的用法已经有了初步的了解,本篇我们将讲解SpringMVC的请求方式,请求参数,请求头以及其他的一些知识。本节代码在教程一的基础上添加。

@RequestMapping

@RequestMapping除了可以使用请求url,还可以使用请求方法、请求参数和请求头映射请求,
value、method、params及heads分别代表url,请求方法和请求头,他们之间是与的关系,联合使用多个条件可让请求映射更加精确化。

  • 请求方式
  /*
    * 使用method属性来指定请求方式
    * */
    @RequestMapping(value ="testMethod",method = RequestMethod.POST)
    public String testMethod(){
        System.out.print("testMethod");
        return "success";
    }

html:

 <form action="/springmvc/testMethod" method="post">
        <button value="submit">submit</button>
</form>
  • 请求头和请求参数
  /*
    * 可以使用params和heads来更加精确的映射请求。params和headers支持简单的表达式。
    * */
    @RequestMapping(value = "testParamsAndHeaders",params = {"username","age!=10"},headers = {"Accept-Language: zh-CN,zh;q=0.9"})
    public String testParamsAndHeaders(){
        System.out.print("testParamsAndHeaders");
        return "success";
    }

上面age 不能为10,username 不能缺失,headers如果与网页要求的不同,则会出错。
在这里插入图片描述
html

    <a href="/springmvc/testParamsAndHeaders?username=chengdu&age=10">testParamsAndHeaders</a>

@PathVariable

带占位符的URL是spring3.0新增的功能,该功能是SpringMVC向rest目标挺进。
通过@PathVariable可以将URL中占位符参数绑定到控制器处理方法的入参中

 /*
    * @PathVariable 可以映射URL 中的占位符到目标方法的参数中
    * */
    @RequestMapping("/testPathVariable/{id}")
    public String testPathVariable(@PathVariable("id") Integer id){
        System.out.println("testPathVariable:"+id);
        return "success";
    }

html

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

HiddenHttpMethodFilter过滤器

将post请求转换为delete请求和post请求。
用法:
web.xml

<!--配置org.springframework.web.filter.HiddenHttpMethodFilter,作用将post请求转换为delete请求和post请求-->
    <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>

controller:

    @RequestMapping(value = "/testRest/{id}",method = RequestMethod.GET)
    public String testRest(@PathVariable Integer id){
        System.out.println("testRest GET:" +id);
        return "success";
    }

    @RequestMapping(value = "/testRest",method = RequestMethod.POST)
    public String testRest(){
        System.out.println("testRest POST:");
        return "success";
    }

    @RequestMapping(value = "/testRest/{id}",method = RequestMethod.DELETE)
    @ResponseBody
    public String testRestDelete(@PathVariable Integer id){
        System.out.println("testRest DELETE:" +id);
        return "success";
    }

    @RequestMapping(value = "/testRest/{id}",method = RequestMethod.PUT)
    @ResponseBody
    public String testRestPut(@PathVariable Integer id){
        System.out.println("testRest PUT:" +id);
        return "success";
    }

html页面:

    <a href="/springmvc/testRest/1">Test Rest Get</a>

    <br><br>

    <form action="/springmvc/testRest" method="post">
            <input type="submit" value="TestRest POST">
    </form>

    <br><br>

    <form action="/springmvc/testRest/1" method="post">
        <input type="hidden" name="_method" value="DELETE">
        <input type="submit" value="TestRest DELETE">
    </form>

    <br><br>

    <form action="/springmvc/testRest/1" method="post">
        <input type="hidden" name="_method" value="PUT">
        <input type="submit" value="TestRest PUT">
    </form>
  • github 地址
    https://github.com/chuanleixu/SpringMVC_Tutorials
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值