首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Struts自定義標簽實戰:表格展示用戶數據

     編輯:Java 相關知識

展示一個DisplayTag自定義標簽,從Session獲取用戶列表渲染HTML表格,未登錄則轉發登錄頁。

組件結構

  1. TLD(app.tld):標簽名display,屬性page(轉發頁面)。
  2. 標簽類(DisplayTag):doEndTag()檢查Sessionalluser屬性,存在則遍歷List<User>輸出<table>(ID/Name/Password三列),否則pageContext.forward(page)轉發登錄頁。返回SKIP_PAGE終止頁面後續處理。
  3. Action(LoginAction):驗證用戶名密碼,成功調用UserDAO.showAll()獲取列表存入Sessionalluser,轉發indexGo。
  4. JSP使用:<%@ taglib uri="/WEB-INF/app.tld" prefix="app" %> <app:display page="login.jsp"/>。

代碼關鍵點

public int doEndTag() throws JspException {
    HttpSession session = pageContext.getSession();
    boolean valid = session != null && session.getAttribute("alluser") != null;
    if (!valid) { pageContext.forward(page); return SKIP_PAGE; }
    List users = (List) session.getAttribute("alluser");
    JspWriter out = pageContext.getOut();
    out.println("<table border='2' width='100%' height='100%'>");
    out.println("<tr><th>ID</th><th>Name</th><th>password</th></tr>");
    for (User u : users) {
        out.println("<tr><td>" + u.getId() + "</td><td>" + u.getUsername() + "</td><td>" + u.getPassword() + "</td></tr>");
    }
    out.println("</table>");
    return SKIP_PAGE;
}

改進建議

  • 標簽類硬編碼列名與屬性,缺乏通用性,可引入列配置屬性或改用displaytag成熟庫。
  • 直接在標簽中輸出HTML不利於維護,建議轉向JSTL<c:forEach>+EL或Struts 2標簽。
  • release()重置屬性確保標簽實例復用安全。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved