目录

1.@RequestMapping("")

2.RequestMapping用在类上       

3.如果有两个控制器拦截了同一个请求,

4.RequestMapping   method属性, 不匹配报405

5.RequestMapping     restful风格占位符传递参数

6.RequestMapping     value 的通配符  不匹配报400

7.RequestMapping   params   参数中必须有某个或没有参数

8.requestmapping    headers  请求头中必须有某个或没有参数

9.@requestheader

10.@cookievalue  

  11.@requestparam注解


1.@RequestMapping("")

1.RequestMapping用在方法上

表示拦截什么值的请求,有点像servlet的@webservlet注解,都是拦截特定的请求

package org.hxut.zyk.com.hxut.zyk.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

//设置为ioc容器类
@Controller
@RequestMapping("/target")
public class Hellocontroller {
    //拦截只写了一个/的请求      http://localhost:8080/Springmvc_demo1_war_exploded/
    @RequestMapping("/")
    public String firstpage()
    {
        return "index";
    }
//拦截/target请求            http://localhost:8080/Springmvc_demo1_war_exploded/target
    @RequestMapping("/target")
    public String Gettarget()
    {
        return "target";
    }
}

http://localhost:8080/Springmvc_demo1_war_exploded/target   即可访问target.html页面

2.RequestMapping用在类上       

      表示要加上/后的内容才可以访问 http://localhost:8080/Springmvc_demo1_war_exploded/target/target 可以访问target页面

package org.hxut.zyk.com.hxut.zyk.Controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

//设置为ioc容器类
@Controller
//在类上,表示要加上/后的内容才可以访问 http://localhost:8080/Springmvc_demo1_war_exploded/target
@RequestMapping("/target")
public class Hellocontroller {
    //拦截只写了一个/的请求      http://localhost:8080/Springmvc_demo1_war_exploded/
    @RequestMapping("/")
    public String firstpage()
    {
        return "index";
    }
    @RequestMapping("/target")
    public String Gettarget()
    {
        return "target";
    }
}

3.如果有两个控制器拦截了同一个请求,

则会报错,即添加了controller的类中,有两个方法,他们@requestmapping注解的value值相同。

4.RequestMapping   method属性, 不匹配报405

设置匹配的请求类型 ,post ,get ,delete 之类的,默认是都可以,

@RequestMapping(value = "/employee/{id}",method = RequestMethod.GET)  只接收get请求

@GetMapping(value = "/targe?3") 要求必须为get请求

5.RequestMapping     restful风格占位符传递参数

普通风格     /delete?id=1

restful风格  /delete/1

HTML页面<a href="/target5/"name1"/123></a>

控制器

 @RequestMapping(value ={ "/target5/{username}/{pwd}"})
//    @PathVariable注解的作用是将username从路径中拿出来,并赋值给变量uname
    //    @PathVariable注解的作用是将pwd从路径中拿出来,并赋值给变量pwd
    public String disaplayrestful(@PathVariable("username") Integer uname,@PathVariable("pwd") String pwd) {
        System.out.println(uname);
        System.out.println(pwd);
        return "target";
    }

6.RequestMapping     value 的通配符  不匹配报400

value={"/a?a/testant"}   任意的单个字符

value={"/abba/testant"}错误

value={"/aca/testant"}正确

value={"/aaa/testant"}   正确  

value={"/a*a/testant"}   任意的多个字符

/aaaaaaaaa/testant"正确

"/aba/testant"  正确

"/aa/testant"     错误

value={"test/**/tesatext"}只要a和b 能匹配上,不管** 中写了什么,都可以访问

 test/asfdsfasdf/sfdsfd/testant  正确

7.RequestMapping注解的params

传过来的参数一定要带有,或者不带有某个参数   不匹配报400

  params={"username"} 一定要带有username 参数

                  {"!username"}  一定不带有username 参数

                 {"username"=admin} 有username参数,且值必须是admin

                {"username"!=admin}有username参数,且值不能是admin 或者 没有username参数

                 {"username","psw"}  必须有username和psw 

@requestMapping(value = "/target3", params = {"username!=1234"})
只有请求中有username这个参数,而且值不等于1234才可以访问本界面

8.requestmapping的headers

请求头某个信息的必须为规定值,

@GetMapping(headers = {"Host=localhost:8080"})  必须是localhost且是8080端口

这种键值对的是请求头

9.一个控制方法可以拦截多个请求

    @RequestMapping(value = {"/target", "/target2"},method = {RequestMethod.GET})
    public String disaplaytarget() {
        return "target";
    }

9.@requestheader

要求请求头中必须有某个参数

10.cookievalue  

要求cookie中必须有某个参数

  11.@requestparam注解

 @RequestParam(value = "s",required = true,defaultValue = "defaultvalue1")

value 用于获取请求地址中名为s的参数

required  该参数是否是必须的

default  默认值 当没有传递这个参数,而且 required为true时,给这个变量赋值

<hr>requestparam注解
<form  th:action="@{requestparam_zhujie}">
    用户名<input type="text" name="uunamed"></input>
    <input type="checkbox" name="hobbis2" value="b">
    <input type="checkbox" name="hobbis2" value="c">
    <input type="checkbox" name="hobbis2" value="a">
    <input type="submit" content="click me">
</form>
    @RequestMapping(value = {"requestparam_zhujie"})
    public String get_requestparam_zhujie(
//            value  指定为形参赋值的请求参数的参数名
//           required  设置是否必须传输此请求,默认为true,若没有设置defalut,且没有传输该参数,会报400,只传参数名,没有参数值,不报错
//            defaultValue 当value所指定的请求参数没有传输时,使用默认值
            @RequestParam(value = "uunamed",required = true,defaultValue = "zyk")
            String uname,
            @RequestParam(value = "s",required = true,defaultValue = "default")
            String upwd,
            String[] hobbis2,
            @RequestHeader(value="Host")
                    String address)
    {     System.out.println("requestparam获取注解");
        System.out.println("获取uname"+uname);
        System.out.println("没有传这个值,应该使用注解设置的default"+upwd);
        System.out.println(Arrays.toString( hobbis2));
        return "test_param";
    }

结果:

例子:params = {"username!=1234"}, headers = {"Host=localhost:8080"}) 请求一定是/targe?3 ?是任意格式字符 且一定要是get请求,要么有params参数,且值不是1234,要么没有该参数,请求头的host一定是本机

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐