首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Struts2 模糊查詢實現:Action 與 SQL 層面的完整方案

     編輯:程式設計綜合問答

需求澄清

Struts2 模糊查詢包含兩層:Action 接收參數 與 DAO 執行 SQL。前端提交關鍵字,Action 透傳至 Service/DAO,SQL 拼接 LIKE 條件返回結果。

Action 層實現

@Action(value = "search", results = { @Result(name = "success", location = "/result.jsp") })
public String execute() {
    // 接收前端傳遞的關鍵字
    String keyword = request.getParameter("keyword");
    // 調用 Service 查詢
    List<Record> list = recordService.fuzzySearch(keyword);
    // 放入值棧供 JSP 顯示
    ActionContext.getContext().put("recordList", list);
    return SUCCESS;
}

DAO/SQL 核心邏輯

public List<Record> fuzzySearch(String keyword) {
    String sql = "SELECT * FROM records WHERE title LIKE ? OR content LIKE ?";
    String param = "%" + keyword + "%";
    return jdbcTemplate.query(sql, new Object[]{param, param}, new BeanPropertyRowMapper<>(Record.class));
}

關鍵點:

  • 使用 PreparedStatement 參數化查詢,防止 SQL 注入
  • 通配符 % 在 Java 代碼中拼接,而非 SQL 字串拼接
  • 多字段模糊查詢用 OR 連接,必要時加全文索引優化

前端 JSP 表單

<form action="search.action" method="post">
    <input type="text" name="keyword" placeholder="輸入關鍵字">
    <input type="submit" value="查詢">
</form>
<c:forEach items="${recordList}" var="r">
    <div>${r.title} - ${r.content}</div>
</c:forEach>

進階優化建議

  • 大數據量採用 Elasticsearch 或資料庫全文索引(MySQL FULLTEXT、PostgreSQL tsvector)
  • 前端加入防抖動(debounce)減少頻繁請求
  • 結果分頁顯示,避免一次性載入過多數據
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved