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

Struts 實戰開發心得總結(二):模態視窗、標籤庫、JAR 衝突、AJAX 大數據、快取控制、空值處理

     編輯:Java 相關知識

承接上篇,繼續分享 Struts 專案實戰踩坑筆記,涵蓋前端細節、部署陷阱、效能優化等 6 大主題。

1. showModalDialog 模態視窗 Title 必須寫在子頁面 <head> 最頂端

showModalDialog() 無 title 參數,title 需在被開啟的 JSP <head> 內第一行寫 <TITLE>。普通視窗容忍位置錯誤,模態視窗極敏感。

2. "Cannot find bean under name org.apache.struts.taglib.html.BEAN" 錯誤排查

常見 5 大原因:

  1. <html:form> 之外使用表單子標籤
  2. 無主體標籤被伺服器解析為單標籤,導致後續標籤判定在外層
  3. taglib prefix 不為 html
  4. property 未對應 FormBean 屬性
  5. 必須用 <html:form> 而非 <form>

3. 多專案共用類別:打 JAR 放 JBoss lib 目錄

  • 專案 A 打 JAR → 放 jboss-4.0.5.GA/server/default/lib/
  • 專案 B 引用專案 A 類別,不報 ClassNotFound
  • 嚴禁:專案自帶 JAR 與 Server lib 同時存在同一 JAR → 類別載入衝突報錯

4. AJAX 大量表單資料必須用 POST

method: "get" 受 URL 長度限制,大表單請求會失敗無回應。改 method: "post" 即解決。

5. 共用 JSP 引用 Servlet 類別:跨專案類別不見

公共專案 JSP 內用 <%@ page import="..."%> 引用 Servlet 類別,其他專案 include 該 JSP 時找不到類別。最佳解:公共類別打 JAR,放各專案 WEB-INF/lib 或 Server 共用 lib。

6. JSP 條件顯示/隱藏三種寫法

方式適用場景範例
Struts <logic:equal>變數在 request/session 等範圍<logic:equal name="JSP_USER_CODE" value="12345">...</logic:equal>
JSTL <c:if>依 URL 參數判斷<c:if test="${param.modual=='select_users'}">...</c:if>
Scriptlet <% %>複雜 Java 邏輯<% if(...) {%>...<%}else{%>...<%}%>

7. window.opener vs window.parent

彈出新視窗存取開啟者元素用 self.opener,非 self.parent(parent/child 用於框架/多視窗架構)。

8. JSP 防快取標準寫法

<%
response.setHeader("Cache-Control", "no-store");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
%>

9. <a href="javascript:..."> 替代 onmouseover/onmouseout

超連結 href 可直接執行 JS,配合 CSS 樣式,比寫滑鼠事件更簡潔:

<a href='javascript:phoneListJs.showTabbarContent("+serial_num+","+cmt+");' style='color:red;'>編輯</a>

10. 資料庫 NULL 欄位處理:防 trim() 丟例外

工具方法:

public static String replaceIfMissing(String orig, String replacement) {
    if (orig == null || orig.trim().isEmpty()) return replacement;
    return orig;
}

11. SQL 排序 NULL 值定位:用 NVL()

ORDER BY NVL(nullable_col, 'ZZZ') 讓 NULL 排最後;NVL(col, ' ') 讓 NULL 排最前。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved