- 浏览: 2652207 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- 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 (7)
- 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)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
在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 3204这一节,我们要掌握的东西 webwork操作session w ... -
webwork2入门(一)
2007-03-15 15:53 2411本文采用一个用户注册的例子,起到一个最简单的webwok2 ... -
webwork2的测试
2007-03-15 14:26 3296webwork2分为webwork和xwork,通过webwo ...
相关推荐
WebWork入门与精通 WebWork是一个开源项目,由OpenSymphony组织开发,项目创始人是Rickard Oberg。WebWork是一个基于Java的Web应用程序框架,提供了一个灵活的架构,可以帮助开发者快速构建Web应用程序。 WebWork...
这个“webwork2入门例子”旨在帮助初学者理解并开始使用WebWork2框架。WebWork2提供了强大的动作映射、数据绑定、异常处理以及拦截器等功能,使得开发者可以更高效地构建Web应用。 首先,我们要了解WebWork2的核心...
2. **WebWork入门** - **框架起源**:WebWork是Struts2的前身,它的许多理念和设计被Struts2采纳。WebWork引入了拦截器、类型转换、数据绑定等概念,显著提升了开发效率。 - **Action与ActionForm**:在WebWork中...
本篇将围绕"WebWork入门学习"这一主题,深入讲解WebWork的核心概念、基本架构以及如何使用WebWork进行Web项目开发。 一、WebWork简介 WebWork由Apache软件基金会维护,其设计理念是通过减少样板代码和提供强大的...
快速入门章节为初学者提供了快速上手Webwork2的方法。首先,你需要下载WebWork2的最新版本,并将发行包中的`webwork-2.1.1.jar`及`lib\core\*.jar`文件复制到Web应用的`WEB-INF\lib`目录下。这一步骤确保了Web应用...
二、WebWork2快速入门 1. 安装配置:首先,需要在项目中引入WebWork2的依赖库,配置web.xml文件以启动WebWork2的Servlet。然后,创建一个基本的动作类,并在actions.xml文件中进行映射。 2. 创建第一个动作:创建...
WebWork 是一个基于Java的MVC(模型-视图-控制器)框架,它在Web应用程序开发中被广泛使用。WebWork 2.1是该框架的一个版本,...开发者可以通过这个压缩包快速入门,理解WebWork的工作原理,并运用到实际的项目开发中。
《WebWork入门到精通》这一课程由松迪科技(北京)有限公司的田雪松主讲,旨在全面解析WebWork框架,从基础知识到高级应用,帮助学员掌握WebWork的核心技术和实战技巧。 ### WebWork概述 WebWork是一个开源的MVC...
这个"WebWork入门教程[创建你第一个WebWork action]"将引导你了解如何利用WebWork来构建动态的Web应用程序。让我们深入探讨WebWork的核心概念、Action的创建以及如何实现基本的流程控制。 **WebWork核心概念** 1. ...
1. 入门指南:介绍如何安装和配置WebWork,以及创建第一个WebWork应用。 2. 深入理解:讲解Action、Interceptor、OGNL等核心组件的工作原理。 3. 实战示例:通过实际项目案例展示WebWork的应用场景和最佳实践。 4...
这个“WebWork入门例子 HelloWorld”是为初学者准备的一个简单教程,旨在帮助他们快速理解WebWork框架的基本概念和工作原理。 WebWork的核心特性包括动作映射、数据绑定、拦截器、异常处理和强大的视图渲染。它通过...
**WebWork 2.2 入门指南** WebWork 是一款基于 Java 的开源 Web 应用框架,它在 MVC(模型-视图-控制器)架构上构建,为开发者提供了强大的功能,包括动作映射、数据绑定、异常处理等。本文将深入浅出地介绍如何...
### WebWork2 教程详解 #### 一、引言 WebWork2 是一款轻量级的 Java Web 开发框架,它遵循 MVC (Model-View-Controller) 设计模式,旨在...希望本教程能帮助您快速入门 WebWork2,并在实际项目中灵活运用这些知识。
### WebWork快速入门知识点 #### 一、WebWork框架简介 **WebWork**是一个由OpenSymphony组织开发的Java Web应用框架,它采用MVC(Model-View-Controller)架构模式,强调组件化和代码重用。WebWork的最新版本为2.1...
以上是WebWork入门的基本内容,涵盖了WebWork的核心概念、安装、动作、ActionContext以及请求处理机制。继续深入学习,你可以探索更多高级特性,如拦截器(Interceptor)、国际化(i18n)、AOP(面向切面编程)等,...