首页 > 其他分享 >SpringMVC04 - 获取请求参数

SpringMVC04 - 获取请求参数

时间:2023-02-15 21:58:48浏览次数:31  
标签:实体类 请求 形参 value String 参数 SpringMVC04

获取请求携带的三种数据:参数、请求头信息、Cookie

@RequestMapping("/param")
public String getParam(
    @RequestParam(value = "userName", required = true, defaultValue = "hello") String username,
    String password,
    @RequestHeader("referer") String referer,
    @CookieValue("JSESSIONID") String jsessionId
){
    System.out.println("jsessionId:"+jsessionId);
    System.out.println("referer:"+referer);
    System.out.println("username:"+username+",password:"+password);
    return "success";
}

获取参数

获取参数有两种方法,一种是原生ServletAPI,通过请求传递的 HttpServletRequest request,但既然使用了SpringMVC框架,必然有更简便的方法可以使用 -- 注解声明参数

1. 通过控制器方法的形参获取
  • 只需要在控制器方法的形参位置,设置一个形参,形参的名字和请求参数的名字一致即可
2. @RequestParam:将请求参数和控制器方法的形参绑定
  • @RequestParam 注解的三个属性:value、required、defaultValue
  • value : 设置和形参绑定的请求参数的名字
  • **required : **设置是否必须传输value所对应的请求参数,默认值为true,表示value所对应的请求参数必须传输,否则页面报错:400 - Required String parameter 'xxx' is not present
    • 若设置为false,则表示value所对应的请求参数不是必须传输,若为传输,则形参值为null
  • **defaultValue : **设置当没有传输value所对应的请求参数时,为形参设置的默认值,此时和required属性值无关

  • @RequestParam(value = "userName", required = true, defaultValue = "hello") String username,
    String password
    
3. 实体类获取请求携带的参数

请求携带的参数名必须和实体类的属性一致,则控制器会自动将同名的参数填入实体类的属性,方法中直接使用实体类对象

  • 需要在控制器方法的形参位置设置实体类类型的形参,要保证实体类中的属性的属性名和请求参数的名字一致
  • 可以通过实体类类型的形参获取请求参数
@RequestMapping("/param/pojo")
public String getParamByPojo(User user){
    System.out.println(user);
    return "success";
}

获取请求头信息

@RequestHeader:将请求头信息和控制器方法的形参绑定

同样有三个属性,value required defaultValue

  • @RequestHeader("referer") String referer
    

获取Cookie

@CookieValue:将cookie数据和控制器方法的形参绑定

同样有三个属性,value required defaultValue

  • @CookieValue("JSESSIONID") String jsessionId
    

请求参数的乱码问题

表单提交post请求,中文乱码,username=??????

在web.xml中配置过滤所有请求的过滤器,为所有请求设置UTF-8编码

<!--配置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中处理编码的过滤器一定要配置到其他过滤器之前,否则无效

因为设置编码必须在所有请求之前,如果已经有请求发生后再设置编码,则设置无效

标签:实体类,请求,形参,value,String,参数,SpringMVC04
From: https://www.cnblogs.com/Ashen-/p/17124843.html

相关文章

  • 11.4外围设备的中断请求
       IRQ是用来暂停当前正在运行的程序,并跳转到其他程序运行的必要机制。该机制称为中断处理。中断处理在硬件控制中担当着重要角色。因为如果没有中断处理,就有可能出......
  • 函数返回值做参数,需要注意什么
    1defcond():2"***YOURCODEHERE***"3returnFalse45deftrue_func():6"***YOURCODEHERE***"7print(42)8910def......
  • 11.4 外围设备的中断请求
    IRQ是用来暂停当前正在运行的程序,并跳转到其他程序运行的必要机制。该机制称为中断处理。如果没有中断处理,就有可能出现处理无法顺畅进行的情况。从中断处理开始到请求中断......
  • 网页跨域ajax请求问题
    今天用php的项目网页请求另一个服务器的rails项目的api。首先解决php项目的跨域问题。服务器是ubuntu用的apache2。修改文件 /etc/apache2/apache2.conf,添加一......
  • 一次完整的HTTP请求过程
    HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤:1、建立TCP连接在HTTP工作开始之前,Web浏览器首先要通过网络与Web服务器建立......
  • 动态代理 动态修改注解上的参数
    动态代理AOP切面代码被代理对象Objecttarget=joinPoint.getTarget();当前对象ObjectaThis=joinPoint.getThis();这里拿到的方法和反射的方法获取的不是一样的......
  • Web 页面之间传递参数
    Web页面之间传递参数的方法有很多种,下面列出一些常见的方法以及它们的代码示例。一、前端直接传递参数1、URL参数传递(querystring):通过URL的查询字符串(即问号后面的......
  • 异步请求池的实现
    今天分享一个异步请求池的例子。首先我们先看一个正常的阻塞的DNS解析的例子。#include<stdio.h>#include<stdlib.h>#include<string.h>#include<unistd.h>#inc......
  • JAVA线上参数设置及常见问题
    常用配置参数jar包启动配置命令java-Xmx8g-Xms8g-XX:+UseG1GC-jar/home/pgcp/pgcp-0.0.1-SNAPSHOT.jartomcat启动配置参数在/bin/catalina.sh中/cygwin=false前......
  • nginx限制ip请求次数 以及并发次数
      如何设置能限制某个IP某一时间段的访问次数是一个让人头疼的问题,特别面对恶意的ddos攻击的时候。其中CC攻击(ChallengeCollapsar)是DDOS(分布式拒绝服务)的一种,也是一种常......