Java解决乱码方案
来源:互联网 发布:华联期货软件 编辑:程序博客网 时间:2024/05/22 16:06
在做项目过程中,如果web页存储的是中文,如果不对编码进行处理,存入数据库就会是乱码。因此可以利用Filter对所有从前端过来的页面编辑进行处理。
1.在代码中添加Filter类。
public class GenericEncodingFilter implements Filter {public void destroy() {}public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// 转型为与协议相关对象HttpServletRequest httpServletRequest = (HttpServletRequest) request;// 对request包装增强HttpServletRequest myrequest = new MyRequest(httpServletRequest);chain.doFilter(myrequest, response);}public void init(FilterConfig filterConfig) throws ServletException {}}// 自定义request对象class MyRequest extends HttpServletRequestWrapper {private HttpServletRequest request;private boolean hasEncode;public MyRequest(HttpServletRequest request) {super(request);// super必须写this.request = request;}// 对需要增强方法 进行覆盖@Overridepublic Map getParameterMap() {// 先获得请求方式String method = request.getMethod();if (method.equalsIgnoreCase("post")) {// post请求try {// 处理post乱码request.setCharacterEncoding("utf-8");return request.getParameterMap();} catch (UnsupportedEncodingException e) {e.printStackTrace();}} else if (method.equalsIgnoreCase("get")) {// get请求Map<String, String[]> parameterMap = request.getParameterMap();if (!hasEncode) { // 确保get手动编码逻辑只运行一次for (String parameterName : parameterMap.keySet()) {String[] values = parameterMap.get(parameterName);if (values != null) {for (int i = 0; i < values.length; i++) {try {// 处理get乱码values[i] = new String(values[i].getBytes("ISO-8859-1"), "utf-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}}}}hasEncode = true;}return parameterMap;}return super.getParameterMap();}@Overridepublic String getParameter(String name) {Map<String, String[]> parameterMap = getParameterMap();String[] values = parameterMap.get(name);if (values == null) {return null;}return values[0]; // 取回参数的第一个值}@Overridepublic String[] getParameterValues(String name) {Map<String, String[]> parameterMap = getParameterMap();String[] values = parameterMap.get(name);return values;}}
2.在web.xml中对Filter进行配置
<filter><filter-name>encodeFilter</filter-name><filter-class>com.xgq.filter.GenericEncodingFilter</filter-class></filter><filter-mapping><filter-name>encodeFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
3.注意,xml中不要配错,否则会报服务器错误
阅读全文
0 0
- Java解决乱码方案
- 解决java乱码问题方案
- 网站乱码解决整体方案
- 网站乱码解决整体方案
- 解决Putty乱码完美方案
- Java乱码问题解决方案
- java乱码问题解决方案
- Java乱码问题解决方案
- Java 乱码处理方案
- java jsp乱码问题解决方案
- java乱码原因与方案
- java项目乱码问题解决方案
- 页面乱码解决4种方案
- 页面乱码解决4种方案
- 解决ajax乱码方案 持续更新中....
- JSP页面乱码解决4种方案
- PHP下载文件名中解决乱码方案
- 解决em.isqlplus乱码两种方案
- Codeforces Testing Round #14 (Unrated) B
- spark 2.2.0学习笔记4之SparkSQLDemo
- kmp算法
- Hive性能优化
- 阿里云服务器的购买以及后续的一些操作
- Java解决乱码方案
- 17.12.23日报
- 序
- QT 之删除讨厌的 centralWidget
- 使用java将COBOL语句转化为标准SQL语句
- bug笔记
- find与文件互传
- Scrapy安装报error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools
- 【观察】从智能鸿沟背后的挑战 看百分点的探索与创新