??xml version="1.0" encoding="utf-8" standalone="yes"?>av综合电影网站,九色综合日本,蜜桃视频在线网站http://www.aygfsteel.com/lijiajia418/category/14735.htmlVicent's blogzh-cnTue, 27 Feb 2007 12:25:19 GMTTue, 27 Feb 2007 12:25:19 GMT60WebWork教程QServletDispatcherhttp://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67077.htmlBinaryBinaryFri, 01 Sep 2006 05:41:00 GMThttp://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67077.htmlhttp://www.aygfsteel.com/lijiajia418/comments/67077.htmlhttp://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67077.html#Feedback0http://www.aygfsteel.com/lijiajia418/comments/commentRss/67077.htmlhttp://www.aygfsteel.com/lijiajia418/services/trackbacks/67077.html阅读全文

Binary 2006-09-01 13:41 发表评论
]]>
WebWork教程Qvalidatorhttp://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67076.htmlBinaryBinaryFri, 01 Sep 2006 05:40:00 GMThttp://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67076.htmlhttp://www.aygfsteel.com/lijiajia418/comments/67076.htmlhttp://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67076.html#Feedback0http://www.aygfsteel.com/lijiajia418/comments/commentRss/67076.htmlhttp://www.aygfsteel.com/lijiajia418/services/trackbacks/67076.html 验证框架
WebWork 提供了在 Action 执行之前Q对输入数据的验证功能,它用了其核?/span> XWork 的验证框架。提供了如下功能Q?/span>
1?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   可配|的验证文g。它的验证文件是一个独立的 XML 配置文gQ对验证的添加、修改只需更改配置文gQ无需~译M?/span> Class ?/span>
2?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   验证文g和被验证的对象完全解藕。验证对象是普通的 JavaBean 可以了Q可以是 FormBean 、域对象{)Q它们不需实现M额外的方法或l承额外的类?/span>
3?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   多种不同的验证方式。因为它验证功能是可以承的Q所以可以用多种不同的方式指定验证文Ӟ比如Q通过父类?/span> Action 、通过 Action 、通过 Action 的方法、通过 Action 所使用的对象,{等?/span>
4?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   强大的表辑ּ验证。它使用?/span> OGNL 的表辑ּ语言Q提供强大的表达式验证功能?/span>
5?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   同时支持服务器端和客L验证?/span>
为用h册添加验证功?/span>
下面我们来看看如何ؓ用户注册d验证功能Q?/span>
1?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   注册我们的验证类?/span>
WebWork Z同的验证要求提供不同的验证类型。一个验证类型,一般是有一个类来提供。这个类必须实现接口Q?/span> com.opensymphony.xwork.validator.Validator Q但我们在写自己的验证类型时Q无需直接实现 Validator 接口Q它有抽象类可供直接使用?/span> ValidatorSupport ?/span> FieldValidatorSupport {?/span>
验证cd在用之前,必须要在 ValidatorFactory Q?/span> com.opensymphony.xwork.validator . ValidatorFactory Q中 注册。可以有二种Ҏ实现验证cd的注册。一、写E序代码q行注册Q它使用 ValidatorFactory cȝ静态方法: registerValidator(String name, String className) ?/span> 二、用配|文?/span> validators.xml q行注册Q要求把文g validators.xml 攑ֈ ClassPath 的跟目录中( /WEB-INF/classes Q。但在实际开发中Q一般都使用W二中注册方法。我们的验证cd注册如下Q?/span>
<validators>
    <validator name="required" class="com.opensymphony.xwork.validator.validators.RequiredFieldValidator"/>
    <validator name="requiredstring" class="com.opensymphony.xwork.validator.validators.RequiredStringValidator"/>
    <validator name="int" class="com.opensymphony.xwork.validator.validators.IntRangeFieldValidator"/>
    <validator name="date" class="com.opensymphony.xwork.validator.validators.DateRangeFieldValidator"/>
    <validator name="expression" class="com.opensymphony.xwork.validator.validators.ExpressionValidator"/>
    <validator name="fieldexpression" class="com.opensymphony.xwork.validator.validators.FieldExpressionValidator"/>
    <validator name="email" class="com.opensymphony.xwork.validator.validators.EmailValidator"/>
    <validator name="url" class="com.opensymphony.xwork.validator.validators.URLValidator"/>
    <validator name="visitor" class="com.opensymphony.xwork.validator.validators.VisitorFieldValidator"/>
    <validator name="conversion" class="com.opensymphony.xwork.validator.validators.ConversionErrorFieldValidator"/>
    <validator name="stringlength" class="com.opensymphony.xwork.validator.validators.StringLengthFieldValidator"/>
</validators>
注册验证cd的配|文仉常简单。它使用标签 <validator > 提供名-值对的Ş式注册。这h们的验证文g可以直接引用它的名字?/span>
2?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   开?/span> Action 的验证功?/span>
  如果 Action 要用验证框架的验证功能Q它必须在配|文件中指定拦截器?/span> validation ”,它的定义如下Q?/span>
<interceptor name="validation" class="com.opensymphony.xwork.validator.ValidationInterceptor"/> ?/span>
我们的验证文件必M ActionName-validation.xml 格式命名Q它必须被放|到与这?/span> Action 相同的包中。你也可以ؓq个 Action 通过别名的方式指定验证文Ӟ它的命名格式为: ActionName-aliasname-validation.xml 。?/span> ActionName ”是我们 Action 的类名;?/span> aliasname ”是我们在配|文Ӟ xwork.xml Q中定义q个 Action 所用到的名U。这P同一?/span> Action c,在配|文件中的不同定义就可以对应不同的验证文件。验证框架也会根?/span> Action 的承结构去查找 Action 的父c验证文Ӟ如果扑ֈ它会L行这个父cȝ验证?/span>
 
3?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   实现我们的验证文Ӟ RegisterActionSupport-validation.xml
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.dtd">
<validators>
    <field name="user.username">
    <field-validator type="requiredstring">
            <message>You must enter a value for username.</message>
        </field-validator>
    </field>
    <field name="user.password">
    <field-validator type="requiredstring">
            <message>You must enter a value for password.</message>
        </field-validator>
        <field-validator type="fieldexpression">
            <param name="expression">user.password == verifyPassword</param>
            <message>Passwords don't match.</message>
        </field-validator>
    </field>
    <field name="user.email">
    <field-validator type="email">
            <message>You must enter a valid email.</message>
        </field-validator>
    </field>
    <field name="user.age">
    <field-validator type="int">
            <param name="min">6</param>
            <param name="max">100</param>
            <message>Age must be between ${min} and ${max}, current value is ${user.age}.</message>
        </field-validator>
    </field>
</validators>
说明Q?/span>
1 Q?/span> <field > 标签代表一个字D,它的属性?/span> name ”和面输入框的?/span> name ”属性必需完全一_其实它也是我们的表辑ּ语言?/span>
2 Q?/span> <field-validator > 标签定义我们的验证规则, type 属性的值就是就是我们前面定义的验证cd?/span>
3 Q、验证文件中Q字D늚数据是通过表达式语a从我们的值堆栈( OgnlValueStack Q中取得Q一般是 Action ?/span> Model 对象。例如:我们的字D?/span> user.age ”,它会通过 Action ?/span> getUser().getAge() 来取得用戯入的q龄Q再来根据验证的cd?/span> int ”和最大值最值的参数来判断输入的数据是否能通过验证?/span>
4 Q、不验证是否通过Q我们的 Action 都会执行Q但如果验证没有通过Q它不会调用 Action ?/span> execute() Ҏ?/span>
 
4?span style="FONT: 7pt 'Times New Roman'; font-size-adjust: none; font-stretch: normal">   Action 的验证错误信?/span>
如果用户输入的数据验证没有通过Q我们需重新q回输入面Qƈl出错误信息提示。拦截器栈?/span> validationWorkflowStack ”ؓ我们实现了这个功能。它首先验证用户输入的数据,如果验证没有通过不执行我们 Action ?/span> execute() ҎQ而是请求重新返回到输入面?/span>
我们?/span> xwork.xml 配置文g如下Q?/span>
<action name="registerSupport" class="example.register.RegisterActionSupport">
            <result name="success" type="dispatcher">
                <param name="location">/register-result.jsp</param>
            </result>
            <result name="input" type="dispatcher">
                <param name="location">/registerSupport.jsp</param>
            </result>
            <interceptor-ref name="validationWorkflowStack"/>
        </action>
 
通过接口 ValidationAware Q?/span> 我们可以获得cȝ别或字段U别的验证错误信息,q个错误信息也就是我们验证文件中 <message> 标签里的数据?/span> ActionSupport cd实现了此接口Q这样在应用中我们的 Action 只要l承 ActionSupport cd可以了?/span> RegisterActionSupport .java 代码如下Q?/span>
package example.register;
 
import com.opensymphony.xwork.ActionSupport;
 
public class RegisterActionSupport extends ActionSupport {
 
    private User user= new User();
    private String verifyPassword;
   
    public User getUser(){
        returnthis.user;
    }
   
    public String execute(){
        // 在这里调用用h册的业务逻辑Q比如:注册信息存储到数据?/span>
        return SUCCESS;
    }
 
    public String getVerifyPassword(){
        returnthis.verifyPassword;
    }
   
    publicvoid setVerifyPassword(String verPassword){
        this.verifyPassword = verPassword;
    }
}
我们 WebWork ?/span> UI 标签库直接提供了验证错误信息昄功能。如果字D别的验证没有通过Q它会在输入框上ҎC验证文件定义的错误提示信息。我们将用户输入的页面更改如下:
registerSupport.jsp
<%@ taglib uri="webwork" prefix="ww" %>
<html>
<head><title>Register Example</title></head>
<body>
<table border=0 width=97%>
<tr><td align="left">
    <ww:form name="'test'" action="'/example/registerSupport.action'" method="'POST'">
            <ww:textfield label="'Username'" name="'user.username'" required="true"/>
            <ww:textfield label="'Password'" name="'user.password'" required="true"/>
            <ww:textfield label="'VerifyPassword'" name="'verifyPassword'" required="true"/>
            <ww:textfield label="'Email'" name="'user.email'" required="true"/>
            <ww:textfield label="'Age'" name="'user.age'" required="true"/>
            <ww:submit value="'Submit'"/>
         </ww:form>
</td></tr>
</table>
</body>
</html>
我们上面的例子用的是服务器端验证?/span> WebWork 也ؓ我们提供了方便的客户端验证。它验证自动生?/span> JavaScript 脚本。如果要使用客户端验证只需改变相应的验证类型就可以了(输入面的表单必需使用 <ww:form> 标签Qƈ讄属性?/span> validate="true" ”)。具体的验证cd可以?/span> WebWork 的包 com.opensymphony.webwork.validators 中找到?/span>


Binary 2006-09-01 13:40 发表评论
]]>
WebWork教程- Interceptor(拦截?http://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67075.htmlBinaryBinaryFri, 01 Sep 2006 05:39:00 GMThttp://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67075.htmlhttp://www.aygfsteel.com/lijiajia418/comments/67075.htmlhttp://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67075.html#Feedback0http://www.aygfsteel.com/lijiajia418/comments/commentRss/67075.htmlhttp://www.aygfsteel.com/lijiajia418/services/trackbacks/67075.html阅读全文

Binary 2006-09-01 13:39 发表评论
]]>
WebWork介绍QAction?/title><link>http://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67074.html</link><dc:creator>Binary</dc:creator><author>Binary</author><pubDate>Fri, 01 Sep 2006 05:38:00 GMT</pubDate><guid>http://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67074.html</guid><wfw:comment>http://www.aygfsteel.com/lijiajia418/comments/67074.html</wfw:comment><comments>http://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67074.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/lijiajia418/comments/commentRss/67074.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/lijiajia418/services/trackbacks/67074.html</trackback:ping><description><![CDATA[     摘要: Action ? Action ? MVC 模式中担L刉分的角色 , ? WebWork 中用的最? , 用于接收面参数Qv到对 HttpRequest 判断处理作用。每个请求的动作都对应于一个相应的 ...  <a href='http://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67074.html'>阅读全文</a><img src ="http://www.aygfsteel.com/lijiajia418/aggbug/67074.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/lijiajia418/" target="_blank">Binary</a> 2006-09-01 13:38 <a href="http://www.aygfsteel.com/lijiajia418/archive/2006/09/01/67074.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">Ĭ</a>| <a href="http://" target="_blank">ԣ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">۷</a>| <a href="http://" target="_blank">ϲ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ҷ</a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˹</a>| <a href="http://" target="_blank">˳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ϫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ͻ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ӯ</a>| <a href="http://" target="_blank">ͨ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ƽ</a>| <a href="http://" target="_blank">ػ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">鴨</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ˮ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ԫ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>