【Maven+SSM】Springmvc的统一处理之中文乱码问题

一、“诡异”的中文乱码问题

之所以一开始命名为诡异,因为是对不同的请求,不同场景,不同的处理。

场景一、GET请求无乱码,POST请求有中文乱码。

1、GET请求

某个表单提交使用GET请求,不出现中文乱码问题。例如,下面的登陆方法请求,即使不做任何处理,也始终不会出现中文乱码。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


	
姓名:
密码:

Controller如下:successlogin仅仅展示登陆成功四个字。

@RequestMapping(value="j.do")
	public String viewAll(UserInfo userInfo) {
		System.out.println(userInfo.getUsername());
		System.out.println(userInfo.getPassword());
		return "successlogin";
	}
登陆如下:

【Maven+SSM】Springmvc的统一处理之中文乱码问题_第1张图片

点击提交后:清楚的看出是get请求。

【Maven+SSM】Springmvc的统一处理之中文乱码问题_第2张图片

发现打印日志中文无障碍!如下

小明

123456


2、POST请求:

将上面的请求改为post请求。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




Insert title here


	
姓名:
密码:
其他不变,重新请求测试:

【Maven+SSM】Springmvc的统一处理之中文乱码问题_第3张图片

测试结果如下:日志打印中文乱码。

【Maven+SSM】Springmvc的统一处理之中文乱码问题_第4张图片

针对上述产生乱码的问题,即Post请求中文乱码问题的解决方案:

在web.xml中添加过滤器如下:




  Archetype Created Web Application
  
  
  	CharacterEncodingFilter
  	org.springframework.web.filter.CharacterEncodingFilter
  	
  	
  		encoding
  		UTF-8
  	
  	
  	
  		forceEncoding
  		true
  	
  
  
  
  	CharacterEncodingFilter
  	/*
  
  
  
	
		springmvc
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath:conf/springmvc-servlet.xml
		
	
	
		springmvc
		/
	










你可能感兴趣的:(java)