Struts1.x 中處理亂碼及經過標籤顯示數據

一、經過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

相關文章
相關標籤/搜索