MyEclipse8下struts2开发例程及解析1.docx
《MyEclipse8下struts2开发例程及解析1.docx》由会员分享,可在线阅读,更多相关《MyEclipse8下struts2开发例程及解析1.docx(9页珍藏版)》请在冰豆网上搜索。
MyEclipse8下struts2开发例程及解析1
MyEclipse8下struts2开发例程及解析
飞狼编程宝典
环境:
MyEclipseEnterpriseWorkbench Version:
8.0 Buildid:
8.0-20091120
Struts2版本:
2.1.8
MyEclipse8已经支持struts2,但是现有的资料包括书籍、视频、网络资料均很少有人介绍在MyEclipse8环境下的struts2开发,甚至包括MyEclipse8自带的帮助文件也是仅介绍其老版本MyEclipse6开发struts1.x的操作。
本人综合各方面资料,对MyEclipse8下的struts开发过程进行整理。
1.struts2环境搭建
这是MyEclipse老版本必须做的工作,包括如下3步:
(1)导入Struts2的jar文件(其中,开发一个Struts2至少需要包括:
struts2-core-2.x.x.jar:
Struts2框架核心类库
xwork-2.x.x.jar:
XWork类库,是Struts2的基础
ognl-2.x.x.jar:
对象图导航语言,用于读写对象属性
freemarker-2.x.x.jar:
struts2的UI标签的模板
commons-logging-1.1.x.jar:
ASF出的日志包,struts2使用它来支持Log4J和JDK的日志记录
commons-fileupload-1.x.x.jar:
文件上传组件,Struts2.1.6版本以上必须加入此文件
(2)编写Struts2的配置文件
(3)在web.xml中加入Struts2MVC框架启动配置
说了这么多,幸运的是,在MyEclipse8中,不需要手动做任何工作,就可以包括Struts2框架支持,步骤如下:
(1)创建一个webproject:
MyStruts2
(Myeclipse8.5,在New一个WebProject的时候提醒说:
"Compilercompliancelevelofproject**shouldbe*.*.Yourcurrentworkspacedefaultis6.0.Doyouwanttouseacustomsettingforyourproject?
",大概意思是说该项目的编译器版本是*.*(5.0),而workspace当前的默认版本是6.0,是否希望为当前的项目应用一个自定义的设置。
为了以后不再出现,可以点击此对话框的Openworkspacecompilersettings或者是依次点击Window→Java→Compiler,在右侧Compilercompliancelevel中设置为相应版本即可。
这里的编译器版本建议最好是跟你代码的版本对应,不然由于引用等问题会出现兼容性错误)
(2)为工程添加Struts2框架支持,在工程名MyStruts2上右击,选择“MyEclipse/AddStrutsCapabilities...”
(3)在弹出的对话框中选择,Struts2.1
(4)点击完成后,可以看到项目目录中多了Struts2CoreLibraries文件夹,同时src自动生成了struts.xml文件
生成了一个空的struts.xml文件:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.1//EN""http:
//struts.apache.org/dtds/struts-2.1.dtd">
此外:
Web-INF下的web.xml中多了以下几行(加入Struts2MVC框架启动配置):
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
*.action
<--注:
应该将*.action改为/*,才能支持struts2标签-->
此时,运行tomcat服务器,在浏览器中输入:
http:
//localhost:
8080/MyStruts2/,应该能够正确显示页面,表明添加Struts2后,没有引起冲突。
总结:
在MyEclipse8中对一个项目中添加struts2支持方法非常简单,只需要进行简单设置,不用手动创建配置文件。
2.struts2简单用例
示例内容:
添加一个action,在其中处理数据,并将结果在页面上进行显示。
2.1添加一个页面,用于跳转到的位置,如result.jsp,将页面放在WEB-INF/pages/目录下,是为了保证安全,不让用户直接输入网址进入。
2.2添加action,在struts.xml源文件中右击鼠标,选择MyEclipes/NewAction...
在新弹出的“NewAction”对话框里新建一个Package,如下图所示
说明:
其中Package的name,相当于java类中的package,而Namespace是一个路径,与Action名称一起组成action的路径,在页面输入时要添加Namespace的路径。
继续添加Action的Name,Class以及Results,如下图所示:
注意:
添加Results时,类型选默认,不能选redirect,否则action将不对给页面传参数。
当然,如果需要传参,也可以通过在路径后面添加参数的方法把参数带上(见传智播客struts2.1视频教程6),如/WEB-INF/pages/result.jsp?
name=${username}。
实际上,这一步修改了struts.xml文件,即帮我们添加了如下代码:
extends="struts-default">
/WEB-INF/pages/result.jsp
另外,上一步给我们添加了一个Output.java文件,包括OutputAction类
2.3添加代码逻辑操作,进入OutputAction类:
publicclassOutputActionextendsActionSupport{
privateStringMsg; //添加一个变量
publicStringgetMsg(){ //添加getter
returnMsg;
}
/**
*@return
*/
publicStringexecute(){
//TODOAuto-generatedmethodstub
Msg="results:
"+(10+20); //逻辑运算
returnSUCCESS;
}
2.4在result页面对msg进行显示
${msg} //EL表达式
说明:
EL表达式的变量名,要与Action中的getMsg函数名要对应(即将Msg变为msg),而与相关变量名不必保持对应,虽然我们通常这样做。
OK,大功告成!
在浏览器出输入:
http:
//localhost:
8080/MyStruts2/output.action
很不幸,出错了
还记得我们前面提到的Namespace的作用么?
哦,明白了
输入改为:
http:
//localhost:
8080/MyStruts2/mypath/output.action
如下,所示,看到了我们想要的结果
参考资料
1.传智播客struts2.1视频教程
2.《javaweb开发技术大全》
MyEclipse编译不了的解决办法:
这两天MyEclipse不编译了,无论怎么更改保存,classes目录下都是空的.
在网上找了很多文章,总结如下:
MyEclipse不编译解决1.确保project->buildautomatically已经被选上.
MyEclipse不编译解决2.如果选上了,也不好使,使用这一招:
project->clean..->选第2个cleanselectproject,勾上startbuildimmediatelly
MyEclipse不编译解决3.删除现在的项目,提前设置好编译文件输出路径,重新导入源文件,设置MyEclipse为保存时编译,然后在保存的时候就可以自动编译了
MyEclipse不编译解决4.如果项目里引了某个不用的jar包,而那个包又被你删了,就会出现不报错但怎么也编译不出来class文件的情况,可以把所有包都删除,然后一个一个的再引入(需要的),不要一下子把所有包都引入来,没用的可能会引起不良后果.
MyEclipse不编译解决5.想删掉某个class文件重新生成,删除class文件后,但classes目录下的文件夹被其它程序打开,比如TotalCommander。
此时编译也不会通过,在problems下可能会提示“con''tdeleteclasses……”。
关掉其它程序重新编译即可。
MyEclipse不编译解决6.还有种情况是remove掉JRESystemLibrary,重新导入即可编译。
但是什么原因导致的还不清楚。
MyEclipse不编译解决7.把buildpath中所有包都remove掉。
然后又addjars,addlibraries把需要的加进去,居然又开始编译了。
。
。
MyEclipse不编译解决8.project->properties->javabuildpath->source->.../WEB-INF/src的outputfolder不要默认,编辑让它指向../WEB-INF/classes
然后重新点击build工程即可自动编译。
我的问题出在这里,我把这个编译目录给误删了
MyEclipse不编译解决9.再就是最重要的要看工程下面是否缺少了work目录,由于CVS控制时不把work加如版本,所以checkout后没有这个目录,要手工加上有的工程就能自动编译了
最开始的时候,我只找到了前面7个方法,但是他们都没有解决我的问题.无意中我打开了"Problems"标签,发现里面说缺少work目录,手工加上,然后刷新项目就可以了.
最后两个是我在写这个总结的时候发现的.特别是第九条,对使用CVS进行版本控制的项目比较有用.
.classpath这个xml文件要仔细看
MyEclipse不编译的解决方案就是这些了,希望对你有帮助。