博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSP解决中文乱码问题
阅读量:5059 次
发布时间:2019-06-12

本文共 2917 字,大约阅读时间需要 9 分钟。

            JSP解决中文乱码问题

一、程序说明

  1.数据库:mysql

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

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

二、基本流程

  

三、运行界面

  1.用户注册界面

  

  2.JQuery表单验证

  

  3.提交post信息

  

  4.数据库信息

  

四、程序的主要代码

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

1
public
class
CharacterFilter
implements
Filter {
2
String encoding
=
null
;
//
声明字符编码
3
 
@Override
4
public
void
destroy() {
5
encoding
=
null
;
//
销毁过滤器对象时,同时将字符编码值变为空
6
 
}
7
@Override
8
public
void
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
public
void
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
public
class
DBCon {
2
private
static
Connection conn
=
null
;
3
public
static
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

DROP
TABLE
IF
EXISTS
`md5`.`tb_user`;
CREATE
TABLE
`md5`.`tb_user` (
`id`
int
(
11
)
NOT
NULL
AUTO_INCREMENT,
`name`
varchar
(
20
)
NOT
NULL
,
`pwd`
varchar
(
40
)
NOT
NULL
,
`sex`
varchar
(
5
)
NOT
NULL
,
`age`
int
(
11
)
NOT
NULL
,
`createTime`
datetime
NOT
NULL
,
PRIMARY
KEY
(`id`)
) ENGINE
=
InnoDB
DEFAULT
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这个错误,我就觉得奇怪了。如果有网友和我遇到的问题一样或者有好的解决方案,希望能指导一下。

转载于:https://www.cnblogs.com/maoan/archive/2011/06/13/2079619.html

你可能感兴趣的文章
docker 私有仓库之Harbor搭建与使用
查看>>
Android(Linux) 网卡名修改
查看>>
使用JavaScript给对象修改注册监听器
查看>>
最详细的Vue Hello World应用开发步骤
查看>>
优秀博客集合
查看>>
SQL Server 分页
查看>>
sql 入门经典(第五版) Ryan Stephens 学习笔记 第五部分: 性能调整
查看>>
jQuery tag标签插件
查看>>
OpenCV2:大学篇 形态学技术-腐蚀与膨胀操作
查看>>
【转】如何管理自己?
查看>>
练习1-10 编写一个将输入复制到输出的程序,并将其中的制表符替换成\t,把回退符替换成\b,把反斜杠替换成\\,这样可以将制表符和回退符以可见的方式显示出来...
查看>>
10 个Javascript框架和丰富的UI组件
查看>>
IE11浏览器中的My97日历控件刷新后无法打开问题解决办法
查看>>
会话保持:粘滞会话
查看>>
Git免密码提交
查看>>
Android手机外置SD卡(TF卡)的获取方法
查看>>
LeetCode 132. 分割回文串 II(Palindrome Partitioning II)
查看>>
关于PHP的引用赋值
查看>>
软件工程第三次作业
查看>>
默慈金数
查看>>