ssm框架之SpringMVC:浅聊获得参数以及获得请求头参数

前面聊过了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=张三

然后看一下后台结果

在这里插入图片描述

因为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=张三

在这里插入图片描述

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

如果请求参数和形参不一样的话,自然也有可以处理的方式,这个需要使用的注解@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

在这里插入图片描述

补充—可以直接参数封装为对象(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=张三

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

在这里插入图片描述

注意:对象类中,如果没有带有参数的构造方法,或者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=男

看一下后台结果:

在这里插入图片描述

获得请求参数

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

在这里插入图片描述

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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
视频详细讲解,需要的小伙伴自行百度网盘下载,链接见附件,永久有效。 讲解方式: 以基础入门为主,使用PPT进行讲解,每个技术都配有相应的Demo进行知识落地理解 课程亮点: 适合对SSM没有使用过的同学,讲解通俗易懂,覆盖了当前SSM使用的基本操作 课程内容: 1、Spring简介及快速入门 2、Spring配置文件及其相应API 3、Spring注解开发 4、Spring web环境及其Junit的集成 5、Spring JDBCTemplate的基本使用 6、Spring AOP的介绍及其配置使用 7、Spring的声明式事务控制 8、SpringMVC的介绍及其快速入门 9、SpringMVC的数据请求和响应 10、SpringMVC的异常处理及其拦截器 11、MyBatis简介及其入门 12、MyBatis的配置文件详解 13、MyBatis的多表操作 适用人群: 在校大学生/职场小白 Spring部分: 1、Spring简介 2、Spring快速入门 3、Spring配置文件详解 4、Spring依赖注入详解 5、Spring相应API 6、Spring数据源集成配置 7、Spring注解开发 8、Spring集成Junit测试 9、Spring集成web环境 10、Spring JDBCTemplate基本使用 11、SpringAOP简介和快速入门 12、Spring XML方式配置AOP 13、Spring注解方式配置AOP 14、Spring编程式事务控制介绍 15、Spring基于XML方式的声明式事务控制 16、Spring基于注解方式声明式事务控制 SpringMVC部分: 1、SpringMVC简介 2、SpringMVC组件解析 3、SpringMVC数据响应 4、SpringMVC数据请求 5、SpringMVC文件上传 6、SpringMVC+Spring完成练习 7、SpringMVC拦截器 8、SpringMVC异常处理机制 MyBatis部分: 1、MyBatis入门操作 2、MyBatis的Dao层实现方式 3、MyBatis的映射文件深入 4、MyBatis的核心文件深入 5、MyBatis的多表操作 6、MyBatis的注解开发

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值