9.SpringMVC注解式开发-处理器的请求映射规则的定义

1.对请求URI的命名空间的定义

  @RequestMapping的value属性用于定义所匹配请求的URI。但对于注解在方法上和注解在类上,

  其value 属性 所指定的URI,意义是不同的

  

  一个@Controller 所注解的类中,可以定义多个处理器方法。当然,不同的处理器方法 所匹配的 URI 是不同的。

  这些不同的 URI 被指定在注解于方法之上的@RequestMapping value 属性中。

  但若这些请求具有相同的 URI 部分,则这些相同的 URI,可以被抽取到注解在 类之上的@RequestMapping  value 属性中。

  此时的这个 URI 称为命名空间。换个角度说,要访问处理器的指定方法,必须要在方法指定 URI 之前加上处理器类前定 义的命名空间。

 

 1 @Controller   //表示当前类 是处理器
 2 @RequestMapping("/test")    //@RequestMapping注解一个类,可以将抽取出 方法中 相同的  uri,作为 这个处理器的 命名空间
 3                             //要 访问处理器的 指定方法,必须要在指定方法的URI 之前 加上命名空间
 4 public class MyController {
 5     @RequestMapping(value={"/hello.do","/helloworld.do"})
 6     public ModelAndView method1(HttpServletRequest request,
 7             HttpServletResponse response)  {
 8         ModelAndView mv = new ModelAndView();
 9         mv.addObject("message", "Hello method1!");
10         mv.setViewName("/WEB-INF/jsp/hello.jsp");
11         return mv;
12     }

 

2.请求URI中通配符的作用

  a)资源名称中使用通配符

    在请求的资源名称中使用通配符,表示请求的资源名称中只要包含指定的字符即可完成匹配

    例如法中/some*.do 表示只要求的名称 some 头即

    /*other.do 表示的意思是,只要请求的资源名称以 other 结尾即可。

  b)资源路径中使用通配符

    在资源路径中使用通配符,有两种用法:路径级数的精确匹配、路径级数的可变匹配  

    /xxx/*/show.do表示在 show.do 的资源名称前面,只能有两级路径,

    第一级必须是/xxx,而 第二级随意。这种称为路径级数的精确匹配。

    /xxx/**/show.do表示在 show.do 的资源名称前面,必须以/xxx 路径开头,

    而其它级的路径 是否包含,若包含又包含几级,各级又叫什么名称,均随意。这种称为路径级数的可变匹配。

3.对请求提交方式的定义(GET/POST)

  对于@RequestMapping,其中有一个属性method,用于对被注解方法所处理请求的进行限制

  即只有满足该method属性指定的提交方式的请求,才会执行该注解方法

  Method 属性取值为RequestMethod 枚举常量。常用的为RequestMethod.GET、RequestMethod.POST

1 @RequestMapping(value="/hello*.do",method=RequestMethod.POST)

4.对请求中携带参数的定义

  @RequestMapping中params属性中定义了请求中必须携带的参数的要求

  @RequestMapping(value=”/xxx.do”, params={“name”,”age”}) :要求请求中必须携带请求 参数 name  age

  @RequestMapping(value=”/xxx.do”, params={“!name”,”age”}) :要求请求中必须携带请求 参数 age,但必须不能携带参数 name

  @RequestMapping(value=”/xxx.do”, params={“name=zs”,”ag=23”})  

   要求请求中必须携带请求参数 name,且其值必须为 zs;必须携带参数 age,其其值必须为 23

  @RequestMapping(value=”/xxx.do”, params=“name!=zs”)  求参数 name,且其值必须不能为 zs

 

原文地址:https://www.cnblogs.com/xuzekun/p/7406626.html