Maven+SpringMVC+Mybatis+ajax:后台传值到前台中文出现问号乱码问题

Jquery代码:
$.ajax({
		type: 'POST',
		url: 'user/login',
		data: JSON.stringify(datas),
		contentType: 'application/json',
		success: function(data){
			if('' != data && null != data)
				alert(data);
			else
				alert('请检查你的账号和密码是否正确...');
		}
	});

web.xml代码:

<!-- 字符过滤器 -->  
  <filter>  
    <filter-name>encodingFilter</filter-name>  
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
    <init-param><!-- 针对request -->
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <init-param><!-- 针对response --> 
        <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>  


spring-servlet.xml代码:

<!-- 配置自动扫描:解决中文乱码问题 -->
	<mvc:annotation-driven>
     	<mvc:message-converters>
           <bean class="org.springframework.http.converter.StringHttpMessageConverter">
               <property name="supportedMediaTypes">
                   <list>
                       <value>application/json;charset=UTF-8</value>
                       <value>text/html;charset=UTF-8</value>
                   </list>
               </property>
           </bean>
       	</mvc:message-converters>
     </mvc:annotation-driven>
Controller代码:

@RequestMapping(value = "login", method = RequestMethod.POST)
	@ResponseBody
	public String login(@RequestBody String data,HttpServletResponse response){
		UserInfo user = gson.fromJson(data, UserInfo.class);
		map.put("loginname", user.getLoginname());
		map.put("pwd", user.getPwd());
		user = service.login(map);
		response.setCharacterEncoding("UTF-8");
                response.setContentType("text/html;charset=UTF-8");
		if(null != user)
			return gson.toJson(user);
		return null;
		
	}
OK,彻底解决

猜你喜欢

转载自blog.csdn.net/love_moon821/article/details/78822928