<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-42  評論-578  文章-1  trackbacks-0

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

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

    網(wǎng)站根目錄/WEB-INF/content/admin/article.jsp

    網(wǎng)站根目錄/WEB-INF/content/admin/article-input.jsp

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

    在前面的教程中,我們已經(jīng)說過,JSP文件存放的目錄是content,也就是說JSP文件相對于網(wǎng)站根目錄的訪問路徑是從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;
        }

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

            
    //修改操作
            else{
                ArticleManager.updateArticle(article);
            }

            
    return "reload";
        }

        
        
    //執(zhí)行刪除
        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層的開發(fā)(整合iBatis)

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

    查詢列表:admin/article.action或admin/article ! list.action
    進入編輯頁面(若是添加):admin/article ! input.action
    進入編輯頁面(若是修改):admin/article ! input.action ? id=4
    執(zhí)行新增或修改操作(更新到數(shù)據(jù)庫):admin/article ! save.action
    執(zhí)行刪除操作:admin/article ! delete.action

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

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

    新聞列表頁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><href="article.action">新聞列表<a/>——<href="article!input.action">發(fā)表新聞<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">發(fā)表時間</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><href="article!input.action?article.id=${id}">編輯</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><href="article.action">新聞列表<a/>——<href="article!input.action">發(fā)表新聞<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進入新聞列表頁面,運行效果截圖:

    image

    image

     

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



    本文原創(chuàng),轉載請注明出處,謝謝!http://www.tkk7.com/rongxh7(心夢帆影JavaEE技術博客)
        

    posted on 2009-07-27 01:14 心夢帆影 閱讀(3229) 評論(2)  編輯  收藏 所屬分類: Struts2.1.6系列教程

    評論:
    # re: Struts 2.1.6 精簡實例系列教程(4):新聞管理模塊的實現(xiàn) 2009-07-27 19:08 | 小人物
    就按照你的課程學struts2.1.6啦!  回復  更多評論
      
    # re: Struts 2.1.6 精簡實例系列教程(4):新聞管理模塊的實現(xiàn) 2009-07-29 11:05 | jadmin
    嗯,不錯  回復  更多評論
      
    主站蜘蛛池模板: 日韩在线播放全免费| 色噜噜综合亚洲av中文无码| 67194国产精品免费观看| 四虎影视久久久免费观看| 亚洲国产成人精品无码区在线秒播| 色噜噜亚洲精品中文字幕| 青青草国产免费久久久91| 免费看成人AA片无码视频羞羞网| a级片在线免费看| www免费黄色网| 天堂亚洲免费视频| 亚洲heyzo专区无码综合| 亚洲国产av高清无码| 亚洲国产精品一区| 亚洲精品无码Av人在线观看国产| 亚洲成a人一区二区三区| 成人爱做日本视频免费| 毛片视频免费观看| 国产成在线观看免费视频| **真实毛片免费观看| 99精品视频在线视频免费观看 | 最近高清中文字幕免费| 精品多毛少妇人妻AV免费久久| 免费国产草莓视频在线观看黄| 亚洲AV日韩AV无码污污网站| 午夜在线a亚洲v天堂网2019| 亚洲一区二区三区无码国产| 亚洲日韩乱码久久久久久| 亚洲精品福利网泷泽萝拉| 18gay台湾男同亚洲男同| 老汉色老汉首页a亚洲| 亚洲av无码成h人动漫无遮挡 | 日日躁狠狠躁狠狠爱免费视频 | 亚洲精品第一国产综合精品99| 国产成人免费片在线视频观看| 国产美女精品久久久久久久免费| 精品国产精品久久一区免费式| 日日操夜夜操免费视频| 亚洲AV无码乱码在线观看性色扶 | 欧洲亚洲综合一区二区三区 | 亚洲高清国产拍精品青青草原 |