Spring MVC接收前端参数,并解决中文乱码

本文介绍了如何在SpringMVC中接收前端的单个和多个基本数据类型参数,以及POJO参数。重点讲解了POST和GET请求的乱码问题及其解决方案,包括设置CharacterEncodingFilter和Tomcat配置的UTF-8编码。
摘要由CSDN通过智能技术生成

目录

一、接收前端的基本数据类型的参数

二、接收前端的pojo参数 

三、请求参数乱码问题

3.1POST请求方式解决乱码问题

 3.2 get请求方式解决乱码问题


Springmvc中,接收页面提交的数据是通过方法形参来接收:

  • 处理器适配器调用springmvc使用反射将前端提交的参数传递给controller方法的形参

  • springmvc接收的参数都是String类型,所以spirngmvc提供了很多converter(转换器)在特殊情况下需要自定义converter,如对日期数据

一、接收前端的基本数据类型的参数

(1)接收单个数据

   ①index.jsp

 <a href="/account/findAccount7?name=tom">接收单个参数</a><br>

 ②controller

//    接收单个参数
@RequestMapping("/findAccount7")
public String findAccount7(String name,Model model){
    model.addAttribute("msg", name);
    return "success";
}

③结果

 

(2)接收多个数据 

①index.jsp

 <a href="/account/findAccount8/name=tom&money=100">接收多个参数</a><br>

③结果

二、接收前端的pojo参数 

 (1)pojo

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Account {
    private Integer id;
    private String name;
    private Float money;
    private Address address;
}

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Address {
    private String provinceName;
    private String cityName;
}

(2)在index.jsp里面添加表单

<form action="account/saveAccount" method="post">
    账户名称:<input type="text" name="name"><br/>
    账户金额:<input type="text" name="money"><br/>
    账户省份:<input type="text" name="address.provinceName"><br/>
    账户城市:<input type="text" name="address.cityName"><br/>
    <input type="submit" value="保存">
</form>

(3)controller

//    接收对象
    @RequestMapping("findAccount9")
    public String findAccount9(Account account,Model model){
        model.addAttribute("msg",account);
        return "success";

    }

(4)结果

乱码先不解决

 

三、请求参数乱码问题

可以看出当输入中文时,会出现乱码问题

3.1POST请求方式解决乱码问题

(1)在web.xml里面设置编码过滤器

<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>
</filter>
<!-- 过滤所有请求 -->
<filter-mapping>
  <filter-name>CharacterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

(2)结果

 

 3.2 get请求方式解决乱码问题

(1)index.jsp

 <a href="/account/findAccount7?name=杨逍">接收单个参数</a><br>

 (2)controller

    //    接收单个参数
    @RequestMapping("/findAccount7")
    public String findAccount7(String name, Model model) {
        model.addAttribute("msg", name);
        return "success";
    }

(3)结果

(4)解决

tomcat对GET和POST请求处理方式是不同的,GET请求的编码问题,要改tomcat的 配置信息,如下:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <port>8080</port>
        <path>/</path>
        <!--按UTF-8进行编码-->
        <uriEncoding>UTF-8</uriEncoding>
    </configuration>
</plugin>

 (5)最终结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今天的接口写完了吗?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值