SpringMVC获取请求参数的几个方法及注意点

您所在的位置:网站首页 springmvc获取参数的几种方式 SpringMVC获取请求参数的几个方法及注意点

SpringMVC获取请求参数的几个方法及注意点

2023-11-18 05:13| 来源: 网络整理| 查看: 265

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

通过测试发现get方法不会乱码,是因为我们设置了tomcat的Servlet.xml配置文件中的字符集,而使用post方法时,中文显示经常会出现乱码的情况,我们该如何解决?

回顾JavaWeb中所学习的,我们是在创建baseServlet类时就设置了字符集编码,也就是说要在获取请求参数之前设置字符集编码,在之前的学习过程中,为了使用户第一次发起请求速度更快一些,我们将dipatchrServlet的初始化时间设置为(Servlet)服务器启动时,而服务器的三大组件,监听器、过滤器、Servlet程序在服务器启动时的顺序为:监听器–>过滤器–>Servlet程序,所以我们可以将字符集编码设置在过滤器中

那么我们就先来配置web.xml文件,加上过滤器

CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter CharacterEncodingFilter /*

光加上过滤器并无作用,通常我们都时设置字符集=utf-8,这里还没有设置,那我们就要看一下CharacterEncodingFilter的源码了

有三个属性,encoding此属性是设置字符集的,另外两个属性(request接收,response响应)初始化的时候都为false

public class CharacterEncodingFilter extends OncePerRequestFilter { @Nullable private String encoding; private boolean forceRequestEncoding; private boolean forceResponseEncoding; public CharacterEncodingFilter() { this.forceRequestEncoding = false; this.forceResponseEncoding = false; } //主要是看这一段方法 protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { String encoding = this.getEncoding(); if (encoding != null) { //如果isForceRequestEncoding或者request.getCharacterEncoding() == null其中一个为true我们才可以设置字符集,encoding属性在没有设置的情况下肯定为空,所以这个条件是成立的 if (this.isForceRequestEncoding() || request.getCharacterEncoding() == null) { request.setCharacterEncoding(encoding); } //这里就只是判断isForceResponseEncoding是否为true,所以我们要将forceResponseEncoding属性设置为true if (this.isForceResponseEncoding()) { response.setCharacterEncoding(encoding); } } filterChain.doFilter(request, response); } }

看了源码之后,我们知道需要在filter中配置他的两个属性

CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 forceResponseEncoding true CharacterEncodingFilter /*


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3