`
风雪涟漪
  • 浏览: 506937 次
  • 性别: Icon_minigender_1
  • 来自: 大连->北京
博客专栏
952ab666-b589-3ca9-8be6-3772bb8d36d4
搜索引擎基础(Search...
浏览量:9009
Ae468720-c1b2-3218-bad0-65e2f3d5477e
SEO策略
浏览量:18385
社区版块
存档分类
最新评论

从Struts1.x->Webwork 总结(一)

阅读更多

Strtus做为老牌框架不多说了。使用的人真是多。本文章的目的是作为新手的我一篇总结。

主要用个简单的例子来讲解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

xml 代码
  1. <filter>  
  2.        <filter-name>webwork</filter-name>  
  3.        <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>  
  4.    </filter>  
  5.   
  6.    <filter-mapping>  
  7.        <filter-name>webwork</filter-name>  
  8.        <url-pattern>/*</url-pattern>  
  9.    </filter-mapping>  
  10.   
  11.    <listener>  
  12.        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  13.    </listener>  

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

第二步

index.jsp

java 代码

凭着Struts经验想迅速体验下WW的标签。看来和Struts输入的标签大同小异(其实到后来才知道我这是错误的想法)

看来看去是不是少了点什么。对少了ActionForm。。。Webwork是怎样处理的呢,往下看。

第三步:

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

xml 代码
  1. <!---->>  
  2.   
  3. <xwork>  
  4.     <include file="webwork-default.xml"/>  
  5.   
  6.     <package name="default" extends="webwork-default">  
  7.   
  8.         <default-action-ref name="home" />  
  9.   
  10.         <action name="home" class="com.opensymphony.webwork.example.HomeAction">  
  11.             <result>/WEB-INF/pages/home.jspresult>  
  12.         action>  
  13.   
  14.         <!---->  
  15.     package>  
  16. xwork>  

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

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

xml 代码
  1. <action name="test" class="com.yuanfeng.web.action.Testaction">  
  2.  <result name="success">/WEB-INF/pages/result.jsp
  3. </result>  
  4. <action></action>

配置文件放哪呢。。。。可不是web-inf下,而要放到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.     }   
  15.   
  16. }   

首先必须说明这段代码确实很糟糕,完全类似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,这个问题引出了一系列的问题,推下一篇吧

分享到:
评论

相关推荐

    【struts1.x-2.0】-jar包大全

    Struts是Java Web开发中的一个流行框架,分为Struts 1.x和Struts 2.0两个主要版本。这两个版本虽然都旨在简化MVC(模型-视图-控制器)架构的实现,但在设计和功能上有着显著的区别。下面将详细介绍这两个版本的核心...

    j2ee学习struts2.x总结1

    这个"j2ee学习struts2.x总结1"的主题着重于初学者如何理解和掌握Struts2的基础知识,以及如何进行环境搭建。下面将详细讨论相关知识点。 1. **Struts2简介**: Struts2是Apache软件基金会的一个项目,它是Struts1...

    Struts2基础教程

    Struts2是在Webwork的基础上构建的,与它的前辈Struts1.x相比,虽然在大版本号上相同,但在配置和使用上有显著区别。 在开始之前,确保你有以下环境: 1. 开发工具:MyEclipse6 2. Web服务器:Tomcat6 3. Struts2...

    Struts2教程

    - **安装Struts2**:与Struts1.x不同,Struts2的入口点是一个过滤器(Filter),而非Servlet。在`web.xml`中配置Struts2过滤器如下: ```xml &lt;filter&gt; &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;filter-class&gt;org....

    struts2_入门实例

    相较于Struts1.x,Struts2在设计和实现上有很大的改进,它实际上是基于Webwork框架构建的。在本入门实例中,我们将探讨如何使用Struts2创建一个简单的Web应用程序。 首先,我们需要确保具备正确的开发环境。在本...

    struts2学习笔记.doc

    - **Struts2概述**:Struts2是一个开源的MVC框架,它结合了Struts 1.x、WebWork和其他一些框架的优点。Struts2的主要目标是简化Web应用程序的开发过程。 - **Struts2的起源**:Struts2最初由WebWork和Struts1的核心...

    struts2简明参考

    **Struts2** 是一种基于Java EE的MVC框架,它继承了Struts 1.x的架构思想,并融合了WebWork框架的一些特性,使得Struts2不仅功能更加强大,而且更加灵活。Struts2支持多种开发模式,包括传统的ActionForm模式以及...

    struts2学习总结

    - `xwork-2.x.x.jar`:这个库源自 WebWork,它是 Struts2 的一个扩展。 - `ognl-2.x.x.jar`:用于处理对象图导航语言(Object Graph Navigation Language),在 Struts2 中用于访问属性,如 `#attr..`。 - `...

    Webwork教程

    - **Struts2**:基于WebWork和Struts1.x的优点而设计的新一代Web框架。 2. **特点对比:** - **WebWork**相较于**Struts1.x**提供了更为灵活的配置方式,支持更丰富的数据类型转换及验证机制,并且采用了拦截器...

    struts2教程

    Struts2在Struts1.x的基础上进行了改进,采用了WebWork框架的一些设计理念。它的MVC架构更加灵活,增强了类型安全性和异常处理能力。 五、Struts2的主要组件及作用 1. FilterDispatcher:作为新的中央控制器,是一...

    struts2课件

    **Struts2**是一种基于MVC架构模式的开源Java Web应用框架,它在WebWork的基础上发展起来,并吸收了Struts1的部分优势特性,形成了一种更为灵活且功能强大的解决方案。Struts2旨在帮助开发者更高效地构建高质量的Web...

    让Struts2 在NetBeans 6中安家

    它结合了WebWork和Struts1.x的优点,提供了更为简洁和高效的Web应用程序构建方式。然而,对于那些习惯于使用NetBeans作为开发环境的开发者来说,在NetBeans 6中直接集成Struts2框架可能并不像在其他IDE(如Eclipse)...

    freemarker总结

    &lt;table border=1&gt; &lt;tr&gt;&lt;th&gt;Name&lt;th&gt;Price &lt;#list animals as being&gt; &lt;tr&gt;&lt;td&gt;${being.name}&lt;td&gt;${being.price} Euros &lt;/#list&gt; &lt;/table&gt; 输出为: &lt;p&gt;We have these animals: &lt;table border=1&gt; ...

    WebWork教程.pdf

    4. **Struts1.1, Xml-Rpc, OpenSymphony**:WebWork与其他一些框架的集成也支持良好,例如Struts 1.x,Xml-Rpc等。 5. **ServletDispatcher**:ServletDispatcher是WebWork中的一个组件,负责处理Web请求并将它们...

    ajax在jsp、struts、servlet、webwork中的应用

    本文将探讨AJAX在JSP、Struts、Servlet、WebWork等不同框架中的应用方式,并通过一个示例来具体展示其实现过程。 #### 二、基础知识概述 1. **JSP(JavaServer Pages)**:是一种基于Java的服务器端技术,用于生成...

Global site tag (gtag.js) - Google Analytics