随笔-42  评论-578  文章-1  trackbacks-0

上期讲了新闻管理模块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><href="article.action">新闻列表<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><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">发表新闻<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

 

好,明天新的一个星期的工作日,早睡早起!敬请大家继续关注我的Struts 2.1.6 精简实例系列教程。



本文原创,转载请注明出处,谢谢!http://www.blogjava.net/rongxh7(心梦帆影JavaEE技术博客)
    

posted on 2009-07-27 01:14 心梦帆影 阅读(3216) 评论(2)  编辑  收藏 所属分类: Struts2.1.6系列教程

评论:
# re: Struts 2.1.6 精简实例系列教程(4):新闻管理模块的实现 2009-07-27 19:08 | 小人物
就按照你的课程学struts2.1.6啦!  回复  更多评论
  
# re: Struts 2.1.6 精简实例系列教程(4):新闻管理模块的实现 2009-07-29 11:05 | jadmin
嗯,不错  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问