前面聊过了SpringMVC,以及通过实例演示了SpringMVC如何搭建,如果对环境搭建不太了解的话,可以看一下前面的文章(下面演示的例子,环境都是通过上面的例子进行演示的):传送阵

在使用javaweb项目原生是servlet中,对应请求地址,返回的数据的页面之前都是在web.xml,新版本可以通过注解进行配置了。需要了解servlet可以看一下前面的文章:传送阵

获得参数

原生ServletAPI

其实这个说是原生,其实还是SpringMVC进行的一些简单包装处理。

还是老规矩先来例子:

@Controller
@RequestMapping(value = "/test" )
public class controller {
    @RequestMapping("/a")
    public String test(HttpServletRequest request){
      System.out.println(" ======="+request);
      System.out.println(" ======="+request.getMethod());
     return "index";
    }
}

访问地址:

http://localhost:8080/testSpringMVC_war/test/a?username=张三

然后看一下后台结果

java 请求头参数注解 java获取请求头参数_java 请求头参数注解

因为springMVC如果方法带有HttpServletRequest的参数,会直接将其赋值,然后可以在方法种使用这个servletAPI的一些方法,不过不太建议,毕竟已经开始使用框架了,还使用之前的API,几乎没用什么意义。

直接形参

这个是springMVC的框架得到参数的方法方式

请求参数 和 形式参数名字相同

如果映射的方法中形参和url参数名一样的话,可以直接使用的,用例子演示:

@Controller
@RequestMapping(value = "/test" )
public class controller {
    @RequestMapping("/a")
    public String test(String username){

       System.out.println(" ======="+username );
     return "index";
    }
}

然后访问地址:http://localhost:8080/testSpringMVC_war/test/a?username=张三

java 请求头参数注解 java获取请求头参数_java_02

请求参数 和 形式参数名字不相同

如果请求参数和形参不一样的话,自然也有可以处理的方式,这个需要使用的注解@RequestParam

@RequestParam 也有常用的三个属性
    
     value:这个时表示url中参数的值
     defaultValue: url参数默认值
     required 这个属性值为布尔值, 为false的时候,且未获取到参数,则使用 defaultValue.

还是来一个例子演示:

@Controller
@RequestMapping(value = "/test" )
public class controller {
    @RequestMapping("/a")
    public String test(@RequestParam(value = "user",required=true) String username,@RequestParam( value = "pwd",required = false,defaultValue = "123456") String password){
        System.out.println(" ======="+username+"======"+ password );

     return "index";
    }
}

然后访问地址:http://localhost:8080/testSpringMVC_war/test/a?user=张三&psd=111111

java 请求头参数注解 java获取请求头参数_java_03

补充—可以直接参数封装为对象(POJO)

这个是有一个前提,那就是对象的属性名,和请求参数的名字一致。不管是 GET 或 POST 的x-www-urlencode 均可。

首先创建一个对象:

package com.xzd.dome;

public class User {
    String username;
    String password;
 
    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}
@Controller
@RequestMapping(value = "/test" )
public class controller {
    @RequestMapping("/a")
    public String test(User user){
//        System.out.println(" ======="+username+"======"+ password );
        System.out.println(user);

     return "index";
    }
}

地址:http://localhost:8080/testSpringMVC_war/test/a?user=张三

这个是故意写一个属性值,来测试一下,是否会使用默认值。看一下结果:

java 请求头参数注解 java获取请求头参数_java_04

注意:对象类中,如果没有带有参数的构造方法,或者set方法就不会自动封装。

封装成Map

有时候传递的参数很多,有没有对应的类,同时不想在映射的方法中放置很多形参,那么可以捡起封装为Map。需要使用的一个注解是:@RequestParam。无论是GET/POST 都是可以的。

来例子演示:

@Controller
@RequestMapping(value = "/test" )
public class controller {
    @RequestMapping("/a")
    public String test(@RequestParam Map<String,String> map){
        System.out.println(map);

     return "index";
    }
}

然后请求地址:http://localhost:8080/testSpringMVC_war/test/a?username=张三&psw=1234&sex=男

看一下后台结果:

java 请求头参数注解 java获取请求头参数_servlet_05

获得请求参数

RequestHeader

这个使用对道了注解@RequestHeader。如果请求头不知道有什么东西,可以看前面的文章:传送阵

@RequestHeader 也有常用的三个属性
    
     value:这个时表示请求头中参数的值
     defaultValue: 请求头默认值
     required 这个属性值为布尔值, 为false的时候,且未获取到参数,则使用 defaultValue.

还是老规矩来一个例子:

@Controller
@RequestMapping(value = "/test" )
public class controller {
    @RequestMapping("/a")
    public String test(@RequestHeader("Cookie") String cookie){
        System.out.println("cookie="+cookie);

     return "index";
    }
}

访问地址:http://localhost:8080/testSpringMVC_war/test/a

java 请求头参数注解 java获取请求头参数_servlet_06

CookieValue

还有一个注解是处理cookie的,因为cookie中有可能会含有很多键值对,所以通过这个注解可以得到,而不像是RequestHeader得到所有的键值对。

@CookieValue 也有常用的三个属性
    
     value:这个时表示cookie中参数的值
     defaultValue: cookie默认值
     required 这个属性值为布尔值, 为false的时候,且未获取到参数,则使用 defaultValue.

来一个例子:

@Controller
@RequestMapping(value = "/test" )
public class controller {
    @RequestMapping("/a")
    public String test(@CookieValue(value = "JSESSIONID") String jsessionId){
        System.out.println("JSESSIONID="+jsessionId);
     return "index";
    }
}

访问地址:http://localhost:8080/testSpringMVC_war/test/a

java 请求头参数注解 java获取请求头参数_java_07