分享
 
 
 

快速创建Webapp

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

快速创建web app

-使用WebWork, jsp, 和Velocity创建一个登录页面

原文链接:http://www.Javaworld.com/javaworld/jw-03-2003/jw-0307-opensourceprofile.Html?

前言

WebWork是一个开源的Web应用程序架构,它可以简化Web应用的部署。我在这篇文章中将会向大家介绍WebWork的知识,其中会结合WebWork创建一个“登录页面”。附带的还会介绍其他两个不同的技术,JSP和Velocity。

作者 Erik Swenson

译者注:文中括号中的注释有些是我自己的理解,有些是因为翻译过程中直译过来觉得不太妥帖所以把原文也写了下来方便读者自己理解。有翻译的不对的地方或有什么技术上的问题可以发邮件给我,希望我的工作能够带给你帮助:)mail:wafd2003@yahoo.com.cn

Web应用程序的设计和部署非常麻烦而起耗费时间。不过,现在你可以通过使用一个“架构”来处理公共的Web应用部署任务以达到简化开发过程的目的。有很多的开源架构都可以做到这一点甚至能向你提供比更多的功能。其中最好的大概要数WebWork了,它是来自OpenSymphony 组织的一个开源项目。

WebWork最大的好处是他的简单易用。WebWork只有很少的API,开发人员可以很快的掌握它们。它提供了一个扩展性极好的集合,其中包括几种十分好用的页面显示技术比如JSP,Velocity,XSLT和JASPerReports。WebWork 项目有一群活跃的支持者他们中有开发人员,设计人员还有直接的用户。

注意:这篇文章所讲的是基于WebWork 1.3.0发布版。要想运行本文提供的例子,你需要在你的应用服务器创建一个webapp目录(如果是weblogic直接使用DefaultApp目录就可以了)然后把例子代码拷贝到这个目录下,再把运行程序所需要的.jar文件拷贝到WEB-INF/lib目录下。你可以从本文提供的资源链接中找到WebWork的下载地址。

动作(actions)

WebWork 中一个最重要的特性是Action接口。WebWork 的“动作”(actions)通过页面(或视图)与业务逻辑之间提供的映射关系来控制Web应用程序的流程。在WebWork中,forms(相当于html中的Form)被提交给一个action URI(相当于html中form的action) ;URI会映射一个相应的action;然后action会执行;接下来用户会链接到相应的页面。

下面的类,LoginAction是一个WebWork 动作(action)的例子,它处理web应用程序的登录窗体(form)。LoginAction 继承了ActionSupport,ActionSupport提供错误处理,视图映射和其他一些有用的功能:

import webwork.action.*;

public class LoginAction extends ActionSupport

{

private String userName;

private String passWord;

public String getPassword()

{

return password;

}

public String getUserName()

{

return userName;

}

public void setPassword(String password)

{

this.password = password;

}

public void setUserName(String userName)

{

this.userName = userName;

}

public String doExecute()

{

return SUCCESS;

}

public void doValidation()

{

if (userName == null userName.length() < 1) addError("UserName", "Please enter username.");

if (password == null password.length() < 1) addError("Password", "Please enter password.");

}

}

LoginAction 包含两个JavaBean 属性,password 和 username。WebWork从你的页面中根据这些属性获得数据(你的页面中必须对应的有这样的页面元素),然后自动分析传入action中的参数并据此设置属性的值。

LoginAction 从ActionSupport中重载了两个方法:doValidation() 和doExecute()。doValidation()方法的作用是校验参数,doExecute()方法的作用是指向用户到相应的页面。doExecute()方法返回一个String,如果所有的处理都没有问题的话通常这个String是一个常量“SUCCESS”,或者,如果处理过程出现问题的话这个String就是一个常量INPUT使用户返回到INPUT页面(就是你进入的那个页面)。在doValidation()方法中的addError方法是在出现问题的时候向用户显示错误并返回的INPUT页面。

页面映射(view mapping)

WebWork 的动作(actions)映射到页面(views)有两个途径:一个是通过Action.XML文件另一个是通过views.properties文件。每一个动作(actions)应该有一个INPUT页面(views)何以个SUCCESS页面(views)。下面的Action.xml文件定义了两个动作(actions),loginJSP和loginVelocity。两个动作(actions)使用同一个类LoginAction并且如果LoginAction返回SECCESS就把用户指向到success.html页面。如果LoginAction返回INPUT,就指向相应的INPUT页面,或者是login.jsp或者是login.vm:

<actions>

<action name="LoginAction" alias="loginJSP">

<view name="input">login.jsp</view>

<view name="success">success.html</view>

</action>

<action name="LoginAction" alias="loginVelocity">

<view name="input">login.vm</view>

<view name="success">success.html</view>

</action>

</actions>

页面(views)

尽管WebWork提供了对多种不同的显示技术的支持,但是多数情况下使用的是JSP和Velocity。下面是两种显示页面的例子一个使用JSP另一个使用了Velocity。每个页面都包含一个form,这个form中包含username和password字段,它们被提交给一个WebWork的action.

login.jsp页面使用WebWork标记库来创建和描述两个字段,通过一个错误(errors)集合来迭代。webwork:textfield 和webwork:password标记分别创建文本字段和密码字段,webwork:iterator标记迭代LoginAction返回的错误。webwork:property 标记设置username, password, 和 errors 字段的值:

<%@ taglib uri="webwork" prefix="webwork" %>

<html>

<head>

<title>WebWork JSP Example</title>

</head>

<body>

<form action="loginJSP.action" method="post">

<webwork:property>

<webwork:textfield label="'Name'" name="'userName'"/>

<webwork:password label="'Password'" name="'password'"/>

</webwork:property>

<input type="submit" value="Submit"/>

</form>

<webwork:iterator value="errors">

<br><webwork:property/>

</webwork:iterator>

</body>

</html>

login.vm 页面使用Velocity模板语言来描述字段并迭代错误。在Velocity中,$ 符号代表一个引用;!标记代表如果引用是null就什么也不显示;#标记代表一个命令。在下面的例子中,$!userName和$!password是LoginAction的username和password属性的引用;#foreach命令循环errors属性:

<html>

<head>

<title>WebWork Velocity Example</title>

</head>

<body>

<form action="loginVelocity.action" method="post">

<input type="text" name="userName" value="$!userName"/>

<input type="text" name="password" value="$!password"/>

<input type="submit" value="Submit"/>

</form>

#foreach ($error in $errors)

<br>$error

#end

</body>

</html>

运行

WebWork 是一个简单,可扩展的功能强大的开源Web应用架构。这篇文章介绍了WebWork 的基本功能。你可以访问OpenSympony 站点来获取有关WebWork 的更多的知识和下载WebWork 的最新版本。下载WebWork 之后再到Jakarta 站点查找Velocity的内容,Velocity是一个简单,快速的开源的模板引擎,他可以作为你的web页面中处JSP之外另一个很好的选择。

关于作者

Erik Swenson是Open Source Software Solutions开源组织的顾问和创始人。Swenson 专注与使用开源软件和组件来进行Java的部署。此外,他还开发了JaperEdit和OpenReports开源软件。

资源

下载本文的例子代码:

http://www.javaworld.com/javaworld/jw-03-2003/opensource/jw-0307-opensourceprofile.zip

从OpenSymphony站点下载 WebWork :

http://www.opensymphony.com/webwork/

Velocity 是 Apache Jakarta 项目的一部分你可以从这里下载:

http://jakarta.apache.org/velocity/index.html

"开始使用 Velocity模板引擎," Geir Magnusson Jr. (JavaWorld, December 2001):

http://www.javaworld.com/javaworld/jw-12-2001/jw-1228-velocity.html

其他开源的Web应用架构包括:Maverick:

http://mav.sourceforge.net

Struts:

http://jakarta.apache.org/struts/index.html

JasperReports 主页:

http://jasperreports.sourceforge.net

"使用JasperReports简单的实现报表功能," Erik Swenson (JavaWorld, September 2002):

http://www.javaworld.com/javaworld/jw-09-2002/jw-0920-opensourceprofile.html

查阅有关Erik Swenson的更多的开源羡慕:

http://www.javaworld.com/columns/jw-opensource-index.shtml

访问JavaWorld有关部署工具的讨论主题:

http://www.javaworld.com/channel_content/jw-tools-index.shtml

访问JavaWorld有关JSP的讨论主题::

http://www.javaworld.com/channel_content/jw-jsp-index.shtml

到 JavaWorld 论坛中讨论:

http://forums.devworld.com/webx?13@@.ee6b802

订阅JavaWorld's 每周的免费邮件信息:

http://www.javaworld.com/subscribe

你将在 IDG.net看到更多的有关IT技术的文章。进入讨论组讨论。

(出处:http://www.knowsky.com)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有