天天看点

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

                          —— 在 netbeans 6 中使用 struts2

每次使用一种java编辑器或ide(如eclipse)一个多小时后,总是发现自己已经在netbeans里敲代码了。至于struts2,这是一个融合了webwork 和struts1.x 的基于mvc的web开发框架,使用相当广泛。

在当前的netbeans6.1中你还找不到struts2的影子(至少我所使用的版本里没有,据说已经有人在开发插件了)。不过,这一点也不会妨碍netbean 6 和 struts2走在一起。在后面你会发现,他们俩配合的还是相当默契的。

本篇文章就是为了告诉您,如何将netbeans和 struts2撮合在一起(在这里struts2甚至还可以和jsf和visual web pack一起使用)

准备工作:

1.       jdk 5.0 (或更高版本);

2.       netbeans 6 或者 netbeans 6.1 beta(本文使用的是netbeans 6.1 beta);

3.       struts2 开发包;

4.       tomcat 5.5 (或更高版本)。

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

创建一个 web project:

   点击file à new project;

   选择categories 中的web,再选择projects中的 web application;

   点击next.

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

如下图填写,这里的server也可以是netbeans绑定的 tomcat 6

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

点击next,然后再点击next 看到如下界面:

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

什么都不要选点击finish.  工程创建完毕,进入下一部分。

点击 tools à libraries

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

点击new library...

   library name: struts2

   library type : class library

点击ok

选择图中所示的struts2 java包

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

点击ok 回到主界面。右键点击libraries  然后选择add library...

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

点击add library 基本struts2的开发包已经导入完毕。

如图所示;单击web.xml 然后点击右侧的filters 单击add filter element

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

filter name: 可以任意填写 不过那一串长长的filter class 可不太容易记住。只可惜点开browse...之后也无法选择libraries里面的包,不能不说是一个遗憾。希望下一个版本的netbeans 会修正这一小小的不足。

   filter name:struts2 filter;

   filter class:org.apache.struts2.dispatcher.filterdispatcher

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

接下来就是mapping filter了,点击add...

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

如图填写,struts2 filter 要和上面的保持一致。url pattern里面填写 *.action 即可

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

事实上,在其他ide里面配置web.xml的时候,你可能要自己动手写xml(相信大多数程序员都很讨厌写又长又臭的xml. 而且稍微一出错,能把眼睛看痛)

以上的几步操作,netbeans为我们自动生成了以下代码,您也可以去看看。

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

现在你可以暂时不用管web.xml了。

struts.xml 可以说是整个struts2框架的中心。大多数配置错误也出现在struts.xml上。一个jsp页面提交后不是像传统的做法那样直接传给另一个页面,而是交由struts.xml进行处理。struts.xml调用后台action 类 进行处理后,决定转向那个页面.那么我们如何编写以及在哪里放置struts.xml呢?

我们要将struts.xml放置在source packages的default package包下。如图

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

给文件命名为struts

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

接下来点击struts.xml进行编写,之前我们要在xml文档的头部加入

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

<!doctype struts public

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

    "-//apache software foundation//dtd struts configuration 2.0//en"

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

"http://struts.apache.org/dtds/struts-2.0.dtd">

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

把原来的<root></root>删除。换成<struts></struts>   输入”<p” 然后 按  ctrl+space

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

这个时候 netbeans已经完全认识了struts2(估计它们已经成为好伙伴了)。继续编写,如果你怕出错,或者不愿意太麻烦,按 ctrl+space. netbeans 6.1 会为你解决很多问题。(不得不说的是,netbean6.0以后的版本在代码完成方面有了一个很大的提高,速度和智能两方面都值得称赞)一路编写下来。以下是编好的代码:

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

<struts>

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

    <package name="xhinker" extends="struts-default" >

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

        <action name="hello" class="cn.xhinker.struts2.helloaction">

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

            <result>/hellopage.jsp</result>

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

        </action>

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

    </package>

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

</struts>

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

文档中 action 标签中的name属性要特别注意,因为这个是用来标识这个action的。class属性里的是,action类。当点击一个jsp页面里的<a href=”hello.action”>enter</a>的时候。 程序会根据hello.action 在struts.xml里找到name=”hello”的标签。继而找到后台的 helloaction 类。然后根据helloaction 实例的返回值,找到result标签中对应的页面,实现页面的转移。result标签有一个name属性如 <result name=”success”>/hellopage.jsp</result>如果不写 name属性,则默认为 name=”success”.

保存,关闭这个页面,接下来我们来编写helloaction

右键单击source package 创建一个java类。

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

如下填写:

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

让helloaction 继承actionsupport

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

package cn.xhinker.struts2;

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

import com.opensymphony.xwork2.actionsupport;

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

public class helloaction extends actionsupport...{

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

}

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

这个时候有人会问,我如何让netbeans 帮我override(重写)父类的方法啊?没有这样的按钮啊?不用找了。ctrl+space. 您要的重写的方法,八九不离十已经显示在你的面前了:

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

我们要的就是这个execute()方法。稍微改变一下代码如下所示:

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

 public string execute() throws exception ...{

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

        return this.success;

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

}  

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

添加一个字符串变量msg 然后让netbeans 自动生成 setter 和 getter方法。如图在弹出的菜单中选择encapsulate field...即可

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

生成完毕,这个类就编好了,完整的代码为:

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

    private string msg="hello world";

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

    public string execute() throws exception ...{

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

    }

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

    public string getmsg() ...{

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

        return msg;

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

    public void setmsg(string msg) ...{

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

        this.msg = msg;

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家
让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

进入下一部分。

在index.jsp中的body标签内加入<a href="hello.action">hello</a>

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

新建一个hello.jsp页面 添加如图所示的代码:

让Struts2 在NetBeans 6中安家 让Struts2 在NetBeans 6中安家

到此为止,你也该启动那只大花猫 tomcat了。build à run  

但愿你没有遇到麻烦:-)