Spring MVC处理中文乱码
所谓乱码,是指由于本地计算机在用文本编辑器打开源文件时,使用了不相应字符集而造成部分或所有字符无法被阅读的一系列字符。在代码编写的过程中,经常会出现中文乱码的情况,造成这种情况的原因是多种多样的。
页面乱码一般有四种类型:文本乱码、文档乱码、文件乱码、网页乱码,针对不同的乱码,有不同的处理方式。
对于页面乱码,一般在页面的头部添加charset为utf-8,代码如下:
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
POST 请求处理乱码问题
在项目的WEB-INF文件夹的web.xml文件中配置过滤器,实现POST请求的编码格式设置,配置代码如下:
<!-- 过滤器,中文乱码 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<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>
GET 请求处理乱码问题
对于GET请求乱码,需要在安装Tomcat文件中找到conf,双击打开conf文件,找到server.xml,用编辑器将文件打开,避免直接双击打开文件,直接打开可能会损坏文件。
在server.xml文件中找代码,在本行代码中设置URIEncoding="utf-8",代码如下:
<Connector URIEncoding="utf-8" connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443"/>
数据库处理乱码问题
在查看数据库数据时,有时也会看到乱码。
实际上,无论何种数据库,只要出现乱码问题,大多是由于数据库字符集设定导致的。MySQL支持多种字符集。在同一个数据库的不同表、同一个表的不同字段中,都可以指定使用不同的字符集,MySQL可以设定的字符集有服务器的字符集、数据库的字符集、表的字符集、字段的字符集等,下面介绍数据库的字符集的设定及乱码问题的解决。
(1)安装数据库时,选择编码格式为utf8。
(2)进行数据库连接时,可在配置文件中写入以下代码处理乱码问题:
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimeZone=UTC
(3)创建表时,进行字符集的设置,代码如下:
create table xx(..)default charset=utf8
Spring MVC统一异常处理方式
在J2EE项目的开发中,不管是底层数据库的操作过程、业务层的处理过程,还是控制层的处理过程,会不可避免地遇到各种可预知的、不可预知的异常需要进行处理。如果每个过程都单独处理异常,系统的代码耦合度高,代码编写的工作量大且不好统一,维护的工作量也很大。下面给大家介绍一下Spring MVC中处理异常的方式。
使用配置文件
Spring MVC中可以使用ExceptionResolver异常处理器进行异常处理。例如,在spring-mvc.xml中进行Bean配置,具体代码如下:
<!-- 配置文件的方式,处理异常 -->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!-- key表示异常类型,error表示页面名称 -->
<prop key="java.lang.RuntimeException">error</prop>
</props>
</property>
</bean>
使用注解
Spring MVC中还可以使用@ExceptionHandler注解进行异常信息的处理,在springLogin项目的src/main/java文件夹的cn.tedu.controller包中,新建Java类HandlerException.java,具体代码如下:
package com.shrimpking.controller;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import javax.servlet.http.HttpServletRequest;
/**
* @author user1
*/
@ControllerAdvice
public class HandlerException
{
/**
* 表示处理异常的方法
* @param request
* @param e
* @return
*/
@ExceptionHandler
public String handlerException(HttpServletRequest request,Exception e)
{
request.setAttribute("error",e.getMessage());
return "error";
}
}