ajax请求携带tooken_修炼SpringMVC-注解开发-处理器的请求映射

上一篇:《修炼SpringMVC-配置开发-视图解析器》

如果文中有纰漏,请多多指正!!!

一、案例入门

先看一个简单注解案例

在SpringMVC中利用注解开发Controller,无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@RequestMapping 和@RequestParam 等一些注解用以定义URL请求和Controller方法之间的映射,这样的Controller 就能被外界访问到。此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。

  • 自定义处理器:
package com.springmvc.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;@Controllerpublic class HelloController {    @RequestMapping("/test.do")    public ModelAndView test() throws Exception {        ModelAndView mov=new ModelAndView("index");        mov.addObject("key", "注解开发");        return mov;    }}
  • 注解配置:
  • web.xml配置
 SpringMVCDemoorg.springframework.web.servlet.DispatcherServletcontextConfigLocationclasspath:mySringMVC.xml1SpringMVCDemo*.do

通过以上的简单配置,一个简单完整的处理器,就可以正常工作了。当我们访问,比如本测试案例的地址 http://localhost:8080/SpringMVCPrimary/test.do时,就会在请求处理完成后跳转到index.jsp页面。

二、处理器的请求规则映射配置

在入门案例中,我们通过将@RequestMapping注解注解在方法上来定义处理器对于请求的映射关系。该注解可以注解在方法上,也可以注解在类上,但其含义不同。

对于处理器的请求规则映射的定义我们将通过以下4点进行概要说明。

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

所谓命名空间(namespace),是指标识符的各种可见范围,也就是通过名称空间来分类,区别不同的代码功能,同时也是URI的一部分。

我们通过@RequestMapping注解的value属性用语定义所匹配请求的URI。如果指定在方法上的注解具有相同的部分URI,我们可以抽取相同部分,通过@RequestMapping注解注解在类上,此时的这个URI就是命名空间。

例如有如下案例,我们在访问时就必须是加上/common,也就是http://localhost:8080/SpringMVCPrimary/common/test1.do或者http://localhost:8080/SpringMVCPrimary/common/test2.do:

@Controller@RequestMapping("/common")public class HelloController {    @RequestMapping("/test1.do")    public ModelAndView test1() throws Exception {        ModelAndView mov=new ModelAndView("index");        mov.addObject("key", "注解开发");        return mov;    }    @RequestMapping("/test2.do")    public ModelAndView test2() throws Exception {        ModelAndView mov=new ModelAndView("index");        mov.addObject("key", "注解开发");        return mov;    }}

2.在请求URI中使用通配符

在请求URI中使用通配符,可大致分为两种

1)在资源名称中使用通配符

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

例如案例:

@Controller@RequestMapping("/common")public class HelloController {    @RequestMapping("/*test1.do")    public ModelAndView test1() throws Exception {        ModelAndView mov=new ModelAndView("index");        mov.addObject("key", "注解开发");        return mov;    }    @RequestMapping("/test2*.do")    public ModelAndView test2() throws Exception {        ModelAndView mov=new ModelAndView("index");        mov.addObject("key", "注解开发");        return mov;    }}

其中/*test1.do表示资源名称以test1结尾即可,/test2*.do表示资源名称以test2开头即可。例如请求http://localhost:8080/SpringMVCPrimary/common/aaaaatest1.do就可以访问到test1()方法。

2)在资源路径中使用通配符

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

  • 路径级数的精确匹配。

比如/common/*/test1.do,表示test1.do的资源名称前边,只能且必须有两级路径,第一级必须是/common,而第二级随意。

  • 路径级数的可变匹配。

比如/common/**/test1.do,表示test1.do的资源名称前边,必须以/common开头,而其他级的路径是什么,有或没有,都随意。

3.对请求的提交方式的定义

在客户端浏览器常用的请求提交方式一般有以下几种:

1.表单请求:默认GET,可指定POST2.ajax请求:默认GET,可指定POST3.地址栏请求:GET4.超链接请求:GET5.src资源路经请求:GET

对于@RequestMapping注解,我们可以通过method属性,对指定注解方法所处理的请求方式,进行限定,只有满足method指定的提交方式的请求,才会执行被注解方法。

如果我们不配置method属性值,那么无论是GET还是POST提交方式,均可匹配执行,也就是对于请求提交方式没有要求。

method属性取值为RequestMethod枚举常量:

public enum RequestMethod {    GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE}

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

在@RequestMapping注解中,param属性中定义了必须携带的参数的要求。

比如:

  • @RequestMapping(value="/test1.do",method=RequestMethod.GET, params={"a","b"}):要求请求中必须携带请求参数a和b.

例:http://localhost:8080/SpringMVCPrimary/common/test1.do?a=1&b=3,a或b少一个都不行,携带参数值任意。

  • @RequestMapping(value="/test1.do",method=RequestMethod.GET, params={"!a","b"}):要求请求中必须携带请求参数b,但必须不能携带参数a.
  • @RequestMapping(value="/test1.do",method=RequestMethod.GET, params={"a=1","b=2"}):要求请求中必须携带请求参数a和b,并且a=1,b=2.
  • @RequestMapping(value="/test1.do",method=RequestMethod.GET, params={"a=1","b!=2"}):要求请求中必须携带请求参数a和b,并且a=1,b!=2.
114b317727a0f07f56e8698b31a53c35.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值