zoukankan      html  css  js  c++  java
  • JSP解决中文乱码问题

                JSP解决中文乱码问题

    一、程序说明

      1.数据库:mysql

      2.开发环境:tomcat7.0+windows7+myeclipse9.0

      3.解决问题:解决jsp中文乱码问题

    二、基本流程

      

    三、运行界面

      1.用户注册界面

      

      2.JQuery表单验证

      

      3.提交post信息

      

      4.数据库信息

      

    四、程序的主要代码

      1.字符过滤器(CharacterFilter.java)

    1 publicclass CharacterFilter implements Filter {
    2 String encoding =null; // 声明字符编码
    3   @Override
    4 publicvoid destroy() {
    5 encoding =null; //销毁过滤器对象时,同时将字符编码值变为空
    6   }
    7 @Override
    8 publicvoid doFilter(ServletRequest request, ServletResponse response,
    9 FilterChain chain) throws IOException, ServletException {
    10 if(encoding !=null){
    11 request.setCharacterEncoding(encoding); // 设置request的编码格式
    12   response.setContentType("text/html; charset="+encoding); // 设置response字符编码
    13   }
    14 chain.doFilter(request, response);
    15 }
    16 @Override
    17 publicvoid init(FilterConfig filterConfig) throws ServletException {
    18 encoding = filterConfig.getInitParameter("encoding"); // 获取初始化参数
    19   }
    20 }

      2.web.xml配置

    1 <filter>
    2 <filter-name>CharacterFilter</filter-name>
    3 <filter-class>com.swyma.md5.filter.CharacterFilter</filter-class>
    4 <init-param>
    5 <param-name>encoding</param-name>
    6 <param-value>UTF-8</param-value>
    7 </init-param>
    8 </filter>
    9 <filter-mapping>
    10 <filter-name>CharacterFilter</filter-name>
    11 <url-pattern>/*</url-pattern>
    12 </filter-mapping>

    3.数据库连接类(请特别注意下url)

    1 publicclass DBCon {
    2 privatestatic Connection conn =null;
    3 publicstatic Connection getConn(){
    4 try {
    5 Class.forName("com.mysql.jdbc.Driver"); //加载数据库连接驱动
    6   String user="root"; //用户名
    7   String pwd="123"; //密码
    8 String url ="jdbc:mysql://localhost:3306/md5?useUnicode=true&characterEncoding=utf-8"; //数据库连接url
    9 conn=DriverManager.getConnection(url, user, pwd);//获取连接
    10 } catch (Exception e) {
    11 e.printStackTrace();
    12 }
    13 return conn;
    14 }
    15 }

      4.数据库mysql

    DROPTABLEIFEXISTS `md5`.`tb_user`;
    CREATETABLE `md5`.`tb_user` (
    `id`
    int(11) NOTNULL AUTO_INCREMENT,
    `name`
    varchar(20) NOTNULL,
    `pwd`
    varchar(40) NOTNULL,
    `sex`
    varchar(5) NOTNULL,
    `age`
    int(11) NOTNULL,
    `createTime`
    datetimeNOTNULL,
    PRIMARYKEY (`id`)
    ) ENGINE
    =InnoDBDEFAULT CHARSET=utf8;

     五、个人总结

      1.首先我想说说我的一些感悟吧:

        其实这个中文乱码问题早在去年暑假学jsp的时候就解决过,但是由于没有及时总结,程序又不知道什么给我删除掉了,结果呢,我花了一天多时间才把它重新整回来,代

      价太惨了,所以总结很重要。如果朋友你看到,请现在开始学会总结吧。

      2.这个是简单的jsp解决中文乱码问题。

      3.解决关键:一是CharacterFilter.java,字符过滤器,将jsp页面编码统一为utf-8;

            二是DBCon.java中url的useUnicode=true&characterEncoding=utf-8这句话,一定要加上,不然也一样会出现乱码的。

      4.解决过程:

        1)一开始我只是加了个字符过滤器,然后以为就可以了,然后不管我怎么调试,结果还是乱码。然后我在网上找了些材料,感觉characterFilter又不会错啊,但是事与愿

      违啊,无奈又得一步步的调试。

        2)可能是由于自己的搜索能力不强,我查了好多资料,但是基本上都是加个CharacterFilter就可以的,但是我这系统它就是不行。

        3)最后就靠自己的回忆吧,想起了这个url,有点幸运解决问题吧。

      5.问题是解决了,但是还是感觉不是很完善一样,因为我在部署的时候有时会出现java.lang.NoClassDefFoundError: Filter这个错误,我就觉得奇怪了。如果有网友和我遇到的问题一样或者有好的解决方案,希望能指导一下。

  • 作者: swyma
    出处: http://www.cnblogs.com/maoan/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
查看全文
  • 相关阅读:
    [色彩校正] Gamma Correction
    需要齐次坐标的原因之二 所有的变换运算(平移、旋转、缩放)都可以用矩阵乘法来搞定
    需要齐次坐标的原因之一
    数据库连接类
    简单的数组排序
    OfficePage封装代码
    新闻管理数据模板
    最新page页码生成控件代码
    新闻管理cs页面
    快速收录新域名网站
  • 原文地址:https://www.cnblogs.com/maoan/p/2079619.html
  • Copyright © 2011-2022 走看看