SpringMVC获取请求参数实现方法介绍

目录
  • 一、通过ServletAPI获取
  • 二、通过控制器方法的形参获取请求参数
  • 三、@RequestParam
  • 四、@RequestHeader
  • 五、@CookieValue
  • 六、通过POJO获取请求参数
  • 七、解决获取请求参数的乱码问题

我们已经学习过@RequestMapping了,学的属性可能比较多,但是我们常用的也就value和method。所以说我们已经可以把我们的浏览器发送的请求和控制器方法来创建映射关系了。

一、通过ServletAPI获取

将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象

    <form th:action="@{/param/servletAPI}" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" value="登录"><br>
    </form>
@Controller
public class TestParamController {
    @RequestMapping("/param/servletAPI")
    public String getParamByServletAPI(HttpServletRequest request) {
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        System.out.println("username:" + username + ",password:" + password);
        return "success";
    }
}

二、通过控制器方法的形参获取请求参数

在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在 DispatcherServlet中就会将请求参数赋值给相应的形参

<form th:action="@{/param}" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" value="登录"><br>
    </form>
    @RequestMapping("/param")
    public String getParam(String username,String password) {
        System.out.println("username:" + username + ",password:" + password);
        return "success";
    }

注:

若请求所传输的请求参数中有多个同名的请求参数,此时可以在控制器方法的形参中设置字符串 数组或者字符串类型的形参接收此请求参数

若使用字符串数组类型的形参,此参数的数组中包含了每一个数据

若使用字符串类型的形参,此参数的值为每个数据中间使用逗号拼接的结果

三、@RequestParam

@RequestParam是将请求参数和控制器方法的形参创建映射关系

@RequestParam注解一共有三个属性:

value:指定为形参赋值的请求参数的参数名

required:设置是否必须传输此请求参数,默认值为true

若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置 defaultValue属性,则页面报错400:Required String parameter 'xxx' is not present;若设置为 false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null

defaultValue:不管required属性值为true或false,当value所指定的请求参数没有传输或传输的值为""时,则使用默认值为形参赋值

<form th:action="@{/param}" method="post">
        用户名:<input type="text" name="name"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" value="登录"><br>
    </form>
    @RequestMapping("/param")
    public String getParam(
            @RequestParam(value = "username",required = false,defaultValue = "hello") String username,
            String password
    ) {
        System.out.println("username:" + username + ",password:" + password);
        return "success";
    }
}

四、@RequestHeader

@RequestHeader是将请求头信息和控制器方法的形参创建映射关系

@RequestHeader注解一共有三个属性:value、required、defaultValue,用法同@RequestParam

五、@CookieValue

@CookieValue是将cookie数据和控制器方法的形参创建映射关系

@CookieValue注解一共有三个属性:value、required、defaultValue,用法同@RequestParam

六、通过POJO获取请求参数

可以在控制器方法的形参位置设置一个实体类类型的形参,此时若浏览器传输的请求参数的参数名和实 体类中的属性名一致,那么请求参数就会为此属性赋值

    <form th:action="@{/param/pojo}" method="post">
        用户名:<input type="text" name="username"><br>
        密码:<input type="password" name="password"><br>
        <input type="submit" value="登录"><br>
    </form>
    @RequestMapping("/param/pojo")
    public String getParamByPojo(User user) {
        System.out.println(user);
        return "success";
    }

七、解决获取请求参数的乱码问题

解决获取请求参数的乱码问题,可以使用SpringMVC提供的编码过滤器CharacterEncodingFilter,但是 必须在web.xml中进行注册

 <!--配置Spring的编码过滤器-->
    <filter>
        <filter-name>CharacterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

注: SpringMVC中处理编码的过滤器一定要配置到其他过滤器之前,否则无效

到此这篇关于SpringMVC获取请求参数实现方法介绍的文章就介绍到这了,更多相关SpringMVC获取请求参数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringMVC获取请求参数笔记整理

    目录 前言 一.使用ServletAPI获取参数 二.通过控制器方法的形参获取请求参数 三.@RequestParam 四.@RequestHeader 五.@CookieValue 六.通过实体类的形参获取参数 前言 本篇文章目的是为了学习.记录和分享博主在学习 Spring MVC过程中的笔记.同时也希望本篇文章能够帮助屏幕前的你! 一.使用ServletAPI获取参数 通过 HttpServletRequest 当作形参,此时 HttpServletRequest 类型的参数表示封装了当前

  • SpringMVC实现获取请求参数方法详解

    目录 1.通过ServletAPI获取 2.通过控制器方法的形参获取请求参数 3.@RequestParam 4.@RequestHeader 5.@CookieValue 6.通过POJO获取请求参数 7.解决获取请求参数的乱码问题 1.通过ServletAPI获取 将HttpServletRequest作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象 <a th:href="@{/testServletAPI(username=

  • springMVC获取请求参数的几种方式汇总

    目录 一.前言 二.初步认识 三.servletAPI 四.方法参数 五.@RequestParam 六.实体类 七.总结 一.前言 大家好,我是卷心菜,大二学生一枚. 大家在学习springMVC框架的时候,一定学习过使用这个框架来获取请求的参数,那么各位小伙伴们,获取请求参数有几种方法呢?使用哪种方式最好呢?在什么时候使用这些方法呢?那么这一篇文章,我就带大家来看一看这些问题的答案. 废话不多说,满满的干货,赶快来看看吧~ 二.初步认识 那么什么是请求参数呢? 可以直接在请求地址中给于请求参

  • SpringMVC中请求参数的获取方式

    目录 SpringMVC请求参数获取方式 一.通过 ServletAPI 获取 二.通过控制器方法的形参获取 处理多个同名的请求参数 三.通过 @RequestParam 注解 四.@RequestHeader 注解 五.@CookieValue 注解 六.通过 POJO 获取请求参数 七.解决获取请求参数的乱码问题 SpringMVC请求参数获取方式 一.通过 ServletAPI 获取 可以使用原生 Servlet 获取请求参数,将 HttpServletRequest 作为控制器方法的形参

  • 学习SpringMVC——如何获取请求参数详解

    @RequestParam,你一定见过:@PathVariable,你肯定也知道:@QueryParam,你怎么会不晓得?!还有你熟悉的他(@CookieValue)!她(@ModelAndView)!它(@ModelAttribute)!没错,仅注解这块,spring mvc就为你打开了五彩斑斓的世界.来来来,不要兴(mi)奋(hu),坐下来,我们好好聊聊这么些个注解兄弟们~~~(wait, 都没有听过? 好,来,你坐前排,就你!)  一.spring mvc如何匹配请求路径--"请求路径哪家

  • SpringMVC获取请求参数实现方法介绍

    目录 一.通过ServletAPI获取 二.通过控制器方法的形参获取请求参数 三.@RequestParam 四.@RequestHeader 五.@CookieValue 六.通过POJO获取请求参数 七.解决获取请求参数的乱码问题 我们已经学习过@RequestMapping了,学的属性可能比较多,但是我们常用的也就value和method.所以说我们已经可以把我们的浏览器发送的请求和控制器方法来创建映射关系了. 一.通过ServletAPI获取 将HttpServletRequest作为控

  • SpringMVC ajax请求的处理方法介绍

    目录 准备工作 一.@RequestBody 二.@RequestBody获取json格式的请求参数 三.@ResponseBody 四.@ResponseBody响应浏览器json数据 五.@RestController注解 准备工作 ①创建maven工程 ②添加相关依赖,和添加web模块 ③配置web.xml,如配置处理1.编码过滤器,2.请求方式的过滤器,3.前端控制器 ④创建springmvc.xml,并进行配置 ⑤创建控制层controller 一.@RequestBody index

  • 基于express中路由规则及获取请求参数的方法

    express中常见的路由规则 主要使用的路由规则是get和post两种,即 var express = require('express'); var app = express(); app.get(); // get和post两种请求方式 app.post(); app.get()和app.post()的第一个参数为请求路径,第二个参数为处理请求的回调函数:回调函数有两个参数,分别为req和res,代表请求信息和响应信息. 获取请求路径和请求体中的各种参数 路径请求及对应获取请求路径的形式

  • SpringMVC中RequestContextHolder获取请求信息的方法

    RequestContextHolder的作用是: 在Service层获取获取request和response信息 代码示例: ServletRequestAttributes attrs = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes(); HttpServletRequest request = attrs.getRequest(); 源码分析: 定义了两个ThreadLocal变量用来存储Reque

  • AngularJS出现$http异步后台无法获取请求参数问题的解决方法

    本文实例讲述了AngularJS出现$http异步后台无法获取请求参数问题的解决方法.分享给大家供大家参考,具体如下: angular在通过异步提交数据时使用了与jQuery不一样的请求头部和数据序列化方式,导致部分后台程序无法正常解析数据. 原理分析(网上的分析): 对于AJAX应用(使用XMLHttpRequests)来说,向服务器发起请求的传统方式是:获取一个XMLHttpRequest对象的引用.发起请求.读取响应.检查状态码,最后处理服务端的响应.整个过程示例如下: var xmlht

随机推荐