springmvc|@RequestMapping注解使用

714 阅读3分钟

用法1: 多个URL路径映射到同一个Handler(同一个方法)

  • index.jsp页面
<fieldset>
    <h4>用法1: 多个URL路径映射到同一个Handler(同一个方法)</h4>
    <a href="http://localhost:8080/gotoResultURL1.do">测试路径1</a>
    <a href="${pageContext.request.contextPath}/gotoResultURL2.do">测试路径2</a>
</fieldset>
  • DefaultController控制器
public class DefaultController {

    //用法1: 多个URL路径映射到同一个Handler(同一个方法)
    @RequestMapping(value={"gotoResultURL1","gotoResultURL2"})
    public ModelAndView gotoResultURL(ModelAndView modelAndView){
        //封装数据
        modelAndView.addObject("nowDate", new Date() +"====Default===gotoResultURL");
        //指定页面
        modelAndView.setViewName("result");

        return modelAndView;
    }
}

用法2:RequestMapping注解作用在类上,实现对请求路径的分类管理,限定类中方法访问的前缀

  • index.jsp页面
<fieldset>
    <h4>用法2:RequestMapping注解作用在类上,实现对请求路径的分类管理,限定类中方法访问的前缀</h4>
    <a href="http://localhost:8080/default/gotoResultURL1.do">测试Default路径</a>
    <a href="${pageContext.request.contextPath}/user/gotoResultURL1.do">测试User路径</a>
</fieldset>
  • DefaultController控制器
@Controller
//用法2:RequestMapping注解作用在类上,实现对请求路径的分类管理,限定类中方法访问的前缀
    @RequestMapping("default")
    public class DefaultController {

        //用法1: 多个URL路径映射到同一个Handler(同一个方法)
        @RequestMapping(value={"gotoResultURL1","gotoResultURL2"})
        public ModelAndView gotoResultURL(ModelAndView modelAndView){
            //封装数据
            modelAndView.addObject("nowDate", new Date() +"====Default===gotoResultURL");
            //指定页面
            modelAndView.setViewName("result");

            return modelAndView;
        }
    }
}
  • UserController控制器
@Controller
@RequestMapping("user")
public class UserController {

    //用法1: 多个URL路径映射到同一个Handler(同一个方法)
    @RequestMapping(value={"gotoResultURL1","gotoResultURL2"})
    public ModelAndView gotoResultURL(ModelAndView modelAndView){
        //封装数据
        modelAndView.addObject("nowDate", new Date() +"===User===gotoResultURL");
        //指定页面
        modelAndView.setViewName("result");

        return modelAndView;
    }
}

用法3 method属性限定请求方法: 请求的handler相同,请求方式不同进入不同方法处理

method属性限定请求方法,请求的handler相同,请求方式不同进入不同方法处理,访问的url是一样的(Handler名字是一样的),但是我根据你不同的请求方式(get/post)进入不同的方法处理,请求的url一样,但是请求方式不一样(get/post)

  • index.jsp
<fieldset>
    <h4>用法3 method属性限定请求方法: 请求的handler相同,请求方式不同进入不同方法处理</h4>
    <a href="http://localhost:8080/default/gotoResultMethod.do">Get方式测试</a>
    <form action="http://localhost:8080/default/gotoResultMethod.do" method="post">
        <input type="submit" value="Post方式测试">
    </form>
</fieldset>
  • DefaultController控制器
    /**
     * url相同,但是请求方式为GET
     * @RequestMapping注解属性method
     */
    @RequestMapping(value = "gotoResultMethod",method = RequestMethod.GET)
    public ModelAndView gotoResultMethodGet(ModelAndView modelAndView){
        modelAndView.addObject("nowDate",new Date()+"Method=GET");
        modelAndView.setViewName("index");
        return modelAndView;
    }

    /**
     * url相同,但是请求方式为POST
     * @RequestMapping注解属性method
     */
    @RequestMapping(value = "gotoResultMethod",method = RequestMethod.POST)
    public ModelAndView gotoResultMethodPost(ModelAndView modelAndView){
        modelAndView.addObject("nowDate",new Date()+"Method=POST");
        modelAndView.setViewName("index");
        return modelAndView;
    }

用法4 params属性限定请求参数 : 支持简单的表达式语法,url一样,根据携带参数的不同进入不同的方法处理

params属性限定请求参数,支持简单的表达式语法,url一样,根据携带参数的不同进入不同的方法处理,url相同,请求方式相同,请求参数不同进入不同hanlder方法处理

  • index.jsp页面
<fieldset>
    <h4>用法4 params属性限定请求参数 : 支持简单的表达式语法,url一样,根据携带参数的不同进入不同的方法处理</h4>
    <a href="http://localhost:8080/user/login.do?type=user">普通用户</a>
    <a href="http://localhost:8080/user/login.do?type=admin">管理员</a>
    <a href="http://localhost:8080/user/login.do?type=vip">VIP</a>
</fieldset>
  • UserController控制器
@Controller
@RequestMapping("user")
public class UserController {

    //普通用户
    @RequestMapping(value={"login"}, params = {"type=user"})
    public ModelAndView loginUser(ModelAndView modelAndView){
        //封装数据
        modelAndView.addObject("nowDate", new Date() +"===user");
        //指定页面
        modelAndView.setViewName("result");

        return modelAndView;
    }
    //管理员
    @RequestMapping(value={"login"}, params = {"type=admin"})
    public ModelAndView loginAdmin(ModelAndView modelAndView){
        //封装数据
        modelAndView.addObject("nowDate", new Date() +"===admin");
        //指定页面
        modelAndView.setViewName("result");

        return modelAndView;
    }
    //VIP
    @RequestMapping(value={"login"}, params = {"type=vip"})
    public ModelAndView loginVIP(ModelAndView modelAndView){
        //封装数据
        modelAndView.addObject("nowDate", new Date() +"===VIP");
        //指定页面
        modelAndView.setViewName("result");

        return modelAndView;
    }

    /*
     * url相同,请求方式相同,请求参数不同
     * @RequestMapping注解属性params
     * id:表示请求必须包含名为 id 的请求参数
     *        演示: http://localhost:8080/user/gotoResultParamsURL.do?id=11
     * !id:表示请求不能包含名为 id 的请求参数
     *        演示: http://localhost:8080/user/gotoResultParamsURL?id=123
     * id=100:表示请求包含名为 param1 的请求参数,但其值不能为 100
     *       演示: http://localhost:8080/user/gotoResultParamsURL.do?id=100
     *{“id!=100”, “name”}:请求必须包含名为 id 和 name 的两个请求参数,
     *      http://localhost:8080/user/gotoResultParamsURL.do?id=123
     */
    @RequestMapping(value={"gotoResultParamsURL"}, params = {"id!=100","name"})
    public ModelAndView gotoResultParamsURL (ModelAndView modelAndView){
        //封装数据
        modelAndView.addObject("nowDate", new Date() +"===gotoResultParamsURL");
        //指定页面
        modelAndView.setViewName("result");

        return modelAndView;
    }
}