Servlet+Mysql笔记

本文介绍如何在使用MySQL数据库、Tomcat Application Server及Eclipse IDE开发环境下,全面配置UTF-8编码以确保中文正常显示的方法。从项目设置、JSP页面编码到Servlet和数据库的编码配置进行了详细的说明。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 现在要写一个自己用的支出系统,选了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 stub
		System.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一步。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值