SpringmMVC-@PathVariable\@RequestHeader\@cookieValue

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";
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章