zoukankan      html  css  js  c++  java
  • SpringMVC(二):RequestMapping修饰类、指定请求方式、请求参数或请求头、支持Ant路径

    @RequestMapping用来映射请求:RequestMapping可以修饰方法外,还可以修饰类

    1)SpringMVC使用@RequestMapping注解为控制指定可以处理哪些URL请求;

    2)在控制的类定义以及方法定义处都可以使用@RequestMapping标注

    ---类定义:提供初步的请求映射信息,相对于WEB应用的根目录。

    ---方法    :提供进一步的细分映射信息,相对于类定义处的URL。若类定义处未标注@RequestMapping,则方法处标记的URL相对于WEB应用的根目录。

    3)DispatcherServlet截获请求后,就通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。

    示例:基于上一篇文章中搭建的demo project上修改HelloWord.java类。

    package com.dx.springlearn.handlers;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    @RequestMapping("class_requestmapping")
    public class HelloWord {
        private static String SUCCESS = "success";
        
        @RequestMapping("/hello")
        public String hello() {
            System.out.println("hello word...");
            return SUCCESS;
        }
    }

    此时,index.jsp中链接路径编辑为:

    <a href="class_requestmapping/hello">hello action</a>

     @RequestMapping指定方法的请求方式:

    1)@ReuqestMapping除了可以使用请求URL映射请求外,还可以使用请求方法、请求参数及请求头映射请求。

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

    3)params和headers支持简单的表达式:

    --- param1:表示请求必须包含名为param1的请求参数

    --- !param1:表示请求不能包含名为param1的请求参数

    --- param1 != value1:表示请求包含名为param1的请求参数,但其值不能为value1

    --- {"param1=value1","param2"}:请求必须包含名为param1和param2的两个请求参数,且param1参数的值必须为value1

    在HelloWord.java中添加testMethod方法:

    package com.dx.springlearn.handlers;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    @Controller
    @RequestMapping("class_requestmapping")
    public class HelloWord {
        private static String SUCCESS = "success";
    
        @RequestMapping(value = "/testMethod", method = RequestMethod.POST)
        public String testMethod() {
            System.out.println("test method");
            return SUCCESS;
        }
    
        @RequestMapping("/hello")
        public String hello() {
            System.out.println("hello word...");
            return SUCCESS;
        }
    }

    在index.jsp中指定请求testMethod方法的html脚本:

        <form id="form_testMethod" name="form_testMethod" method="POST"
            action="class_requestmapping/testMethod">
            <button name="submit" id="submit">test method</button>
        </form>

     @RequestMapping指定请求参数和请求头

    在HelloWord.java中添加testParamsAndHeaders方法:

    package com.dx.springlearn.handlers;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    @Controller
    @RequestMapping("class_requestmapping")
    public class HelloWord {
        private static String SUCCESS = "success";
    
        @RequestMapping(value="/testParamsAndHeaders",params={"username","password!=23456"},headers={"Accept-Language=zh-CN,zh;q=0.8"})
        public String testParamsAndHeaders() {
            System.out.println("test params and headers");
            return SUCCESS;
        }
    
        @RequestMapping(value = "/testMethod", method = RequestMethod.POST)
        public String testMethod() {
            System.out.println("test method");
            return SUCCESS;
        }
    
        @RequestMapping("/hello")
        public String hello() {
            System.out.println("hello word...");
            return SUCCESS;
        }
    }

    修改index.jsp,添加请求链接:

    <a href="class_requestmapping/testParamsAndHeaders?username=abc&password=12345">testParamsAndHeaders</a>

    @RequestMapping支持Ant路径方式:

    1)Ant风格资源地址支持3种匹配符:

    --- ?:匹配文件名中的一个字符;

    --- * :匹配文件名中的任何个字符;

    --- **:匹配多层路径

    2)Ant风格示例:

    --- /user/*/createuser:配置/user/aaa/createuser、user/bb/createuser等URL

    --- /user/**/createuser:匹配/user/createuser、/user/abc/ab/createuser等URL

    --- /user/createuser??:配置/user/createuseraa、/user/createuserbc等URL

    测试方法:

        @RequestMapping("/testAnt/*/createuser")
        public String testAnt(){
            System.out.println("test ant");
            return SUCCESS;
        }
        

    index.jsp支持的链接方式:

    http://localhost:8080/SpringMVC_01/class_requestmapping/testAnt/oiasdkj/createuser

    http://localhost:8080/SpringMVC_01/class_requestmapping/testAnt/oxd/createuser

  • 相关阅读:
    人与人之间的距离
    Web API之service worker
    css背景图等比例缩放,盒子随背景图等比例缩放
    js节流函数高级版
    vue实现百度搜索下拉提示功能
    vue实现图片点击放大
    css图片宽高相等设置
    sublime常用插件及配置
    css揭秘读书笔记
    webpack2.0简单配置教程
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/8191706.html
Copyright © 2011-2022 走看看