2024年1月15日发(作者:)

MyEclipse8下struts2开发例程及解析

飞狼编程宝典

环境:MyEclipse Enterprise Workbench Version: 8.0 Build id: 8.0-20091120

Struts2版本:2.1.8

MyEclipse8 已经支持struts 2,但是现有的资料包括书籍、视频、网络资料均很少有人介绍在MyEclipse8 环境下的struts 2开发,甚至包括MyEclipse8 自带的帮助文件也是仅介绍其老版本MyEclipse6 开发struts 1.x的操作。本人综合各方面资料,对MyEclipse8 下的struts开发过程进行整理。

1. struts 2 环境搭建

这是MyEclipse老版本必须做的工作,包括如下3步:

(1)导入Struts2的jar文件(其中,开发一个Struts2至少需要包括:

:Struts2框架核心类库

:XWork类库,是Struts 2的基础

:对象图导航语言,用于读写对象属性

:struts 2的UI标签的模板

:ASF出的日志包,struts 2使用它来支持Log4J和JDK的日志记录

:文件上传组件,Struts 2.1.6版本以上必须加入此文件

(2)编写Struts2的配置文件

(3)在中加入Struts2 MVC框架启动配置

说了这么多,幸运的是,在MyEclipse8 中,不需要手动做任何工作,就可以包括Struts2框架支持,步骤如下:

(1)创建一个web project:MyStruts2

(Myeclipse 8.5,在New一个Web Project的时候提醒说:"Compiler compliance level of project

**should be *.*. Your current workspace default is 6.0. Do you want to use a custom setting for

your project?",大概意思是说该项目的编译器版本是*.*(5.0),而workspace当前的默认版本是6.0,是否希望为当前的项目应用一个自定义的设置。为了以后不再出现,可以点击此对话框的Open workspace

compiler settings或者是依次点击Window→Java→Compiler,在右侧Compiler compliance level中设置为相应版本即可。这里的编译器版本建议最好是跟你代码的版本对应,不然由于引用等问题会出现兼容性错误)

(2)为工程添加Struts2 框架支持,在工程名MyStruts2上右击,选择“MyEclipse/Add Struts Capabilities ...”

(3)在弹出的对话框中选择,Struts 2.1

(4)点击完成后,可以看到项目目录中多了Struts 2 Core Libraries文件夹,同时src自动生成了文件

生成了一个空的文件:

Struts Configuration 2.1//EN"

"/dtds/">

此外:Web-INF下的中多了以下几行(加入Struts2 MVC框架启动配置):

struts2

PrepareAndExecuteFilter

struts2

*.action

<-- 注:应该将*.action改为/*,才能支持struts2标签 -->

此时,运行tomcat服务器,在浏览器中输入:localhost:8080/MyStruts2/,应该能够正确显示页面,表明添加Struts 2后,没有引起冲突。

总结:在MyEclipse8中对一个项目中添加struts2支持方法非常简单,只需要进行简单设置,不用手动创建配置文件。

2. struts 2 简单用例

示例内容:添加一个action,在其中处理数据,并将结果在页面上进行显示。

2.1 添加一个页面,用于跳转到的位置,如,将页面放在WEB-INF/pages/目录下,是为了保证安全,不让用户直接输入网址进入。

2.2 添加action,在源文件中右击鼠标,选择MyEclipes/New Action ...

在新弹出的“New Action”对话框里新建一个Package,如下图所示

说明:其中Package的name,相当于java类中的package,而Namespace是一个路径,与Action名称一起组成action的路径,在页面输入时要添加Namespace的路径。

继续添加Action的Name,Class以及Results,如下图所示:

注意:添加Results时,类型选默认,不能选redirect,否则action将不对给页面传参数。当然,如果需要传参,也可以通过在路径后面添加参数的方法把参数带上(见传智播客struts2.1视频教程6),如/WEB-INF/pages/?name=${username}。

实际上,这一步修改了文件,即帮我们添加了如下代码:

extends="struts-default">

/WEB-INF/pages/

另外,上一步给我们添加了一个文件,包括OutputAction 类

2.3 添加代码逻辑操作,进入OutputAction类:

public class OutputAction extends ActionSupport {

private String Msg; // 添加一个变量

public String getMsg() { // 添加getter

return Msg;

}

/**

* @return

*/

public String execute() {

// TODO Auto-generated method stub

Msg = "results:" + (10 + 20); // 逻辑运算

return SUCCESS;

}

2.4 在result页面对msg进行显示

${msg } // EL表达式

说明:EL表达式的变量名,要与Action中的getMsg函数名要对应(即将Msg变为msg),而与相关变量名不必保持对应,虽然我们通常这样做。

OK,大功告成!在浏览器出输入:localhost:8080/MyStruts2/

很不幸,出错了

还记得我们前面提到的Namespace的作用么?哦,明白了

输入改为:localhost:8080/MyStruts2/mypath/

如下,所示,看到了我们想要的结果

参考资料

1. 传智播客struts2.1视频教程

2. 《java web 开发技术大全》

MyEclipse编译不了的解决办法:

这两天MyEclipse 不编译了,无论怎么更改保存, classes目录下都是空的.

在网上找了很多文章,总结如下:

MyEclipse不编译解决1. 确保 project->build automatically 已经被选上.

MyEclipse不编译解决2. 如果选上了,也不好使, 使用这一招: project->clean..->选第2个clean select project, 勾上start build immediatelly

MyEclipse不编译解决3.删除现在的项目,提前设置好编译文件输出路径,重新导入源文件,设置MyEclipse为保存时编译,然后在保存的时候就可以自动编译了

MyEclipse不编译解决4.如果项目里引了某个不用的jar包,而那个包又被你删了,就会出现不报错但怎么也编译不出来class文件的情况,可以把所有包都删除,然后一个一个的再引入(需要的),不要一下子把所有包都引入来,没用的可能会引起不良后果.

MyEclipse不编译解决5. 想删掉某个class文件重新生成,删除class文件后,但classes目录下的文件夹被其它程序打开,比如Total Commander。此时编译也不会通过,在problems下可能会提示“con''t delete classes ……”。关掉其它程序重新编译即可。

MyEclipse不编译解决6.还有种情况是remove掉 JRE System Library,重新导入即可编译。但是什么原因导致的还不清楚。

MyEclipse不编译解决7.把build path中所有包都remove掉。然后又add jars,add libraries把需要的加进去,居然又开始编译了。。。

MyEclipse不编译解决t->properties->java build path->source->.../WEB-INF/src的output folder不要默认,编辑让它指向../WEB-INF/classes

然后重新点击build工程即可自动编译。我的问题出在这里,我把这个编译目录给误删了

MyEclipse不编译解决9.再就是最重要的要看工程下面是否缺少了work目录,由于CVS控制时不把work加如版本,所以checkout后没有这个目录,要手工加上有的工程就能自动编译了

最开始的时候,我只找到了前面7个方法,但是他们都没有解决我的问题.无意中我打开了"Problems"标签,发现里面说缺少work目录,手工加上,然后刷新项目就可以了.

最后两个是我在写这个总结的时候发现的.特别是第九条,对使用CVS进行版本控制的项目比较有用.

.classpath这个xml文件要仔细看

MyEclipse不编译的解决方案就是这些了,希望对你有帮助。