- 浏览: 2602169 次
- 来自: 杭州
文章分类
- 全部博客 (1190)
- webwork (4)
- 网摘 (18)
- java (104)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (15)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (8)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
Aqu415:
,默认是netty还是hassion?
dubbo入门 -
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介
在web应用经常需要要对用户提交的表单进行验证
webwork有3种验证方式:
客户端验证
服务器端验证
Ajax验证:
下面来探讨最简单的服务器端验证
webwork通过实现com.opensymphony.xwork.Validateable 和 com.opensymphony.xwork.ValidationAware接口提供验证功能,通常我们不会自己去实现这两个接口,而是通过继承com.opensymphony.xwork.ActionSupport这个类。
来看我们Action的变化
java 代码
- package mypackage;
- import java.util.Map;
- import com.opensymphony.xwork.ActionContext;
- import com.opensymphony.xwork.ActionSupport;
- import com.opensymphony.xwork.Validateable;
- public class SimpleAction extends ActionSupport implements Validateable {
- private User user = new User();
- public String execute() throws Exception {
- ActionContext context = ActionContext.getContext();
- Map session = context.getSession();
- session.put("user", user);
- user.getMessage().add("msg1");
- user.getMessage().add("msg2");
- user.getMessage().add("msg3");
- return SUCCESS;
- }
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- public void validate() {
- if("java".equals(user.getUsername())){
- this.addFieldError("username", "username can't become java");
- }
- }
- }
如果我们的用户名为 java 的话就向客户端发送一段失败警告:
其中的addFieldError方法是从ActionSupport继承来的,第一个参数表示的是域(field)名,第二个参数表示的是出错信息.
一件奇怪的事是execute方法并没有显示调用validate方法,validate方法怎么运行,它总不可能自动运行吧
答案是通过拦截器
我们的xwork.xml将作如下变化:
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="simple" class="mypackage.SimpleAction">
- <result name="success" type="redirect">success.jsp</result>
- <result name="input">index.jsp</result>
- <interceptor-ref name="params" />
- <interceptor-ref name="validation"/>
- <interceptor-ref name="workflow"/>
- </action>
- </package>
- </xwork>
新增两个拦截器 validation 和 workflow,第一个拦截器增加了验证的功能,第二个拦截器会改变action拦截器的运行顺序,具体是:先执行 validate()方法,让后调用hasFieldErrors()方法检查是否有错误,如果有直接返回input,而不再执行余下的action.
index.jsp将会做如下变化
xml 代码
- <%@taglib prefix="ww" uri="/webwork" %>
- <html>
- <body>
- <div style="color: red"><ww:fielderror />div>
- <form action="simple.action">
- <input type="text" name="user.username"><br>
- <input type="password" name="user.password"><br>
- <input type="submit" value="submit">
- form>
- body>
- html>
增加一个捕获错误的标签:
- <ww:fielderror />
其余部分都不会变化
效果图:
评论
7 楼
lijie250
2007-05-02
我也觉得这个版块多搞点入门的东西,这个就不错,高手都是一个过程!!
6 楼
rainlife
2007-05-01
其实这些入门的文章,在官方提供的References里面都已经有了,只是很多是英文的,很少人愿意去看罢了,opendoc的webwork指南里面也存在与楼主类似的示例。
5 楼
san_yun
2007-05-01
4 楼
bluemn2000
2007-04-10
:D我也觉得很好,在这个网站浏览了这么久,这还是对我这个初学者来说能看得懂的为数不多的文章之一,我支持LZ!!
3 楼
dcheng
2007-04-10
对我们初学者来说,我觉得这个教程写的很不错,可以让我们很快的入门,高手可以写一些高级的东西,可以让我们站在你们的肩上:)
2 楼
san_yun
2007-03-26
我一直认为,学过的东西,不让它忘掉最好的办法就是把脑子里理解的东西再写出来,这是我自己给自己学的教程,如果上面的朋友知道的更多,何不写出来给我们这些初学者铺上一条红地毯
1 楼
kjhot
2007-03-22
应该弄些高级的东西,大家都知道的其实不用重复说来说去!
发表评论
-
JFace Text Editor完全掌握之终极指南(4)
2009-09-01 18:15 0错误标识(Error Marking) Error Marki ... -
clipse
2009-09-01 15:19 0JFace Text Editor是JFace里面一个功能强大 ... -
webwork2入门(二.1)
2007-03-21 17:43 3175这一节,我们要掌握的东西 webwork操作session w ... -
webwork2入门(一)
2007-03-15 15:53 2381本文采用一个用户注册的例子,起到一个最简单的webwok2 ... -
webwork2的测试
2007-03-15 14:26 3245webwork2分为webwork和xwork,通过webwo ...
相关推荐
非常好的Webwork2入门资料,OpenDoc出品
java 技术分享:WebWork入门与精通
1.Max-Struts2教程.rar(word文档) 2.struts2教程.chm 3.Struts2学习入门.pdf 4.webwork2开发指南.pdf
webwork2入门例子,包括最新jar包
WebWork2的详细配置,入门级别,对刚入门学习的朋友很有帮助
webwork2快速入门 高级特性 实例
附件包含一个新建WEB项目文档,与一个新建项目的例子。希望对初学WEBWORK都有帮忙。
Webwork入门 WebWork入门教程[创建你第一个WebWork action]
调试webwork(没有调试成功) 博文链接:https://lwfshr.iteye.com/blog/137548
WebWork入门例子 HelloWorld 包括相应的webwork相应的jar 希望对大家有用!!!
webwork2 开发指南,带例子,入门实例很好的教程。
WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的J2EE Web...WebWork目前最新版本是2.2.2,现在的WebWork2.x前身是Rickard Oberg开发的WebWork,但现在WebWork已经被拆分成了Xwork1和WebWork2两个项目。
书中通过大量的示范性实例(全书范例近百个),逐一、详细地讲解了Struts2各知识点的用法,并细致地讲解每个用法的各种参数、选项,可以帮助读者入门到精通。 3.配合案例,快速提高 《Struts 2.1权威指南》最后配备...
webwork工作原理作了清楚的讲述。画了重点,非常适合初学阅读时抓住重点。
第2章 Struts 2下的HelloWorld,第3章 Struts 2基础,第4章 深入Struts 2,第5章 Struts 2的类型转换,第6章 文件的上传和下载.,第7章 Struts 2的拦截器,第8章 Struts 2的输入校验,9.2 Struts 2的国际化入门,...
webwork+spring+hibernate入门实例,使用mysql数据库,建一个名为imti的数据库,把数据库文件导入数据库 把imti文件直接导入myeclipse
基于webWork的MVC电子书中第2章代码,适合struts2入门新手, 比较简单
软件介绍 Struts2其实并不是一个陌生的Web框架,Struts2是以Webwork的设计思想为核心,吸收了Struts1的优点,因此,可以认为Struts2是Struts1和Webwork结合的产物。 Struts2的使用人群逐渐增多,它在逐步吸引...
NULL 博文链接:https://sxpujs.iteye.com/blog/432871