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

news2024/11/28 19:46:41

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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/428477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

30天学会《Streamlit》(2)

30学会《Streamlit》是一项编码挑战&#xff0c;旨在帮助您开始构建Streamlit应用程序。特别是&#xff0c;您将能够&#xff1a; 为构建Streamlit应用程序设置编码环境 构建您的第一个Streamlit应用程序 了解用于Streamlit应用程序的所有很棒的输入/输出小部件 第2天 - 构建…

Kubernetes部署Nacos集群

一、k8s架构 master: 11.0.1.3 node: 11.0.1.4,11.0.1.5(nfs) nfs: 11.0.1.5 二、安装nfs 安装nfs-utils和rpcbind nfs客户端和服务端都安装nfs-utils包 yum install nfs-utils rpcbind -y创建共享目录 mkdir -p /nfsdata chmod 777 /nfsdata编辑/etc/exports文件添加如下…

【部署项目】记录一些踩到的坑

这里写自定义目录标题记录一些踩到的坑设置二级域名注意事项文件访问权限记录一些踩到的坑 这个帖子是用来记录自己在windows和linux下进行部署项目时遇到的坑,以及对应的解决办法 设置二级域名 当你只有一个域名又不想买新的域名的时候(域名其实很便宜,贵在租服务器上),二级…

剖析多利熊业务如何基于分布式架构实践稳定性建设

作者 | 百度小程序团队 导读 多利熊稳定性建设&#xff0c;是指为了确保系统或服务&#xff0c;在生产环境中的稳定性而采取的一系列措施和优化。这包括但不限于监控、预警、容错、自动化、规范、质量等方面的优化。通过稳定性建设&#xff0c;可以提高系统的可靠性和可用性&am…

sysbench压测MySQL8问题记录

数据库版本&#xff1a;MySQL8.0.26 sysbench版本&#xff1a;sysbench 1.0.17 CentOS版本&#xff1a;CentOS Linux release 7.9.2009 (Core) 问题一&#xff1a;FATAL: error 2059: Authentication plugin ‘caching_sha2_password’ cannot be loaded 执行 sysbench /usr/…

【论文阅读】3D-LaneNet

【论文阅读】3D-LaneNet 主要要做的事情就是 lane detection。这里提一下 BEV&#xff08;Bird‘s Eye View&#xff09; 感知算法&#xff0c;为了将 2D 图像映射到 3D 空间中&#xff0c;能够更准确的检测物体位置&#xff0c;需要 BEV 感知的结果。后续还会继续了解这方面内…

论文阅读【17】Dynamic ensemble learning for multi-label classification

论文十问十答&#xff1a; Q1论文试图解决什么问题&#xff1f; Q2这是否是一个新的问题&#xff1f; Q3这篇文章要验证一个什么科学假设&#xff1f; Q4有哪些相关研究&#xff1f;如何归类&#xff1f;谁是这一课题在领域内值得关注的研究员&#xff1f; Q5论文中提到的解决方…

研究LLMs之前,不如先读读这五篇论文!

目标&#xff1a;了解 LMM 背后的主要思想 ▪️ Neural Machine Translation by Jointly Learning to Align and Translate ▪️ Attention Is All You Need ▪️ BERT ▪️ Improving Language Understanding by Generative Pre-Training ▪️ BART Neural Machine Translati…

引导程序、BIOS中断、检测内存容量、实模式切换到保护模式

初始化引导程序 基本概念 BIOS会将磁盘的第0个扇区(大小为512字节)&#xff0c;加载到0x7c00处。 引导程序负责操作系统的加载&#xff0c;主要用于为操作系统运行提供初始化环境&#xff0c;并运行加载操作系统。 BIOS只加载磁盘的第0个扇区(512字节)到内存中&#xff0c;次程…

【论文阅读_序列推荐】Intent Contrastive Learning for Sequential Recommendation

【论文阅读_序列推荐】Intent Contrastive Learning for Sequential Recommendation 文章目录【论文阅读_序列推荐】Intent Contrastive Learning for Sequential Recommendation1. 来源2. 介绍3. 准备工作3.1 问题定义3.2 用于下一个项目预测的深度 SR 模型3.3 SR中的对比SSL …

基于springboot和ajax的简单项目 06 日志界面的delete功能(根据选择的checkbox)

01.这次后台开始&#xff1b; 顺序依次是dao->xml->service->serviceimpl->controller->html 02.dao接口 public int doDeleteObjects(Param("ids") Integer... ids);03.xml文件 <update id"doDeleteObjects" >delete from sys_lo…

七项新发布,亚马逊云科技Amazon S3持续进化

17年前的3月14日&#xff0c;亚马逊云科技推出了一项“非常简单的”对象存储服务&#xff08;Amazon Simple Storage Service&#xff09;。该服务允许开发人员创建、列出和删除私有存储空间&#xff08;称为存储桶&#xff09;、上传和下载文件以及管理其访问权限。当时&#…

C++刷题--选择题1

文章目录选择题选择题 1&#xff0c; 以下for循环的执行次数是&#xff08;&#xff09; for(int x 0, y 0; (y 123) && (x < 4); x);A 是无限循环 B 循环次数不定 C 4次 D 3次 解析 &#xff1a; C&#xff0c;for循环y 123 是赋值语句&#xff0c; 也就是一…

PSO算法

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; 目录1.PSO算法主要步骤&#x1f331;2.PSO更新方法&#x1f33e;3.PSO求解TSP问题&#x1f334;粒子群算法&#xff08;Particle Swarm Optimization&#xff0c;简称PSO&#xff09;是一种优化算法&#xff0c;模拟…

美国全力打击币圈 “一套花式组合拳”,打得从业者透不过气

银行危机“平息”过后&#xff0c;美国监管机构对币圈接连出手&#xff0c;一套花式组合拳打得从业者透不过气&#xff0c;也使得加密行业在政府的拳头之下风声鹤唳。 首先&#xff0c;切断加密货币与传统金融机构的联系。美国金融体系陷入混乱之际&#xff0c;一系列历史性的银…

顺序表(数据结构)

目录 线性表 顺序表 1、顺序表创建 2、初始化 3、扩容 4、尾插 5、尾删 6、头插 7、头删 8、指定位置插入 9、指定位置删除 10、查询 11、打印 12、销毁 顺序表总代码 Leetcode编程题 1、移除元素 题目链接&#xff1a; 题目描述&#xff1a; 题目解析&#xff1a; 2、删除有序…

游戏内嵌社区服务开放,助力开发者提升玩家互动与留存

华为 HMS Core 游戏内嵌社区服务提供快速访问华为游戏中心论坛能力&#xff0c;支持玩家直接在游戏内浏览帖子和交流互动&#xff0c;助力开发者扩展内容生产和触达的场景。 一、为什么要游戏内嵌社区&#xff1f; 二、游戏内嵌社区的典型使用场景 1、游戏内打开论坛 您可以在…

[Linux]环境变量

目录 基本概念 常见的环境变量 PATH测试 HOME测试 SHELL测试 和环境变量相关的命令 main函数的三个参数 环境变量的组织方式 通过代码如何获取环境变量 通过系统调用获取或设置环境变量 基本概念 环境变量(environment variables)一般是指在操作系统中用来指定操作系…

FreeRTOS 系统内核控制函数

FreeRTOS 中有一些函数只供系统内核使用&#xff0c;用户应用程序一般不允许使用&#xff0c;这些 API 函数就是系统内核控制函数。 内核控制函数 顾名思义&#xff0c;内核控制函数就是 FreeRTOS 内核所使用的函数&#xff0c;一般情况下应用层程序不使用这些函数&#xff0…

6基于二阶锥规划的主动配电网最优潮流求解

matlab代码&#xff1a;基于二阶锥规划的主动配电网最优潮流求解 参考文献&#xff1a;主动配电网多源协同运行优化研究_乔珊 摘要&#xff1a;最优潮流研究在配 电网规划运行 中不可或缺 &#xff0c; 且在大量分布式能源接入 的主动配 电网环境下尤 为重要 。传统的启发式算…