程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Struts 2.1.6精簡實例系列教程(4):新聞管理模塊的實現

Struts 2.1.6精簡實例系列教程(4):新聞管理模塊的實現

編輯:關於JAVA

上期講了新聞管理模塊Model層的開發,本期讓我們來一起開發新聞管理的Action類和JSP頁面。

先從JSP頁面寫起吧,在admin目錄下建兩個文件,一個是顯示新聞列表的article.jsp,另一個是新聞編輯的article- input.jsp,新聞添加和新聞修改歸於同一文件,節省一點資源,這一點,學習了Springside開源項目。再建一個新聞管理的Action類 ArticleAction.java。這三個文件的目錄結構如下:

網站根目錄/WEB-INF/content/admin/article.jsp

網站根目錄/WEB-INF/content/admin/article-input.jsp

類路徑根目錄/cn/simple/action/admin/ArticleAction.java

在前面的教程中,我們已經說過,JSP文件存放的目錄是content,也就是說JSP文件相對於網站根目錄的訪問路徑是從content下面的目錄算起。類路徑要與JSP路徑匹配,請大家特別注意上面紅色顯示部分。

好,來看一下Action類的代碼:

package cn.simple.action.admin;
import java.util.Date;
import java.util.List;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
import cn.simple.manager.ArticleManager;
import cn.simple.pojo.Article;
import com.opensymphony.xwork2.ActionSupport;
@Results({
     @Result(name="success", location="article.jsp", type="dispatcher"),
     @Result(name="input", location="article-input.jsp", type="dispatcher"),
     @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(null != article && 0 != article.getId()){
             int id = article.getId();
             article = ArticleManager.queryArticleById(id);
         }
         //為了新增
         else{
             article = new Article();
         }
         return INPUT;
     }

     //執行新增或修改
     public String save() throws Exception {
         //新增操作
         article.setPubtime(new Date());
         if(0 == article.getId()){
             ArticleManager.insertArticle(article);
         }
         //修改操作
         else{
             ArticleManager.updateArticle(article);
         }
         return "reload";
     }

     //執行刪除
     public String delete() throws Exception {
         ArticleManager.deleteArticle(article.getId());
         return "reload";
     }

     /** *//************** getter和setter方法 *****************/
     public List<Article> getArticles() {
         return articles;
     }
     public void setArticles(List<Article> articles) {
         this.articles = articles;
     }
     public Article getArticle() {
         return article;
     }
     public void setArticle(Article article) {
         this.article = article;
     }
}

大家可注意到默認是execute方法,我們讓它去調用list方法,也就是當我們訪問ArticleAction的時候,它默認是查詢所有新聞列表的。增、刪、查、改等方法,都是調用了上一期教程中的ArticleManager類的方法,大家若忘記了,可先看下:Struts 2.1.6 精簡實例系列教程(3):新聞管理Model層的開發(整合iBatis)。

我們訪問的時候是怎麼訪問的呢?對ArticleAction類來說:

查詢列表:admin/article.action或admin/article ! list.action

進入編輯頁面(若是添加):admin/article ! input.action

進入編輯頁面(若是修改):admin/article ! input.action ? id=4

執行新增或修改操作(更新到數據庫):admin/article ! save.action

執行刪除操作:admin/article ! delete.action

我們可以看到,Struts 2有一種很好用的用法就是加感歎號“!”來訪問我們的Action類中的方法。除了這些外,以前方法,其實可以去掉“.action”訪問的,就像我們前面講的一樣。

還有一點提醒,上面的Action類中,有些@Result是可以不用配置的,name=”success”和name=”input”這兩個 @result都是不用配置的,只要大家遵從Struts 2.1.6的一些命名規范,有時候能節省一些代碼。不過,為了大家容易理解,我把那些約定俗成默認的可不寫的,都寫了出來,這樣,對於初學都來說,容易理解一點。

新聞列表頁article.jsp的代碼如下:

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>SimpleWeb新聞列表頁</title>
</head>
<body>
<h5><a href="article.action">新聞列表<a/>——<a href="article!input.action">發表新聞<a/></h5>
<h2>新聞列表</h2>
<table border="1" cellspacing="0" cellpadding="0">
   <tr>
     <th scope="col">新聞編號</th>
     <th scope="col">新聞標題</th>
     <th scope="col">作者</th>
     <th scope="col">發表時間</th>
     <th scope="col">管理</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>
</body>
</html>

新聞編輯頁的代碼如下:

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>SimpleWeb新聞列表頁</title>
</head>
<body>
<h5><a href="article.action">新聞列表<a/>——<a href="article!input.action">發表新聞<a/></h5>
<h2>編輯新聞</h2>
<form action="article!save.action" method="post">
<input type="hidden" name="article.id" value="${article.id}"/>
<table border="0" cellspacing="0" cellpadding="0">
   <tr>
     <th scope="row">新聞標題</th>
     <td><input type="text" name="article.title" value="${article.title}"/> </td>
   </tr>
   <tr>
     <th scope="row">提交者</th>
     <td><input type="text" name="article.author" value="${article.author}"/> </td>
   </tr>
   <tr>
     <th scope="row">新聞內容</th>
     <td><textarea rows="20" cols="70" name="article.content">${article.content}</textarea> </td>
   </tr>
   <tr>
     <th scope="row">&nbsp;</th>
     <td><input type="submit" value="保存"/></td>
   </tr>
</table>
</form>
</body>
</html>

輸入http://localhost:8060/SimpleWeb/admin/article.action進入新聞列表頁面,運行效果截圖:

好,明天新的一個星期的工作日,早睡早起!敬請大家繼續關注我的Struts 2.1.6 精簡實例系列教程。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved