Servlet+Mysql笔记

来源:互联网 发布:天津办公软件培训 编辑:程序博客网 时间:2024/05/01 13:58

 现在要写一个自己用的支出系统,选了mysql做数据库,tomcat做Application Server,有了一点经验,保留下来,留待以后翻查。

 

mysql令人头疼的编码问题:

 

因为UTF-8比较通用,我就选了UTF-8作为系统的编码格式。

 

1,eclipse项目属性里面设置编码为UTF-8,这样所有文件的格式统一为UTF-8。

2,在jsp文件头,加入如下一行:

<%@ page language="java" pageEncoding="UTF-8" %>

head中设置meta:

<meta http-equiv="content-type" content="text/html; charset=utf-8"/>

这样,页面中的编码格式设置好了。当然,我没有试过如果不放这两行代码有什么影响,但是放了这两句之后,页面显示正常。

 

3,使用filter来保持页面和servlet的中文编码一致,从而在servlet中打印的中文和页面提交的中文都能正常显示。

 方法就是:写一个filter,然后在web.xml中设置filter即可。

filter中的doFilter方法:

刚开始不知道要加chain.dofilter方法,页面提交之后就变成空白页面了。呵呵。

 

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {// TODO Auto-generated method stubSystem.out.println("filter");request.setCharacterEncoding("UTF-8");chain.doFilter(request, response);}


 

 

<filter><filter-name>encodingFilter</filter-name><filter-class>com.expense.my.filter.EncodingFilter</filter-class></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>


注意utl-pattern是/*,这样就对所有的servlet都能进行编码拦截转换。

 

最后就是mysql数据库了。在安装的时候选择编码的时候选择第三个选项,就是手动设置编码那个,然后选择utf8.

刚开始老不成功,后来发现是我只改了选择,但是忘记选择第三个选项了 -_-!

 

最后,还会发现一个问题:

 

就是页面提交中文表单成功,返回显示中文也正常,但是在命令行里查看的时候是乱码。搞了好久。后来用mysql的可视化工具workbench查看发现数据库里的中文显示是正常的,最后查出原来中文系统的命令行是不支持显示UTF-8中文的。就算我把命令行窗口的编码用chcp命令改成65001也不行。只能通过如下方法:

用mysql command或者cmd登录,然后运行set names gbk, 然后在select出记录,中文就显示正常了。

 

如此大功告成,页面,servlet,数据库三个地方皆显示中文正常无误!完美解决!

 

另可以用mysql的可视化客户端工具workbench来操作数据库,没有命令行显示中文不正常问题,免去设置set name一步。