一、經過filter解決亂碼問題html
網頁的請求到達以前,先要通過filter的處理; java
提取數據出現亂碼:request.setCharacterEncoding("UTF-8");web
返回數據出現亂碼:response.setCharacterEncoding("UTF-8");sql
在Eclipse中建立過濾器兩種方式:註解和xmlapache
1)經過註解建立過濾器:app
首先右鍵new一個filter,取名爲 EncodingFilter,點擊next,而後看到的以下圖,配置url 爲 /*jsp
點擊finish。ui
代碼以下url
1 package util; 2 3 import java.io.IOException; 4 import javax.servlet.DispatcherType; 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.servlet.FilterConfig; 8 import javax.servlet.ServletException; 9 import javax.servlet.ServletRequest; 10 import javax.servlet.ServletResponse; 11 import javax.servlet.annotation.WebFilter; 12 13 @WebFilter(dispatcherTypes = { 14 DispatcherType.REQUEST, 15 DispatcherType.FORWARD, 16 DispatcherType.INCLUDE, 17 DispatcherType.ERROR 18 } 19 , urlPatterns = { "/*" }) 20 public class EncodingFilter implements Filter { 21 22 public void destroy() {} 23 24 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 25 request.setCharacterEncoding("UTF-8"); 26 response.setCharacterEncoding("UTF-8"); 27 chain.doFilter(request, response);//這句話也不能少 28 } 29 30 public void init(FilterConfig fConfig) throws ServletException {} 31 32 }
chain.doFilter(request, response); 表示執行完當前過濾器的操做以後,繼續執行這條鏈條上的下一個過濾器,固然下一個過濾器也是有 doFilter() 這個方法的,直到執行完這一鏈條上的全部過濾器爲止,記住當前過濾器只是鏈條上的一環。
OK,熟悉責任鏈模式的朋友應該知道是啥意思了。
2) 經過xml 配置方式
java 代碼:spa
1 package util; 2 3 import java.io.IOException; 4 5 import javax.servlet.Filter; 6 import javax.servlet.FilterChain; 7 import javax.servlet.FilterConfig; 8 import javax.servlet.ServletException; 9 import javax.servlet.ServletRequest; 10 import javax.servlet.ServletResponse; 11 12 public class EncodingFilter implements Filter { 13 14 public void destroy() {} 15 16 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 17 request.setCharacterEncoding("UTF-8"); 18 response.setCharacterEncoding("UTF-8"); 19 chain.doFilter(request, response); 20 } 21 22 public void init(FilterConfig fConfig) throws ServletException {} 23 24 }
web.xml中的配置
1 <filter> 2 <filter-name>EncodingFilter</filter-name> 3 <filter-class>util.EncodingFilter</filter-class> 4 </filter> 5 <filter-mapping> 6 <filter-name>EncodingFilter</filter-name> 7 <url-pattern>/*</url-pattern> 8 </filter-mapping>
OK.
二、經過標籤顯示數據(例子:userlist.jsp中顯示全部用戶)
首先編寫DAO代碼
1 /** 2 * 獲取全部用戶的信息 3 * @return 全部用戶 4 */ 5 public ArrayList<User> getUsers(){ 6 ArrayList<User> users = new ArrayList<User>(); 7 String sql = "select id,username,pwd from users"; 8 Connection conn = DBLib.getConn(); 9 try { 10 PreparedStatement pstmt = conn.prepareStatement(sql); 11 ResultSet set = pstmt.executeQuery(); 12 while(set.next()){ 13 User user = new User(); 14 user.setId(set.getInt("id")); 15 user.setUserName(set.getString("username")); 16 user.setPwd(set.getString("pwd")); 17 users.add(user); 18 } 19 set.close(); 20 pstmt.close(); 21 } catch (SQLException e) { 22 e.printStackTrace(); 23 } finally{ 24 try { 25 conn.close(); 26 } catch (SQLException e) { 27 e.printStackTrace(); 28 } 29 } 30 return users; 31 }
頁面經過struts標籤進行迭代輸出:
1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8" import="dao.*" %> 3 <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %> 4 <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %> 5 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 6 <html> 7 <head> 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 9 <title>Insert title here</title> 10 </head> 11 <body> 12 用戶列表 13 <% 14 pageContext.setAttribute("list", new UserDAO().getUsers()); 15 %> 16 <br/> 17 <br/> 18 <table> 19 <logic:iterate id="user" name="list"> 20 <tr> 21 <td><bean:write name="user" property="userName"/></td> 22 <td><bean:write name="user" property="pwd"/></td> 23 </tr> 24 </logic:iterate> 25 </table> 26 <a href="main.jsp">返回主頁面</a> 27 </body> 28 </html>
用到了logic標籤進行迭代,bean標籤進行打印。不少標籤不熟,不知道,由於不少,到時候要用了再問度老師或古老師。
下面有個參考連接:http://www.cnblogs.com/go-onxp/archive/2012/09/18/2690157.html
bean:用來建立bean、訪問bean和訪問bean的屬性 ;
html:用來建立Struts輸入表單;
logic:用來進行邏輯判斷、集合迭代和流程控制;
nested:創建在前三個標籤庫的基礎上,具備前三個標籤庫的全部功能,只是容許標籤間的嵌套;
tiles:用來建立tiles樣式的頁面。
通常用bean和logic就夠了。
代碼連接:http://pan.baidu.com/s/1miTuwze 提取碼:kpa5