从Struts1.x->Webwork 总结(一)
关键字: WebworkStrtus做为老牌框架不多说了。使用的人真是多。本文章的目的是作为新手的我一篇总结。
主要用个简单的例子来讲解Struts-〉Webwork。
Struts jar包 vs Webwork jar包
用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开始
做小DEMO当然要从输入到输出结果比较好了。具体功能如下:就是一个值从一个页面传到另一个页面。
第一步
老生常谈的web.xml
- <filter>
- <filter-name>webwork</filter-name>
- <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>
- </filter>
- <filter-mapping>
- <filter-name>webwork</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
按照Struts思维,应该配置一个Servlet,但是看到WEBWORK2.2.4是filter取代了Servlet。这个是因为要支持AJAX,在2.1中还是Servelt。最新的webwork ioc推荐的是spring 。所以有了spring监听器的配置。
第二步
index.jsp
凭着Struts经验想迅速体验下WW的标签。看来和Struts输入的标签大同小异(其实到后来才知道我这是错误的想法)
看来看去是不是少了点什么。对少了ActionForm。。。Webwork是怎样处理的呢,往下看。
第三步:
终于想起来了,应该配置类似于struts-config.xml的文件。。。。终于在ww的例子中WEB-INF/classes/目录下,找到了两个配置文件webwork.property和xwork.xml。。。有两个竟然。还是先看看xwork.xml把。一看如下:
- >
- <xwork>
- <include file="webwork-default.xml"/>
- <package name="default" extends="webwork-default">
- <default-action-ref name="home" />
- <action name="home" class="com.opensymphony.webwork.example.HomeAction">
- <result>/WEB-INF/pages/home.jspresult>
- action>
- package>
- xwork>
大概能看懂,但是还是查文档吧。。其实作为简单例子可以只要考虑
根据自己的程序xwork.xml如下:
- <action name="test" class="com.yuanfeng.web.action.Testaction">
- <result name="success">/WEB-INF/pages/result.jsp
- </result>
配置文件放哪呢。。。。可不是web-inf下,而要放到web-inf/classes下,其实就是必须放在classpath下。但官方的例子给的是这样我只有照做了。但可怕的事情在以后会发生的。。。。。
第四步:
来看看Testaction这个类
- public class Testaction extends ActionSupport{
- UserInfo userInfo;
- public String execute() throws Exception {
- System.out.println("UserInfo = "+userInfo.getUsername());
- Map session = ActionContext.getContext().getSession();
- session.put("user", userInfo);
- return SUCCESS;
- }
- public UserInfo getUserInfo() {
- return userInfo;
- }
- public void setUserInfo(UserInfo userInfo) {
- this.userInfo = userInfo;
- }
- }
首先必须说明这段代码确实很糟糕,完全类似Struts写法,关于WW的许多优势都没有用到。现在来看看吧。终于见到了类似ActionForm的东西了。UserInfo它其实就是包含用户信息的一个set/get方法的类,并没有像ActionForm依赖Struts。这样处理的好处还是很多的。起码不用两个类似的对象互相转换了(bean To Form or From To bean)。再看看execute方法。OH YEAR终于没有那恶心的四大参数了,但怎么获取这些参数呢。通过ActionContext类来获得。但这样做法的缺陷是,怎样进行单元测试呢。看来我还没有摆脱Struts开发的思想啊。(更好的方法以后再说吧,先写完例子)
部署运行程序。
PS:如果你少lib/下少包,现在倒入会有灾难性后果,classes被clear,你的配置文件都消失了。!郁闷吧。还是把它们放到src下保险
运行成功,得到了username。
总结:程序完全按照Struts思路来的,缺陷很大,特别的Action的获取Session,这个问题引出了一系列的问题,推下一篇吧
- 浏览: 16430 次
- 性别:

- 来自: 大连

- 详细资料
搜索本博客
我的相册
共 1 张
最近加入圈子
最新评论
-
搜索引擎基础(Search Eng ...
我现在就是做网页抓取,把网上很多的信息给抓取分析成一条一条的信息,最主要的还是用 ...
-- by glamey -
创建一个SEO计划(一)
可以啊,楼主PM我你的联系方式咯。。呵呵
-- by 猫尾摆摆 -
创建一个SEO计划(一)
呵呵 我们也做SEO产品 有兴趣联系一下吧 。和我个人探讨也可以 没事 我不做广 ...
-- by 风雪涟漪 -
创建一个SEO计划(一)
曾经公司请了几个号称是香港某学院的专家来做seo培训,其实是来推销他们的产品。 ...
-- by 猫尾摆摆 -
创建一个SEO计划(一)
很奇怪。LZ为什么到这里来呢? 点石不是更好嘛?
-- by 卡拉阿风






评论排行榜