SpringmMVC-@PathVariable\@RequestHeader\@cookieValue

本文详细介绍了在SpringMVC框架中如何使用RESTful风格接收参数,包括通过@PathVariable、@RequestHeader和@CookieValue注解处理路径变量、请求头和Cookie值。同时,讲解了如何在form表单中发送PUT和DELETE请求,以及配置HiddenHttpMethodFilter过滤器的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringmMVC-@PathVariable\@RequestHeader\@cookieValue

 1.rest风格接收参数

2.在form表单中发送put和delete请求

   1).在web.xml中配置HiddenHttpMethodRequest过滤器(在其中添加)

<!--
    配置HiddenHttpMethodFilter过滤器
    实现resultful请求
    -->
    <filter>
        <filter-name>hiddenmethod</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>hiddenmethod</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

   2).给表单添加影藏的input标签

<%--测试form表单是否能发送put请求--%>
<form action="${pageContext.request.contextPath}/testRestFrom/100" method="post">
    <%--定义一个隐藏表单 name值必须为_method value为请求的方式--%>
    <input type="hidden" name="_method" value="put">
    <input type="submit" value="测试testRestFrom">
</form>
<br>
<hr>

   3).设置前端控制器,跳转界面的重定向(或者不使用重定向然后在直接返回的界面中的page中设置isErrorPage=true)

3.注解@requestHeader和@cookieValue的使用

代码示例:

前端jsp:

<%--rest请求风格--%>
<a href="${pageContext.request.contextPath}/rest/1">请求方式rest</a>
<br>
<hr>

<%--测试form表单是否能发送put请求--%>
<form action="${pageContext.request.contextPath}/testRestFrom/100" method="post">
    <%--定义一个隐藏表单 name值必须为_method value为请求的方式--%>
    <input type="hidden" name="_method" value="put">
    <input type="submit" value="测试testRestFrom">
</form>
<br>
<hr>


<%--@requestHeader注解--%>
<a href="${pageContext.request.contextPath}/testHeader">测试testHeader</a>

后台的前端控制器:

/*rest风格接收参数
    * 京东和歪果仁喜欢使用这种方式接收参数
    * */
    @RequestMapping("rest/{id}")
    public String rest1(@PathVariable Integer id){
        System.out.println("rest");
        System.out.println(id);
        return "/second.jsp";
    }

    /*测试from表单是否能发送put请求
    * 默认情况下form表单只能够发送post和get请求
    * 解决方法:
    * 1.在web.xml中配置HiddenHttpRequest过滤器
    * 2.给表单添加隐藏的input标签:<input type="hidden" name="_method" value="put/delete">
    * 3.设置前端控制器,跳转界面的重定向(或者将直接返回的页面中的page中设置iserrorpage=true设置为true)
    * */
    @RequestMapping(value = "testRestFrom/{id}",method = RequestMethod.PUT)
    public String testRestFrom(@PathVariable Integer id){
        System.out.println("testRestFrom");
        System.out.println(id);
        return "redirect:/localsecond";//JSPs only permit GET POST or HEAD错误的解决方法
    }

    @RequestMapping("localsecond")
    public String localsecond(){

        return "/second.jsp";
    }

    /*注解@requestHeader@CookieValue的使用方法获取请求头里面的信息*/
    @RequestMapping("testHeader" )
    public String testHeader(
            @RequestHeader("Host") String host,
            @RequestHeader("Referer") String referer,
            @RequestHeader("Cookie") String cookie,
            @CookieValue("JSESSIONID") String sessionid
    ){
        System.out.println("testHeader");
        /*获取发送的主机地址*/
        System.out.println(host);
        /*获取发送界面的地址*/
        System.out.println(referer);
        /*获取主机的cookie*/
        System.out.println(cookie);
        /*使用@CookieValue注解 根据value来获取对应的值,而不是像@requestHeader这样来获取全部内容*/
        System.out.println(sessionid);
        return "/second.jsp";
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值