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

Struts 2.1.6 實戰教程 (4):新聞管理模組完整實作 (Action + JSP)

     編輯:Java 相關知識

前言

承接上篇 Model 層 (iBatis),本篇實作新聞管理的 Action 與 JSP 頁面:列表、新增、修改、刪除完整 CRUD,採用約定式映射與註解配置,JSP 放置於 WEB-INF/content/admin/ 目錄。

目錄結構

WEB-INF/content/admin/article.jsp          // 列表頁
WEB-INF/content/admin/article-input.jsp    // 新增/修改頁
src/cn/simple/action/admin/ArticleAction.java

Action 類 (ArticleAction.java)

@Results({
  @Result(name="success", location="article.jsp"),
  @Result(name="input", location="article-input.jsp"),
  @Result(name="reload", location="article.action", type="redirect")
})
public class ArticleAction extends ActionSupport {
    private List<Article> articles;
    private Article article;

    @Override public String execute() throws Exception { return list(); }

    public String list() throws Exception {
        articles = ArticleManager.selectAllArticles();
        return SUCCESS;
    }

    public String input() throws Exception {
        if (article != null && article.getId() != 0) { // 修改
            article = ArticleManager.queryArticleById(article.getId());
        } else { // 新增
            article = new Article();
        }
        return INPUT;
    }

    public String save() throws Exception {
        article.setPubtime(new Date());
        if (article.getId() == 0) ArticleManager.insertArticle(article);
        else ArticleManager.updateArticle(article);
        return "reload"; // 重導列表頁
    }

    public String delete() throws Exception {
        ArticleManager.deleteArticle(article.getId());
        return "reload";
    }
    // getter/setter 省略
}

URL 映射規則 (約定式)

操作URL對應方法
列表/admin/article.action 或 /admin/article!list.actionlist()
新增頁/admin/article!input.actioninput()
修改頁/admin/article!input.action?id=4input()
儲存/admin/article!save.action (POST)save()
刪除/admin/article!delete.action?article.id=4delete()

列表頁 (article.jsp)

<%@ taglib prefix="s" uri="/struts-tags" %>
<h5><a href="article.action">新聞列表</a> -- <a href="article!input.action">發表新聞</a></h5>
<table border="1" cellspacing="0" cellpadding="0">
  <tr><th>編號</th><th>標題</th><th>作者</th><th>時間</th><th>管理</th></tr>
  <s:iterator value="articles">
    <tr>
      <td>${id}</td><td>${title}</td><td>${author}</td>
      <td><s:date name="pubtime" format="yyyy/MM/dd"/></td>
      <td>
        <a href="article!input.action?article.id=${id}">編輯</a> |
        <a href="article!delete.action?article.id=${id}">刪除</a>
      </td>
    </tr>
  </s:iterator>
</table>

編輯頁 (article-input.jsp)

<form action="article!save.action" method="post">
  <input type="hidden" name="article.id" value="${article.id}"/>
  <table>
    <tr><th>標題</th><td><input type="text" name="article.title" value="${article.title}"/></td></tr>
    <tr><th>作者</th><td><input type="text" name="article.author" value="${article.author}"/></td></tr>
    <tr><th>內容</th><td><textarea name="article.content" rows="20" cols="70">${article.content}</textarea></td></tr>
    <tr><td><input type="submit" value="儲存"/></td></tr>
  </table>
</form>

運行截圖說明

  • 訪問 https://localhost:8060/SimpleWeb/admin/article.action 進入列表
  • 點「發表新聞」進入空白編輯頁,填寫後儲存導回列表
  • 列表中點「編輯」帶入現有資料,修改後儲存
  • 點「刪除」直接移除並重導列表

註解配置優勢

  • 無需 struts.xml,方法名直接對應 !methodName
  • @Result 定義結果視圖,type="redirect" 實現 PRG 模式避免重複提交
  • 預設 success/input 可省略,但顯式寫出利於初學者理解
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved