SpringMVC的请求乱码解决和接收前端常用类型(五)上

简介: SpringMVC的请求乱码解决和接收前端常用类型(五)

一. 数据绑定


从前端特别是表单传递过来的数据,需要在后端进行接收。 接收时可以有不同的形式,也可以接收各种各样的类型。


二. 数据乱码


二.一 POST提交


1 . 前端html 代码


<!-- 采用的是post提交的方式 -->
  <form action="/SpringMVC02/user/register.action" method="post">
    用户名: <input type="text" name="name"/> <br/>
    年龄:<input type="text" name="age"><br/>
    性别:<input type="text" name="sex"><br/>
    描述:<input type="text" name="description"><br/>
    <input type="submit" value="提交">
  </form>


2 . 页面输入值


20190802170753757.png


3 .后端接收代码 用 @RequestParam 注解接收。


4 . 控制台打印输出


20190809102335539.png


发现,接收过来的name 是乱码的形式。 而前台传入中文是一种很常见的方式。


二.二 POST提交乱码解决方式


SpringMVC 针对 中文乱码提供了一个过滤器, CharacterEncodingFilter, 只需要将这个过滤器配置在web.xml 中即可。放置在servlet 之前。


public class CharacterEncodingFilter
   extends OncePerRequestFilter
{
   private String encoding;
   private boolean forceEncoding = false;
}


web.xml 中配置:


<!--配置中文乱码过滤器-->
  <filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
      <!-- 类里面有一个属性 encoding,来动态注入编码 -->
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>


这个时候,重启服务器,再传入时,后端接收。


20190809102345942.png


有时候,为了强制转换,通常还会再添加一个参数 forceEncoding 来决定是否强制使用 encoding 属性设置的编码格式。


 <!--配置中文乱码过滤器-->
  <filter>
    <filter-name>EncodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter
    </filter-class>
    <init-param>
      <!-- 类里面有一个属性 encoding,来动态注入编码 -->
      <param-name>encoding</param-name>
      <param-value>utf-8</param-value>
    </init-param>
    <init-param>
      <!-- 是否强制使用encoding的编码方式。 默认为false -->
      <param-name>forceEncoding</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>EncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>


当然,也可以像Servlet 时代那样,用请求 request 来处理乱码。 但不建议这么写。


  request.setCharacterEncoding("UTF-8");
//或者是
String str=newString((request.getParameter("name")).getBytes("iso-8859-1"),"utf-8")


二.三 GET 方式提交乱码的问题


即使上面配置了CharacterEncodingFilter 过滤器,当get 提交时也会出现乱码。 因为 get提交时,是tomcat 在决定的。


1 . html前端页面设置成 get提交


<form action="/SpringMVC02/user/register.action" method="get"> 


2 . 前端输入


20190809102401228.png


3 . 后端控制台接收打印


20190809102408719.png


二.四 Get方式提交乱码解决


1 .找到Tomcat的安装路径 conf/server.xml 文件里面的


20190809102416827.png


添加: URIEncoding=“UTF-8” .


 <Connector connectionTimeout="20000" port="8090" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>


2 . 重启tomcat,进行打印输出。


20190809102424209.png

相关文章
|
1月前
|
前端开发
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
解决前端ajax跨域请求不携带cookie信息JSESSIONID的问题
|
1月前
|
JSON 前端开发 Java
前端请求SpringBoot接口出现Required request body is missing
前端请求SpringBoot接口出现Required request body is missing
38 2
|
3月前
|
JavaScript 前端开发 安全
Apollo与TypeScript:强大类型检查在前端开发中的应用
Apollo与TypeScript:强大类型检查在前端开发中的应用
|
4月前
|
前端开发 数据库 Python
使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
【1月更文挑战第13天】使用 Python 的 Web 框架(如 Django 或 Flask)来建立后端接口,用于处理用户的请求,从数据库中查找答案并返回给前端界面
97 7
|
11天前
|
JSON JavaScript Java
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
从前端Vue到后端Spring Boot:接收JSON数据的正确姿势
22 0
|
14天前
|
前端开发 JavaScript 索引
【Web 前端】JS的几种具体异常类型(报错)
【4月更文挑战第22天】【Web 前端】JS的几种具体异常类型(报错)
|
14天前
|
前端开发 UED
【Web 前端】css盒子模型有几种类型?它们区别是什么?
【4月更文挑战第22天】【Web 前端】css盒子模型有几种类型?它们区别是什么?
|
18天前
|
前端开发 网络协议 JavaScript
如何在前端实现WebSocket发送和接收TCP消息(多线程模式)
请确保在你的服务器端实现WebSocket的处理,以便它可以接受和响应前端发送的消息。同时,考虑处理错误情况和关闭连接的情况以提高可靠性。
34 0
|
24天前
|
前端开发 JavaScript
vue 前端参值后端接收的几种方式
vue 前端参值后端接收的几种方式
18 0
|
25天前
|
前端开发 安全 Java
springboot集成springdoc-openapi(模拟前端请求)
springboot集成springdoc-openapi(模拟前端请求)