—— 在 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 (或更高版本)。
创建一个 web project:
点击file à new project;
选择categories 中的web,再选择projects中的 web application;
点击next.
如下图填写,这里的server也可以是netbeans绑定的 tomcat 6
点击next,然后再点击next 看到如下界面:
什么都不要选点击finish. 工程创建完毕,进入下一部分。
点击 tools à libraries
点击new library...
library name: struts2
library type : class library
点击ok
选择图中所示的struts2 java包
点击ok 回到主界面。右键点击libraries 然后选择add library...
点击add library 基本struts2的开发包已经导入完毕。
如图所示;单击web.xml 然后点击右侧的filters 单击add filter element
filter name: 可以任意填写 不过那一串长长的filter class 可不太容易记住。只可惜点开browse...之后也无法选择libraries里面的包,不能不说是一个遗憾。希望下一个版本的netbeans 会修正这一小小的不足。
filter name:struts2 filter;
filter class:org.apache.struts2.dispatcher.filterdispatcher
接下来就是mapping filter了,点击add...
如图填写,struts2 filter 要和上面的保持一致。url pattern里面填写 *.action 即可
事实上,在其他ide里面配置web.xml的时候,你可能要自己动手写xml(相信大多数程序员都很讨厌写又长又臭的xml. 而且稍微一出错,能把眼睛看痛)
以上的几步操作,netbeans为我们自动生成了以下代码,您也可以去看看。
现在你可以暂时不用管web.xml了。
struts.xml 可以说是整个struts2框架的中心。大多数配置错误也出现在struts.xml上。一个jsp页面提交后不是像传统的做法那样直接传给另一个页面,而是交由struts.xml进行处理。struts.xml调用后台action 类 进行处理后,决定转向那个页面.那么我们如何编写以及在哪里放置struts.xml呢?
我们要将struts.xml放置在source packages的default package包下。如图
给文件命名为struts
接下来点击struts.xml进行编写,之前我们要在xml文档的头部加入
<!doctype struts public
"-//apache software foundation//dtd struts configuration 2.0//en"
"http://struts.apache.org/dtds/struts-2.0.dtd">
把原来的<root></root>删除。换成<struts></struts> 输入”<p” 然后 按 ctrl+space
这个时候 netbeans已经完全认识了struts2(估计它们已经成为好伙伴了)。继续编写,如果你怕出错,或者不愿意太麻烦,按 ctrl+space. netbeans 6.1 会为你解决很多问题。(不得不说的是,netbean6.0以后的版本在代码完成方面有了一个很大的提高,速度和智能两方面都值得称赞)一路编写下来。以下是编好的代码:
<struts>
<package name="xhinker" extends="struts-default" >
<action name="hello" class="cn.xhinker.struts2.helloaction">
<result>/hellopage.jsp</result>
</action>
</package>
</struts>
文档中 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类。
如下填写:
让helloaction 继承actionsupport
package cn.xhinker.struts2;
import com.opensymphony.xwork2.actionsupport;
public class helloaction extends actionsupport...{
}
这个时候有人会问,我如何让netbeans 帮我override(重写)父类的方法啊?没有这样的按钮啊?不用找了。ctrl+space. 您要的重写的方法,八九不离十已经显示在你的面前了:
我们要的就是这个execute()方法。稍微改变一下代码如下所示:
public string execute() throws exception ...{
return this.success;
}
添加一个字符串变量msg 然后让netbeans 自动生成 setter 和 getter方法。如图在弹出的菜单中选择encapsulate field...即可
生成完毕,这个类就编好了,完整的代码为:
private string msg="hello world";
public string execute() throws exception ...{
}
public string getmsg() ...{
return msg;
public void setmsg(string msg) ...{
this.msg = msg;
进入下一部分。
在index.jsp中的body标签内加入<a href="hello.action">hello</a>
新建一个hello.jsp页面 添加如图所示的代码:
到此为止,你也该启动那只大花猫 tomcat了。build à run
但愿你没有遇到麻烦:-)