一、程式說明
1.資料庫教程:mysql教程
2.開發環境:tomcat7.0+windows7+myeclips教程e9.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這個錯誤,我就覺得奇怪了。如果有網友和我遇到的問題一樣或者有好的解決方案,希望能指導一下