分享
 
 
 

一个使用snap的Web应用

王朝java/jsp·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

一个使用snap的Web应用

用WebWork, JSP, 和 Velocity建立一个登录页面

概述

WebWork是一个开放源代码Web应用框架。目的在于简化Web应用开发。这一栏目介绍了WebWork,并且解释了使用WebWork和两个不同的视图技术,JavaServerPages(JSP)和Velocity,进行的登录网页的创建过程。

Web应用程序和开发是复杂和费时的。但是,你能使用一个框架处理普通的Web应用程序开发任务,从而简化该过程。几种开放源代码Web应用程序框架能做这个而且做得更多。最好的一个是WebWork,一个来自于开放源代码项目的OpenSymphony组的Web应用程序框架。

WebWork最大的优势是它的简单和灵活。WebWork有一个小型的API。该API允许开发者立即启动和运行。WebWork提供许多属性和灵活的综合性能,包括:使用不同的视图技术,如JavaServerPages(JSP)、Velocity、可扩展性单语言转换说明(XSLT)、和JasperReports,的功能。

注意:本文是在WebWork 1.3.0发布的备选本2的基础之上的。为了运行提供的例子,你需要建立一个文件夹在你的应用程序服务器的webapps目录下,将例子复制到新文件夹中,并且从WebWork分布上复制需要的jar文件到WEB-INF/lib目录下。从Resources下载WebWork和本文所需的源代码。

Action

在WebWork中最重要的特征之一就是Action接口。WebWork Action提供在页面(或者视图)和企业逻辑之间的映射,从而控制一个Web应用程序的流程。在WebWork中,表单提交到一个Action URI(同一资源标记符);URI映射到一个相应的Action;执行该Action;这样用户前进到了恰当的视图。

接下来的类,LoginAction,是一个在基于Web的应用程序中处理登录表单的WebWork Action的例子。LoginAction由扩展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()函数返回一个字符串,如果处理成功的话,该字符串为常量SUCCESS;有问题的话,该字符串为常量INPUT,将用户送回到INPUT视图,并且在LoginAction中的doValidation()函数调用addError,表示出现了一个非法参数问题并将用户返回到INPUT视图。

视图映射

WebWork ACION用两种方法映射到视图:通过一个Action.xml文件或者一个views.properties文件。每个ACION应该有一个INPUT视图和一个SUCCESS视图。接下来的Action.xml文件定义了两个actions:loginJSP和loginVelocity。两个动作都使用LoginAction类,如果LoginAction返回SUCCESS的话,则带用户前进到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>

视图

WebWork为许多不同视图技术提供支持,最通用的使JSP和Velocity。下面的页是两个登录页例子——一个用JSP创建,另一个用Velocity创建。每页包含一个带有提交给一个WebWork动作的用户名和密码字段的表单。

login.jsp页使用WebWork标记库,创建和迭代了两个字段,并且通过收集错误重复迭代。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中,$符号表示一个引用;!符号告诉Velocity如果引用为空的话,什么都不显示;#符号表示一个指令。在接下来的例子中,$!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版本。当你下载完了以后,进入到Jakarta站点看一看Velocity,一个简单的、快速开放源代码临时引擎,它可是你的网页中JSP的备选项。

关于作者

Erik SwensonOpen Source Software Solutions的顾问和创始人。他精通使用开放源代码软件和组件进行Java开发,而且,他开发了JasperEdit和OpenReports开放源代码项目。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
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- 王朝網路 版權所有