从Servlet到Struts2.1.6

前段时间,朋友做了一个“基于MVC的JSP+Servlet+JavaBean整合开发的例子”,有老师质疑它这个是 不是真正的MVC标准?至于这个问题,我们在这里不讨论,本文目的是用Struts2.1.6来取代Servlet。经 我这位朋友同意,我把他所做的那个“JSP+Servlet+JavaBean”的例子,发布给大家,大家可以跟着我的 步骤,一步一步地,把这个Servlet的例子,改写成Struts2.1.6的例子。

这是我朋友的例子,大家先下载下来,导入Eclipse-jee,并把相应的数据库文件导入SQL Server 2000,运行一下他这个小项目。如果出现什么问题,可以到他的技术博客给他留言。 http://www.blogjava.net/gdhqs。

本文重点是如何把他这个Servlet的小项目改写成Struts2.1.6的项目。首先,下载Struts2.1.6的类库 ,http://struts.apache.org/2.1.6/index.html, 下载下来后是这个文件:struts-2.1.6-all.zip,解 压缩后,在lib目录下,找到以下必需的jar包,把它们添加到我们项目的lib目录下。这些jar有:

xwork-2.1.2.jarstruts2-core-2.1.6.jarstruts2-convention-plugin- 2.1.6.jarognl-2.6.11.jarfreemarker-2.3.13.jarcommons-loggin- 1.0.4.jarcommons-fileupload-1.2.1.jar

我还是在我朋友的项目基础上做吧,先把“MvcModel”(他的项目名)项目下的web.xml修改一下。你 可以把他配置的所有Servlet给删除掉,然后,配置是Struts2的过滤器,代码如下:

        struts2        org.apache.struts2.dispatcher.FilterDispatcher                struts2        /*   

这样,就简洁了许多,比配置N个Servlet简洁了。

接着,在项目的Web-INF目录下,新建一个文件夹名为”content”,这个目录名要是这个,如果要改成 其它名的话,还得在相应的配置文件中配置,但初学的时候,就按它默认的吧。我们编写的JSP文件,就 放在此目录下。这样做,目的之一为了提高安全性,因为在Web-INF下的所有文件,不能直接访问的。

我们可以把我朋友的那个项目的主页index.jsp文件移到content目录下,或者,自己新建一个也可以 。以下是index.jsp的代码,注意,这个是我朋友项目中的有所不同了,编码改成了UTF-8.

MVC MODELMVC MODEL    添加 人员    人员列表

我们在浏览器中输入地址http://localhost:8060/MvcModel/index, 注意,我的端口号与你的可能不 同,这个访问路径“index”不能带”.jsp”后缀,否则会报找不到action的错误。或者,你加个”.action” 的后缀也可以。Struts2.1.6与Struts2.0不同之处之一是,Struts2.1.6中的“xxx.action”可以没有 Action类与它对应,它如果找不到有相应的action类,它会去找xxx.jsp,xxx.htm等文件。

我们做到这一步,如果能够通过上面的路径预览index.jsp的话,就说明,Struts2.1.6配置正确了。 继续下面的步骤吧。

来写一个Struts的action类,命名为”PeopleAction”,代码如下:

package cn.he.action;import java.util.List;import org.apache.struts2.convention.annotation.Result;import org.apache.struts2.convention.annotation.Results;import cn.he.manager.Manager;import cn.he.pojo.People;import com.opensymphony.xwork2.ActionSupport;@Results({     @Result(name = "reload", location = "people.action", type = "redirect")})public class PeopleAction extends ActionSupport {    private static final long serialVersionUID = 1L;    private Manager manager = new Manager();    private int id;    private People people;    private List peoples;    //默认的操作    @Override    public String execute() throws Exception {        return list();    }    //查询列表的操 作    public String list() throws Exception {        System.out.println ("list");        peoples = manager.queryAllPeople();        System.out.println("name = " + peoples.size());        return SUCCESS;    }    //进入编辑页面前的操作    public String input() throws Exception {        System.out.println("input");        return INPUT;    }    //保存操作    public String save() throws Exception {         manager.addPeople(people);        return "reload";    }    //删除操作    public String delete() throws Exception {        manager.delPeople(id);        return "reload";    }    //自动生 成相应的getter和setter方法    public int getId() {        return id;     }    public void setId(int id) {        this.id = id;    }    public People getPeople() {        return people;    }    public void setPeople(People people) {        this.people = people;    }     public List getPeoples() {        return peoples;     }    public void setPeoples(List peoples) {        this.peoples = peoples;    }}

注意,这个类的包名“cn.he.action”,要有名为“action”或者”struts”,或者”web”等,相关的命 名规范请参考  struts2采用convention-plugin实现零配置,Struts2.1.6默认会把这些包下或者这些包 的子包下的类,纳入自己的管理范围之内。

接着在content目录下,写两个JSP文件,一是查询列表的JSP页面:people.jsp,代码如下:

People列表页     id    name    delete        ${peo.name}    删除

另一个添加人员的页面:people-input.jsp,代码如下:

People添加页 名字:  

运行一下看看效果吧!

随文源码:http://www.bianceng.net/java/201212/710.htm

离开你的那一天开始,左心房渐渐停止跳动…

从Servlet到Struts2.1.6

相关文章:

你感兴趣的文章:

标签云: