解决JSP提交表单保存到Mysql中文乱码的问题

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

JSP网页即使写成

<%@ page contentType= “text/html; charset=UTF-8 ” language= “java ” import= “java.sql.* ” errorPage= “error.jsp ” %>

Mysql里存取的数据库的charset也设成了UTF-8,可是通过JSP网页存取中文还是显示乱码 。解决的办法就是加一个过滤器:

 

 
  1. package cn.cate.utils;          
  2.           
  3. import java.io.IOException;          
  4.           
  5. import javax.servlet.Filter;          
  6. import javax.servlet.FilterChain;          
  7. import javax.servlet.FilterConfig;          
  8. import javax.servlet.ServletException;          
  9. import javax.servlet.ServletRequest;          
  10. import javax.servlet.ServletResponse;          
  11.           
  12. public class SetCharacterEncodingFilter  implements Filter{          
  13.           
  14.     protected String encoding = null;           
  15.     protected FilterConfig filterConfig = null;           
  16.     protected boolean ignore = true;           
  17.           
  18.     @Override          
  19.     public void destroy() {          
  20.         this.encoding = null;           
  21.         this.filterConfig = null;           
  22.     }          
  23.           
  24.     @Override          
  25.     public void doFilter(ServletRequest request, ServletResponse response,          
  26.             FilterChain chain) throws IOException, ServletException {          
  27.                   
  28.         if (ignore || (request.getCharacterEncoding() == null)) {           
  29.             String encoding = selectEncoding(request);           
  30.             if (encoding != null) {           
  31.                 request.setCharacterEncoding(encoding);          
  32.             }           
  33.         }           
  34.         chain.doFilter(request, response);           
  35.     }          
  36.           
  37.     @Override          
  38.     public void init(FilterConfig filterConfig) throws ServletException {          
  39.         this.filterConfig = filterConfig;           
  40.         this.encoding = filterConfig.getInitParameter("encoding");           
  41.         String value = filterConfig.getInitParameter("ignore");           
  42.         if (value == null) {           
  43.           this.ignore = true;           
  44.         }           
  45.         else if (value.equalsIgnoreCase("true")) {           
  46.           this.ignore = true;           
  47.         }           
  48.         else if (value.equalsIgnoreCase("yes")) {           
  49.           this.ignore = true;           
  50.         }           
  51.         else {           
  52.           this.ignore = false;           
  53.         }           
  54.     }          
  55.           
  56.     protected String selectEncoding(ServletRequest request) {           
  57.         return (this.encoding);           
  58.     }           
  59. }      

然后在web.xml作如下配置:

 

 
  1. XML/HTML 代码复制内容到剪贴板  
  2.       
  3. <filter>           
  4.   <filter-name>Set Character Encoding</filter-name>           
  5.   <filter-class>cn.cate.utils.SetCharacterEncodingFilter</filter-class>           
  6.   <init-param>           
  7.     <param-name>encoding</param-name>           
  8.     <param-value>UTF-8</param-value>           
  9.   </init-param>           
  10. </filter>           
  11. <filter-mapping>           
  12.   <filter-name>Set Character Encoding</filter-name>           
  13.   <url-pattern>/*</url-pattern>           
  14. </filter-mapping>       

 

     本文转自06peng 51CTO博客,原文链接:http://blog.51cto.com/06peng/962462,如需转载请自行联系原作者






相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
Java
JSP 教程 之 JSP 表单处理 7
该教程介绍了如何在JSP中处理表单,特别是Checkbox数据。示例展示了一个HTML表单,包含三个已选中的复选框(Google、百度、淘宝),用户提交后会向&quot;main.jsp&quot;发送POST请求。
40 1
|
4月前
|
Java
`<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
该博客文章讲解了JSP中`<jsp:getProperty>`和`<jsp:setProperty>`动作的使用方法,包括它们的语法格式和如何在页面中使用这些动作来获取和设置JavaBean对象的属性值,并通过图书信息的填写和展示示例进行了演示。
`<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
|
4月前
|
SQL 关系型数据库 MySQL
MySql⭐一、配置MySql数据库,并创建一个表单
MySql⭐一、配置MySql数据库,并创建一个表单
|
5月前
|
关系型数据库 MySQL 数据库
mysql,归零,无法自动排序,删除id,表单的数据没有从零开始出现怎样解决?删除数据仍然从删除的地方该怎样解决?表单的数据没有从2开始,而是从之前的删除的序号开始自增。
mysql,归零,无法自动排序,删除id,表单的数据没有从零开始出现怎样解决?删除数据仍然从删除的地方该怎样解决?表单的数据没有从2开始,而是从之前的删除的序号开始自增。
|
6月前
|
Java
JSP 教程 之 JSP 表单处理 10
该教程演示了如何在JSP中处理表单数据。通过使用`HttpServletRequest`的`getParameterNames()`方法获取表单参数名的枚举,然后遍历枚举以显示参数名和对应的值。示例代码展示了一个JSP页面,它接收并显示来自`test.htm`表单的POST数据,该表单包含三个已选中的复选框(Google、百度、淘宝)。用户提交表单后,数据会被发送到`main.jsp`进行处理和显示。
45 0
|
6月前
|
Java
JSP 教程 之 JSP 表单处理 9
在JSP中处理表单数据,可以通过HttpServletRequest的getParameterNames()获取所有参数名,形成枚举。遍历枚举,使用hasMoreElements()和nextElement()获取每个参数名,并通过request.getParameter()得到对应的值。示例代码展示了一个简单的HTML表格,显示了所有表单参数及其值。
29 0
|
6月前
|
Java
JSP 教程 之 JSP 表单处理 8
该教程介绍了如何在JSP中处理表单,特别是复选框(checkbox)数据。示例展示了一个HTML表单,包含百度、Google和淘宝的复选框,保存为test.htm。表单提交至main.jsp,其中使用Java脚本读取并显示用户选择的复选框值。访问http://localhost:8080/testjsp/test.html可测试表单提交。
37 0
|
6月前
|
Java
JSP 教程 之 JSP 表单处理 6
在JSP教程的表单处理部分,演示了使用POST方法提交数据。在main.jsp中,接收并转换POST请求中的中文参数以避免乱码,代码显示了处理过程。同时,提到了test.htm表单的结构,并指明通过访问特定URL向main.jsp提交数据。
32 0
|
6月前
|
Java 数据处理
JSP 教程 之 JSP 表单处理 5
在JSP教程的表单处理部分,演示了使用POST方法传递数据。修改后的main.jsp接收表单数据,处理中文乱码问题,通过`new String((request.getParameter(&quot;name&quot;)).getBytes(&quot;ISO-8859-1&quot;),&quot;UTF-8&quot;)`转换编码。示例显示站点名和网址,如百度(baidu.com)。
31 0
|
6月前
|
Java
JSP 教程 之 JSP 表单处理 4
JSP教程讲解了如何处理表单数据,以GET方法为例。示例展示了一个HTML表单,用户输入站点名和网址,点击&quot;提交&quot;后,数据通过GET方式发送至main.jsp。将test.htm(包含表单)存入JSP项目WebContent目录,访问http://localhost:8080/testjsp/test.html可测试表单提交功能。
28 0