`
ahuaxuan
  • 浏览: 639598 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

让webwork零配置 第二章(实现)(实例已放出,大家可以下载运行)

阅读更多
/**
*作者:张荣华(ahuaxuan)
*2007-06-25
*转载请注明出处及作者
*/

让webwork零配置 第二章(实例已放出,大家可以下载运行)

又到周末了,平时没有时间,所以我的主要学习时间是放在周末,让大家久等了,上个周末说到webwork2零配置的第一章,很多人积极参与讨论,给出了很多有用的参考意见,在这里先谢谢大家,当然也有其他意见的也能理解,我想原因可能有以下几点:

1毕竟在公司里选择一个web层框架是一个重要重大的决定,很多人都是身不由己,这种经历我想大家都有过。

2正如抛出异常的爱所说,这是一个快餐型社会,很多人都比较喜欢吃快餐(现实生活中也是如此,从肯德鸡和麦当劳的红火的生意就可以看出来了),大家都比较喜欢立刻能看到效果的那种,而不是大篇赋的讲解。

3很多人对web框架没有兴趣,现在有那么多web框架,为什么要选easywebwork呢。

   其实扩展webwork2只不过是闲暇之余的一个消遣,或者说是一个兴趣(每个人都有自己的兴趣),并不是让观者去把它用在项目中(当然如果你乐意那么也可以),而是一种学习的过程,不是学习使用webwork2这个框架,而是学习框架背后所隐藏的思想,不是为了框架而框架,是为了学习而框架,webwork2中包含了很多设计模式,其代码风格等等都是可以学习的,当然我说的学习并不是单纯的模仿,我说的学习是:择其善者而从之,其不善者改之。因为我相信,webwork2的思想绝对在webwork2被实现之前就产生了。在这里我还要举个例子,之前我经常看到有人说struts(1.x系列)的代码如何烂如和糟糕,是这样的吗,绝对不是,我不是替struts辩护什么的,struts的代码没有什么糟糕不糟糕之说,不被大家称道的其实是struts框架背后的思想,正是这种思想导致了struts的不优雅,这才是正真的原因。

在重新考虑之后,我决定主要讲解原理,代码就不讲解了,因为吃大餐比较花时间,所以就改请大家吃快餐了。

附件是扩展后的webwork2的一个例子,在这个例子中,action中的方法都使用了annotation,而xwork.xml中的配置只有那些common的配置,明显改变了很少,而在action中,我们也能够一眼就看出来这个方法将要返回的页面,不需要再去xwork.xml中找了,呵呵。

     首先讲一下这个例子是作什么的,这是一个登陆的简单例子,登陆正确后就到一个编辑页面,登陆失败后回登陆页面并且显示失败信息。

让我们来看看改造后的webwork的配置是如何简单吧,以下是xwork.xml的配置

<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN"
    "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork>
      <include file="webwork-default.xml"/>
      <package name="default" extends="webwork-default">
        <action name="userAction" class="org.easy.test.action.UserAction"/>
      </package>
</xwork>


是的,一个action只有这么多配置,那么其他的配置去什么地方了呢,其他配置都搬到了action中了,让我们来看一下action中的片断:
@ResultListAnnotation(results = {
			@ResultAnnotation(name="SUCCESS", template="/editUser.htm"),
		    @ResultAnnotation(name="ERROR", template="/editUser.htm")})
	public String editUser(){
		System.out.println(name);
		return SUCCESS;
	}
	
	@ResultListAnnotation(results = {
			@ResultAnnotation(name="SUCCESS", template="/editUser.htm"),
			@ResultAnnotation(name="ERROR", template="/login.htm")})
		public String login(){
		if ("test".equalsIgnoreCase(name) && "test".equalsIgnoreCase(password)) {
			return SUCCESS;
		} else {
			errorMsg = "the name and password are not right!!";
			return ERROR;
		}
	}

就这么简单,和原来的使用基本没有什么区别,不同的就是把result的配置搬到类中,使用了annotation来实现(如果不理解请看第一篇文章),公共的配置放到xwork.xml中,而都有的配置,比如说result的配置就使用annotation来实现,这样有以下几个优点:

1, xwork.xml简化了非常之多,改造后,每个action只需要配置一行代码,假设你的项目中有50个action,那么只需要在xwork.xml加50行这样的配置就可以了,而没有改造之前的话,有多少代码就难以估计了。

2, 每一个action中的方法执行的返回结果都能一幕了然,根本无需再到xwork.xml中找result的定义了,维护起来也更方便了。试想有50个action的项目,然后又分了模块,有不同的xwork.xml,那么你要找到某个action的某个方法所返回的result那是多费力的一件事啊。

环境:

我在开发这个实例的时候使用的tomcat6.0和jdk6.0,而webwork使用的2.2.2的版本。
如果没有看过第一章的话最好也看一下

第一章的地址为:http://ahuaxuan.iteye.com/admin/show/91614

附件中附带扩展webwork2的源代码和可以执行的一个例子程序。

作者:张荣华,未经作者同意不得随意转载!
分享到:
评论
11 楼 lonelyblue 2007-11-01  
ahuaxuan 写道
jindw 写道

不过,感觉annotation也有一个不好的地方,修改一下配置必须从源代码开始。必须从新编译。

这个问题如果是在开发的时候就不是问题了,反而是一个优点,不需要重新加载配置文件,就能修改result。但是在部署之后如果要改动就是一个缺点了,因为必须要重新编译了
jindw 写道

我更倾向于通过他生成xml配置,部署的时候可以适当修改而不必改动源代码。

这个想法不错,开发的时候用annotation,清晰,直观,部署的时候用生成的xml。修改方便

想法确实很棒,开发的时候不用去配置XML,部署的时候生成XML,这样维护也方便。
10 楼 samy_3 2007-11-01  
干脆直接返回哪个模版文件好了:
return "login.ftl";
9 楼 gkm422 2007-09-27  
研究中,谢谢搂猪了,呵呵·~~
8 楼 fireflyc 2007-08-14  
我最近一直在开发一个新的web框架~最初的想法是以正则表示匹配URL,采用annotation做配置。但是现在我放弃了annotation~~因为采用这种方式就失去了配置文件的作用,你更改配置必须重新编译程序,更要命的是你在反射annotation的时候效率执行的效率非常的低~~。你可以试一下~。

还看到有朋友想设计REST风格的框架,和我的想法一样~~我以前也是想采用xwork,但是我后来也是放弃了~~原因也很简单~我如果采用正则表达式匹配URL,那么action里面最好的情况下是有参数的~而不是无参数的。这个我还在摸索中~~~
希望和更多的朋友交流一下~firefireflyc@126.com
7 楼 guocy 2007-07-20  
从礼貌上支持一下楼主,因为是新手,就不在关公面前耍大刀了,希望LZ多听听大家的意见,永远支持你!
6 楼 ahuaxuan 2007-07-03  
jindw 写道

不过,感觉annotation也有一个不好的地方,修改一下配置必须从源代码开始。必须从新编译。

这个问题如果是在开发的时候就不是问题了,反而是一个优点,不需要重新加载配置文件,就能修改result。但是在部署之后如果要改动就是一个缺点了,因为必须要重新编译了
jindw 写道

我更倾向于通过他生成xml配置,部署的时候可以适当修改而不必改动源代码。

这个想法不错,开发的时候用annotation,清晰,直观,部署的时候用生成的xml。修改方便
5 楼 jindw 2007-07-03  
atianchen 写道
不太赞成将转向的页面名称直接通过annotation标识在代码里面,这样做的弊病很多,如果项目很大,action类很多,直接把result标记在代码里维护量也一样少不了
特别是用如果页面部分采用了portal或则工作流驱动的页面生成,
不过各人有各人的用法,
同楼上,支持楼主一把


annotation我没用过,不过以前一直用xdoclet做代码和配置文件的生成,和你的观点相反。
我觉得更具相关性集中定义最大的好处就是维护体来方便,东西查找起来比较方便。同步修改比较方便。

不过,感觉annotation也有一个不好的地方,修改一下配置必须从源代码开始。必须从新编译。
我更倾向于通过他生成xml配置,部署的时候可以适当修改而不必改动源代码。
4 楼 atianchen 2007-07-02  
不太赞成将转向的页面名称直接通过annotation标识在代码里面,这样做的弊病很多,如果项目很大,action类很多,直接把result标记在代码里维护量也一样少不了
特别是用如果页面部分采用了portal或则工作流驱动的页面生成,
不过各人有各人的用法,
同楼上,支持楼主一把
3 楼 jindw 2007-07-02  
ahuaxuan 写道
。。。。
因为下一步我要做的就是基于xwork2.0做一个貌似于rest风格的mvc框架(如果我有时间的话)。另外我很不喜欢struts2.0,这个挂羊头卖狗肉的家伙,它包括了太多东西,很多人都反应它的慢,所以我根本就没有兴趣去学习它了


对于ww转向struts2这件事情,心里真有点不是滋味。
以前也有类似的想法,只是被JSI缠身,所有的事情都被迫放下了,楼主好好干吧,口头上支持一把。
2 楼 ahuaxuan 2007-06-25  
yingqing 写道
http://struts.apache.org/2.x/docs/result-annotation.html
struts2的标准用法

这个是struts2的标准用法吗,之前人们给出的例子都是没有这样用的,所以我才去扩展,不过看来思想都是一样的,只是手段不一样,我之所以去扩展是为了学习和研究xwork,因为下一步我要做的就是基于xwork2.0做一个貌似于rest风格的mvc框架(如果我有时间的话)。另外我很不喜欢struts2.0,这个挂羊头卖狗肉的家伙,它包括了太多东西,很多人都反应它的慢,所以我根本就没有兴趣去学习它了
很多问题第一章已经有过讨论了。
http://ahuaxuan.iteye.com/admin/show/91614

再次声明:本文的主要目的在于学习和研究,关键是你能否提出你的想法
1,提出想法
2,实现想法

1 楼 yingqing 2007-06-25  
http://struts.apache.org/2.x/docs/result-annotation.html
struts2的标准用法

相关推荐

    webwork简单实例

    WebWork是一个基于Java的MVC(Model-View-Controller)框架,它被...通过实践,你可以进一步学习如何处理用户请求、如何实现数据绑定以及如何利用WebWork的拦截器(Interceptor)和类型转换器(TypeConverter)等功能。

    webwork实例.zip

    包括webwork2.x的 具体使用步骤,见解压后“webwork使用步骤.txt” 和一个实现前后台连通的webwork具体应用的“test” 实例,将test导入eclipse的工作空间,即可正常运行

    webwork+spring+ibatis很适合初学者的实例

    6. **WebWork配置**:配置web.xml,设置过滤器和监听器,指定WebWork的配置文件路径。 7. **动作类和控制器**:编写WebWork的动作类,实现业务逻辑,并通过Spring的@Autowired注解注入依赖。 8. **数据库操作**:...

    webwork+spring+hibernate入门实例

    WebWork是Apache Struts的第二代版本,它提供了一种模型-视图-控制器(MVC)架构,用于构建可维护的、可扩展的Web应用程序。WebWork的核心特性包括强大的动作调度、拦截器机制、强大的表单处理以及强大的异常处理。...

    webwork2实例源代码

    通过学习和研究这个WebWork2实例源代码,你可以深入了解J2EE应用的开发模式,熟悉MVC架构的实现,以及掌握如何利用WebWork2的特性来构建高效、可维护的Java Web应用。同时,这也是提升你对验证框架、依赖注入和拦截...

    WebWork2配置

    在这个“WebWork2配置”主题中,我们将深入探讨如何设置和优化WebWork2框架,以便在你的项目中实现高效且可维护的代码。 首先,WebWork2的配置主要涉及到以下几个方面: 1. **web.xml配置**:这是所有Java Web应用...

    webwork源码底层实现

    通过分析`webwork-default.xml`,你可以掌握配置文件的结构和配置项的作用,这对于定制和扩展WebWork框架至关重要。 WebWork虽然现在已经被Struts2和Spring MVC等更现代的框架取代,但其设计理念和实现方式对于理解...

    webwork+spring+ibatis简单实例

    9. **部署运行**:最后,将项目打包成WAR文件,部署到Tomcat或其他Servlet容器,即可运行并测试这个实例。 通过这个实例,开发者可以学习到如何在实际项目中结合使用这三个框架,理解它们各自的角色以及如何协同...

    webwork 配置文件

    在实际应用中,通过灵活地配置这两个文件,开发者可以实现对应用程序的精细控制,包括但不限于URL路由、权限管理、错误处理和业务逻辑的组织。理解并熟练掌握这些配置,对于优化WebWork应用的性能和可维护性至关重要...

    spring+hibernate+webwork相关配置

    WebWork和Spring结合使用时,可以通过Spring管理WebWork中的Action实例,实现更好的依赖注入。 在配置这三个框架时,通常会涉及以下步骤: 1. **引入JAR包**:从描述中提到的“jar包截图”可以推断,配置过程中...

    webwork

    1. **动作映射**:WebWork通过XML配置文件定义动作(Action)与URL之间的映射,这使得URL可以直接对应到特定的业务处理方法,简化了请求路由。 2. **强大的表单绑定**:WebWork支持将HTTP请求参数自动绑定到Action...

    webwork简单实例及说明

    WebWork需要在Web容器(例如Tomcat)中运行,因此确保已正确安装和配置了Web容器。 在Web容器中使用WebWork,需要将WebWork的jar包添加到ClassPath,这通常意味着将`webwork-2.x.jar`和`lib\core`目录下的所有jar...

    webwork登录的实例

    这个实例是关于如何在WebWork框架下实现用户登录功能的。 首先,我们需要了解WebWork的核心概念。WebWork的核心思想是将业务逻辑、数据模型和用户界面进行解耦,通过Action(控制器)、Model(模型)和JSP(视图)...

    webwork的上传和下载的Demo

    7. **用户体验**:为了让用户知道文件上传或下载的状态,可以使用AJAX或者WebWork的异步更新功能来显示进度条或状态提示。 8. **性能优化**:对于大量文件操作,可以考虑使用多线程处理,或者采用流式读写减少内存...

    Webwork+spring+hibernate集成实例

    Webwork提供了强大的拦截器(Interceptor)机制,可以实现如权限控制、日志记录等功能,增强了框架的可扩展性。同时,Webwork的表单验证和国际化支持也使得前端展示更加灵活。 Spring作为一款全面的后端框架,其...

    webwork-1.4-src.zip_webwork_webwork s_webwork.zip_webwork1.4.zip

    4. **异常处理**:WebWork提供了统一的异常处理机制,可以捕获并处理运行时的异常,同时提供了友好的错误页面展示,增强了用户体验。 5. **国际化支持**:WebWork1.4内置了对多语言的支持,通过资源包可以轻松实现...

    webwork-2.2.5源码包下载.txt

    可以选择一个简单的项目作为起点,亲自动手实现一个完整的Web应用程序,以此来加深对WebWork框架的理解。 #### 六、总结 WebWork-2.2.5作为一款成熟的Java Web开发框架,不仅提供了丰富的功能,而且拥有稳定的性能...

    webwork spring hibernate整合实例源代码

    这个实例源代码包含了上述所有配置和实现,下载后直接发布运行,可以帮助开发者快速理解并掌握WebWork、Spring和Hibernate的整合使用。如果在运行过程中遇到问题,可以联系提供的联系方式获取帮助。通过学习这个实例...

    webwork配置详解

    ActionContext可以存储临时数据,这些数据在Action执行期间可被多个拦截器和Action实例访问。其中,ServletActionContext是WebWork与Servlet环境交互的接口,它实现了对HttpServletRequest和HttpServletResponse的...

    WebWork2配置.pdf

    WebWork2的应用配置主要通过以下几个文件实现: 1. **`Web.xml`**:这是Web应用的核心配置文件,位于`/WEB-INF/`目录下,用于定义整个Web应用的关键信息,包括但不限于Servlet的配置信息。对于WebWork2来说,它主要...

Global site tag (gtag.js) - Google Analytics