Struts WebWork简单示例
创始人
2024-04-16 21:01:51
0

用Struts开发都知道关于下载的Struts目录下都apps目录,这些都是例子,作为新手肯定把blank工程下的lib COPY 到自己工程的lib下。但初次接触到Webwork的目录,你也可能受到Struts目录结构的影响了。

直接找到(webwork2.2.4)lwebapps下,感觉目录结构比2.1.7要好很多(作为一个Struts人员来说).发现了blank工程,到webapps下一看,怎么没有lib。

打开blank/.classpath 打开,看到了具体的lib包,发现了原来lib都在webworks/lib下。终于看到了一个default的目录,一高兴,全部拷贝到自己lib下,不要以为这样就结束了。还要把webwork/下的webwork.jar拷贝到自己工程的lib下,具体原因为什么分开,有兴趣的还是去官方网站看看项目介绍把。

总结:配置环境来说不要以为是Struts老手就忽视察看Webwork文档的环境搭配。往往这比较容易吃亏,当自己做了一个小DEMO的时候才发现,lib下竟然少包。。还是从文档***页慢慢来的好。

DEMO开始

做小的Struts+WebWork德DEMO当然要从输入到输出结果比较好了。具体功能如下:就是一个值从一个页面传到另一个页面。

***步

老生常谈的web.xml

xml 代码

  1. ﹤filter﹥  
  2. ﹤filter-name﹥webwork﹤/filter-name﹥  
  3. ﹤filter-class﹥  
  4. com.opensymphony.webwork.dispatcher.FilterDispatcher  
  5. ﹤/filter-class﹥  
  6. ﹤/filter﹥  
  7. ﹤filter-mapping﹥  
  8. ﹤filter-name﹥webwork﹤/filter-name﹥  
  9. ﹤url-pattern﹥/*﹤/url-pattern﹥  
  10. ﹤/filter-mapping﹥  
  11. ﹤listener﹥  
  12. ﹤listener-class﹥  
  13. org.springframework.web.context.ContextLoaderListener  
  14. ﹤/listener-class﹥  
  15. ﹤/listener﹥ 

按照Struts思维,应该配置一个Servlet,但是看到WEBWORK2.2.4是filter取代了Servlet。这个是因为要支持AJAX,在2.1中还是Servelt。***的webwork ioc推荐的是spring 。所以Struts+WebWork中有了spring监听器的配置。

第二步

index.jsp

java 代码

凭着Struts经验想迅速体验下WW的标签。

ActionForm。

Webwork是怎样处理的呢,往下看。

第三步:

配置类似于struts-config.xml的文件。终于在ww的例子中WEB-INF/classes/目录下,找到了两个配置文件webwork.property和xwork.xml。有两个竟然。还是先看看xwork.xml把。一看如下:

xml 代码

  1. ﹤xwork﹥     
  2. ﹤include file="webwork-default.xml"/﹥     
  3. ﹤package name="default" extends="webwork-default"﹥     
  4. ﹤default-action-ref name="home" /﹥     
  5. ﹤action name="home"   
  6. class="com.opensymphony.webwork.example.HomeAction"﹥     
  7. ﹤result﹥/WEB-INF/pages/home.jspresult﹥     
  8. action﹥     
  9. ﹤/package﹥     
  10. ﹤/xwork﹥     

其实作为Struts+WebWork简单例子可以只要考虑的配置就好,和STRUTS怎么说也差不多(其实差的也不少了)但是这个name并不是Struts里的ActionForm。WW根本没有那个东西,这也是优势。这个name相当于struts里action标签里的path属性 class相当于type了,但是注意WW的name 是不能有/。。。但是如果Struts少了的话,就是致命的了。看来result和forward基本也一样了。

根据自己的程序xwork.xml如下:

xml 代码

  1. ﹤action name="test" class="  
  2. com.yuanfeng.web.action.Testaction"﹥     
  3. ﹤result name="success"﹥/WEB-INF/pages/result.jsp   
  4. ﹤/result﹥     
  5. ﹤action﹥﹤/action﹥  

要放到web-inf/classes下,其实就是必须放在classpath下。第四步:

来看看Testaction这个类

java 代码

  1. public class Testaction extends ActionSupport{  
  2. UserInfo userInfo;  
  3. public String execute() throws Exception {   
  4. System.out.println("UserInfo = "+userInfo.getUsername());  
  5. Map session = ActionContext.getContext().getSession();  
  6. session.put("user", userInfo);  
  7. return SUCCESS;  
  8. }  
  9. public UserInfo getUserInfo() {  
  10. return userInfo;  
  11. }  
  12. public void setUserInfo(UserInfo userInfo) {  
  13. this.userInfo = userInfo;  
  14. }  

UserInfo它其实就是包含用户信息的一个set/get方法的类,并没有像ActionForm依赖Struts。

这样处理的好处还是很多的。起码不用两个类似的对象互相转换了(bean To Form or From To bean)。

再看看execute方法。

OH YEAR终于没有那恶心的四大参数了,但怎么获取这些参数呢。

通过ActionContext类来获得。

PS:如果你少lib/下少包,现在倒入会有灾难性后果,classes被clear,你的配置文件都消失了。!

郁闷吧。还是把它们放到src下保险,Struts+WebWork简单Demo运行成功,得到了username。

【编辑推荐】

  1. WebWork框架原理与应用(1)
  2. 用WebWork注册页面建立过程
  3. WebWork注入Servlet方法详解
  4. 浅析Webwork与Spring整合
  5. WebWork文件上传实现浅析

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...