springMVC中 RequestMapping的使用


先来说下 @RequestMapping注解的作用:

该注解的最大作用:完成"请求路径"到"处理该请求方法"之间的映射关系,放在类上方,主要是给类中的方法,定义一个namespace(命名空间)、放在方法上表示请求到达方法的具体位置。

比如:(那么访问路径就是“/sys/login”这样去访问)

@RequestMapping("/sys")
@Controller
public class LoginController {

    private Logger log = Logger.getLogger(this.getClass());

    @RequestMapping(value = "/login")
    public ModelAndView login(HttpServletRequest req, HttpServletResponse res) {
        String loginName = req.getParameter("loginName");
        String password = req.getParameter("password");

        log.info(loginName);
        log.info(password);

        ModelAndView mv = new ModelAndView("/layout/main");
        return mv;

    }

    @RequestMapping(value = "/login02")
    public ModelAndView login02(HttpServletRequest req,HttpServletResponse res) {
        String loginName = req.getParameter("loginName");
        String password = req.getParameter("password");

        log.info(loginName);
        log.info(password);

        ModelAndView mv = new ModelAndView("/layout/main");
        return mv;

    }
}

关于它的属性

value 属性:

value 属性为必填属性,不可省略,但是value= 这6个字符可以省略。 它的作用:主要是完成"请求路径" 到 "处理该请求"的方法之间的映射关系

它的配置方式:
@RequestMapping(value=“/users/**”) 匹配“/users/abc/abc”;

@RequestMapping(value="/product?")
匹配“/product1”或“/producta”,但不匹配“/product”或“/productaa”或“/product/asdf”;

@RequestMapping(value="/product*")
匹配“/productabc”或“/product”,但不匹配“/productabc/abc”;

@RequestMapping(value="/product/*") 匹配“/product/abc”,但不匹配“/productabc”;

@RequestMapping(value={"/test1", "/create"})匹配"/test1"或"/create"

method 属性:

method 该属性可以在后台定义前端页面,采用什么样的HTTP提交方法,如果不满足 将抛出405 Method not allowed 这种错误

params 该属性 :

params 该属性可以在后台定义前端页面,在提交参数数据,需要对按照后台设定的参数条件,传递参数

@RequestMapping(value="/toLogin",params="flag") 代表请求中必须要有名为flag的提交项

@RequestMapping(value="/toLogin",params="!flag") 代表请求中不能有名为flag的提交项

@RequestMapping(value="/toLogin",params="flag=hello") 代表请求中必须有名为flag的提交项,且值为hello

@RequestMapping(value="/toLogin",params="flag!=hello") 代表请求中如果有名为flag的提交项,其值不能为hello

@RequestMapping(value="/toLogin",params={"flag1","flag2=hello"})代表请求中必须有名为flag1的提交项,同时必须有名为flag2的提交项,且flag2的值必须为hello

比如下面:就要求提交方式必须是post,且传下来的密码不能为123456,不能有userName的提交项

@RequestMapping(value = "/login", method = { RequestMethod.POST }, params = { "password!=123456", "!userName" })
public ModelAndView login(HttpServletRequest req, HttpServletResponse res) {
    String loginName = req.getParameter("loginName");
    String password = req.getParameter("password");

    log.info(loginName);
    log.info(password);

    ModelAndView mv = new ModelAndView("/layout/main");
    return mv;

}


原文链接:https://blog.csdn.net/IT_CREATE/article/details/86565710