千家信息网

Java中SpringMVC怎么获取请求数据

发表于:2025-11-10 作者:千家信息网编辑
千家信息网最后更新 2025年11月10日,本文小编为大家详细介绍"Java中SpringMVC怎么获取请求数据",内容详细,步骤清晰,细节处理妥当,希望这篇"Java中SpringMVC怎么获取请求数据"文章能帮助大家解决疑惑,下面跟着小编的
千家信息网最后更新 2025年11月10日Java中SpringMVC怎么获取请求数据

本文小编为大家详细介绍"Java中SpringMVC怎么获取请求数据",内容详细,步骤清晰,细节处理妥当,希望这篇"Java中SpringMVC怎么获取请求数据"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    1.获得请求参数

    客户端请求参数的格式是:name=value&name=value… … 服务器端要获得请求的参数,有时还需要进行数据的封装,SpringMVC可以接收如下类型的参数:

    1)基本类型参数:

    Controller中的业务方法的参数名称要与请求参数的name一致,参数值会自动映射匹配。

    //http://localhost:8080/project/quick9?username=zhangsan&age=12@RequestMapping("/quick9")@ResponseBodypublic void quickMethod9(String username,int age) throws IOException {    System.out.println(username);    System.out.println(age);}

    2)POJO类型参数:

    Controller中的业务方法的POJO参数的属性名与请求参数的name一致,参数值会自动映射匹配。

    //http://localhost:8080/itheima_springmvc1/quick9?username=zhangsan&age=12public class User {    private String username;    private int age;    getter/setter…}@RequestMapping("/quick10")@ResponseBodypublic void quickMethod10(User user) throws IOException {    System.out.println(user);}

    3)数组类型参数

    Controller中的业务方法数组名称与请求参数的name一致,参数值会自动映射匹配。

    //http://localhost:8080/project/quick11?strs=111&strs=222&strs=333@RequestMapping("/quick11")@ResponseBodypublic void quickMethod11(String[] strs) throws IOException {    System.out.println(Arrays.asList(strs));}

    4)集合类型参数

    获得集合参数时,要将集合参数包装到一个POJO中才可以。






    @RequestMapping("/quick12")@ResponseBodypublic void quickMethod12(Vo vo) throws IOException {    System.out.println(vo.getUserList());}

    当使用 ajax提交时,可以指定 contentType为json形式,那么在方法参数位置使用@RequestBody可以 直接接收集合数据而无需使用POJO进行包装。

    @RequestMapping("/quick13")@ResponseBodypublic void quickMethod13(@RequestBody List userList) throws IOException {    System.out.println(userList);}

    注意: 通过谷歌开发者工具抓包发现,没有加载到jquery文件,原因是SpringMVC的前端控制器 DispatcherServlet的url-pattern配置的是/,代表对所有的资源都进行过滤操作,我们可以通过以下两种方式指定放行静态资源: • 在spring-mvc.xml配置文件中指定放行的资源

    • 或者使用标签

    2.请求乱码问题

    当post请求时,数据会出现乱码,我们可以在web.xml设置一个过滤器来进行编码的过滤。

                CharacterEncodingFilter        org.springframework.web.filter.CharacterEncodingFilter                    encoding            UTF-8                        CharacterEncodingFilter        /*    

    当请求的参数名称与Controller的业务方法参数名称不一致时,就需要通过@RequestParam注解显示的绑定。



    3.参数绑注解@RequestParam

    注解@RequestParam还有如下参数可以使用:

    value:请求参数名称
    required:此在指定的请求参数是否必须包括,默认是true,提交时如果没有此参数则报错
    defaultValue:当没有指定请求参数时,则使用指定的默认值赋值
    @RequestMapping("/quick14")@ResponseBodypublic void quickMethod14(@RequestParam(value="name",required = false,defaultValue = "defaultname") String username) throws IOException {System.out.println(username);}

    4.获得Restful风格的参数

    Restful是一种软件 架构风格、 设计风格,而不是标准,只是提供了一组设计原则和约束条件。主要用于客户端和服务 器交互类的软件,基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存机制等。

    Restful风格的请求是使用 "url+请求方式"表示一次请求目的的,HTTP 协议里面四个表示操作方式的动词如下:

    GET :获取资源
    DELETE:删除资源
    PUT:更新资源
    POST:新建资源

    例如:

    /user/1 GET :得到 id = 1 的 user
    /user/1 DELETE:删除 id = 1 的 user
    /user/1 PUT:更新 id = 1 的 user
    user POST:新增 user

    上述url地址/user/1中的1就是要获得的请求参数,在SpringMVC中可以使用占位符进行参数绑定。地址/user/1可以写成 /user/{id},占位符{id}对应的就是1的值。在业务方法中我们可以使用@PathVariable注解进行占位符的匹配获取工作。

    //http://localhost:8080/itheima_springmvc1/quick19/zhangsan@RequestMapping("/quick19/{name}")@ResponseBodypublic void quickMethod19(@PathVariable(value = "name",required = true) String name){System.out.println(name);}

    5.自定义类型转换器

    • 虽然SpringMVC 默认已经提供了一些常用的类型转换器,例如客户端提交的字符串转换成int型进行参数设置。

    • 但是不是所有的数据类型都提供了转换器,没有提供的就需要自定义转换器,例如:日期类型的数据就需要自 定义转换器。

    自定义类型转换器的开发步骤:

    ① 定义转换器类实现Converter接口

    public class DateConverter implements Converter {    @Override    public Date convert(String source) {        SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");        Date date = null;        try {            date = format.parse(source);        } catch (ParseException e) {            e.printStackTrace();        }        return date;    }}

    ② 在spring-mvc.xml配置文件中声明转换器

                                                                    

    ③ 在中引用转换器

         

    6.获得请求头

    @RequestHeader

    使用@RequestHeader可以获得请求头信息,相当于web阶段学习的request.getHeader(name) @RequestHeader注解的属性如下:

    value请求头的名称
    required是否必须携带此请求头
    @RequestMapping("/quick17")@ResponseBodypublic void quickMethod17(@RequestHeader(value = "User-Agent",required = false) String headerValue){    System.out.println(headerValue);}

    @CookieValue

    使用@CookieValue可以获得指定Cookie的值 @CookieValue注解的属性如下:

    value指定cookie的名称
    required是否必须携带此cookie
    @RequestMapping("/quick18")@ResponseBodypublic void quickMethod18(@CookieValue(value = "JSESSIONID",required = false) String jsessionid){    System.out.println(jsessionid);}

    7.文件上传

    文件上传客户端三要素:

    • 表单项type="file"

    • 表单的提交方式是post

    • 表单的enctype属性是多部分表单形式,及enctype="multipart/form-data"

    名称:
    文件:

    文件上传步骤

    ① 在pom.xml导入fileupload和io坐标

              commons-fileupload      commons-fileupload      1.4              commons-io      commons-io      2.6    

    ② 配置文件上传解析器

                        

    ③ 编写文件上传代码

    @RequestMapping("/quick8")    @ResponseBody    public void save8(String name, MultipartFile uploadfile) {        System.out.println("save8 running...");        System.out.println(name);        String filename = uploadfile.getOriginalFilename();        try {            uploadfile.transferTo(new File("D:\\upload\\"+filename));        } catch (IOException e) {            e.printStackTrace();        }    }

    读到这里,这篇"Java中SpringMVC怎么获取请求数据"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。

    参数 类型 数据 文件 转换器 名称 资源 方法 注解 业务 风格 一致 客户 客户端 属性 方式 配置 文章 步骤 表单 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海有乐网络技术有限公司 广州蜀山网络技术公司的游戏 三维多模态医学图像配准软件开发 现在智能软件开发薪资待遇 服务器只允许固定地址远程 巴合曼软件开发 河北多功能软件开发费用 怎么免费获得国泰安数据库 360把b站数据库盗了 网络安全专业对显卡的要求 高速无线网络技术论文 批量读取文件夹的数据库 网络安全与智能制造拥抱生活 对网络安全理解正确的是() 广汽网络安全 云南学校英语软件开发定制公司 数据库linux安装 护苗青少年网络安全课视频 挖财网络技术有限公司工资 微博网络安全技术的大牛 pubg中服务器维护什么意思 网络安全法对电信的要求 怎么新建一个数据库表 浪潮服务器无法识别光盘 中国知网是书目型数据库么 外包软件开发工作要求 郑州软件开发应用范围 网络安全法 二审 通过 e-r用于描述数据库中 数据库架构师培训
    0