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月前
|
JavaScript Java Maven
【SpringBoot(二)】带你认识Yaml配置文件类型、SpringMVC的资源访问路径 和 静态资源配置的原理!
SpringBoot专栏第二章,从本章开始正式进入SpringBoot的WEB阶段开发,本章先带你认识yaml配置文件和资源的路径配置原理,以方便在后面的文章中打下基础
225 3
|
9月前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
575 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
9月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
461 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
10月前
|
前端开发 JavaScript Java
前端解决axios请求的跨域问题【2步完成】
本文介绍如何通过前端配置解决跨域问题,主要针对Vue项目中的`vite.config.js`文件进行修改。作者在联调过程中遇到跨域报错
511 1
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
154 1
Spring MVC——项目创建和建立请求连接
|
12月前
|
前端开发 Java 开发者
Spring MVC中的请求映射:@RequestMapping注解深度解析
在Spring MVC框架中,`@RequestMapping`注解是实现请求映射的关键,它将HTTP请求映射到相应的处理器方法上。本文将深入探讨`@RequestMapping`注解的工作原理、使用方法以及最佳实践,为开发者提供一份详尽的技术干货。
1145 2
|
12月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
318 4
|
前端开发 JavaScript
回顾前端页面发送ajax请求方式
回顾前端页面发送ajax请求方式
114 18
|
前端开发 JavaScript API
前端Get请求能在body上传参吗
【10月更文挑战第11天】 在浏览器环境中,GET请求的body参数会被忽略,这是因为浏览器中的XHR和fetch实现限制了这一行为。而在Node.js服务端环境中,GET请求可以在body中传递参数,因为服务端请求库没有这样的限制。实际上,GET请求不带body是HTTP标准的一部分,但在某些场景下,为了遵循RESTful规范,可以考虑通过服务端转发或BFF模式来实现复杂的参数传递。
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
983 14

热门文章

最新文章