博文

错误处理(2007-03-13 11:10:00)

摘要: 尽管Struts框架提供了有效的异常处理机制,但不能保证处理所有的错误,这时Struts框架会把错误抛给Web容器,在默认情况下Web容器会向用户浏览器直接返回原始信息。如果想避免直接让用户看到这些原始信息,可以在web.xml中配置<error-page>元素,以下代码演示了如何避免用户看到HTTP 404、HTTP 500错误和Exception异常。
web.xml:
  <error-page>
    <error-code>404</error-code>
    <location>/exception/error404.jsp</location>
  </error-page>
  <error-page>
    <error-code>500</error-code>
    <location>/exception/error500.jsp</location>
  </error-page>
  <error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/exception/default.jsp</location>
  </error-page>
当WEB容器捕获到exception-type或error-code指定的错误时将跳到由location指定的页面。
 问题:当form bean 为动态bean时,在action中无法对form bean数据进行验证,因为formbean没有具体实现类。action中无法引用
......

阅读全文(3129) | 评论:0

ActionServlet参数设置(2007-03-13 11:09:00)

摘要:The standard version of ActionServlet is configured based on the following servlet initialization parameters, which you will specify in the web application deployment descriptor (/WEB-INF/web.xml) for your application. Subclasses that specialize this servlet are free to define additional initialization parameters. Several of these were deprecated between the 1.0 and 1.1 releases. The deprecated parameters are listed after the nominal parameters.
标准ActionServlet在web.xml的初始化参数如下所示。
• config - Comma-separated list of context-relative path(s) to the XML resource(s) containing the configuration information for the default module. (Multiple files support since Struts 1.1) [/WEB-INF/struts-config.xml]. 指定strut配置信息文件
• 
• config/${module} - Comma-separated list of Context-relative path(s) to the XML resource(s) containing the configuration information for the module that will use the specified prefix (/${module}). This can be repeated as many times......

阅读全文(2664) | 评论:0

Validator 验证 - 其他(2007-03-13 11:08:00)

摘要:在struts1.2中要实现上述的两个字段比较功能可以用validwhen验证。方法如下: <form-validation>     <formset>         <form name="RegistrationForm">             <field property="emailAddress"                     depends="required,email">                 <arg key="prompt.emailAddress"/>             </field>             <field property="password"                     depends="required">                 <arg key="prompt.p......

阅读全文(2615) | 评论:0

Validator 验证 - 自定义验证(2007-03-13 11:07:00)

摘要:n  在struts1.1中创建一个自定义的验证,验证一个字段的值是否和另一个字段的值相等。 1.  创建一个包含一个实现规则接口的静态方法的类。 CunstomValidatorRules.java; package com.oreilly.strutsckbk.ch08;   import javax.servlet.http.HttpServletRequest;   import org.apache.commons.validator.Field; import org.apache.commons.validator.GenericValidator; import org.apache.commons.validator.ValidatorAction; import org.apache.commons.validator.util.ValidatorUtils; import org.apache.struts.action.ActionErrors; import org.apache.struts.validator.Resources;   public class CustomValidatorRules {         public static boolean validateTwoFields( Object bean,                                              ValidatorAction va,         &nbs......

阅读全文(5777) | 评论:6

Validator 验证 - 完整的举例(2007-03-13 11:04:00)

摘要:n   struts-config.xml:     <action       attribute="checkForm"       name="checkForm"       input="/validate/error.jsp"       path="/validate/check"       scope="request"       type="cn.rolia.struts.action.validate.CheckAction">       <forward name="success" path="/validate/success.jsp" />     </action>     <form-bean name="checkForm" type="org.apache.struts.validator.DynaValidatorForm">       <form-property name="zipCode" type="java.lang.String" />       <form-property name="province" type="java.lang.String" />       <form-property name="city" type="java.lang.String" />     </form-bean> n  CheckAction.ja......

阅读全文(2629) | 评论:0

Validator 验证 - 用正则表达式验证表单字段(2007-03-13 11:00:00)

摘要:mask验证规则提供了基于正则表达式的验证机制,如: <form name="ValidationTestForm">     <!-- Validate Social Security Number -->     <field property="ssn"             depends="required,mask">         <arg key="prompt.ssn"/>         <var>             <var-name>mask</var-name>             <var-value>^[0-9]{3}-[0-9]{2}-[0-9]{4}$</var-value>         </var>     </field> </form> 正则表达式使用通用符号描述并解析文本,使用它你可以验证数据是否符合指定的格式。 STRUTS框架通过mask验证规则使用正则表达式。可以在var元素中指定正则表达式。 <var>     <var-name>mask</var-name>     <var-value>^[0-9]{3}-[0-9]{2}-[0-9]{4}$</var-value> </var......

阅读全文(4961) | 评论:0

Validator 验证 - 配置(2007-03-13 10:58:00)

摘要:要使用Validator验证框架,首先必须在struts-config.xml中指定plug-in元素。 <plug-in className="org.apache.struts.validator.ValidatorPlugIn">     <set-property property="pathnames"                      value="/WEB-INF/validator-rules.xml,                             /WEB-INF/validation.xml"/> </plug-in>           
pathnames指定你要使用的Validator配置文件。可以设置一个或多个。第一个validator-rules.xml定义 各个验证规则,第二个validation.xml定义了验证框架如何应用到你的应用程序中去。 一个好的方法是为应用程序的每个功能模块定义一个validation.xml。一个大型的应用程序可能有一大堆这样的文件 要使用验证框架的form bean ,如果是硬编码的formbean则必须继承org.apache.struts.action.ValidatorForm。如果是动态formbean则必须是org.apache.struts.action.DynaValidatorForm或它的字类。 下面一个实例验证MyLoginForm表单的use......

阅读全文(2522) | 评论:0

Validator 验证 - 规则(2007-03-13 10:57:00)

摘要:对表单的验证有两种:语法验证和语义验证。语法有效是指数据必须有正确的格式,如数据只能包含数字,语义有效是指必须符合逻辑,如时间值不能是一个未来的时间。   struts1.2增添了许多新特征如:validwhen验证规则(validator)   一开始Struts是使用formbean的validate()方法进行验证的。有时候则是在Action中进行验证。通过validator框架你可以不需要通过硬编码的方式进行验证,它使你可以在一个XML中配置对表单的验证,这样做可以很灵活的添加修改删除验证,同时可以重复使用验证规则。你可以使用它在客户端进行基于javascript和服务器端的验证,你也可以自定义验证方法。   具体的验证规则如下: required Checks that a field value is non-null and not an empty string. requiredif Only available for Struts 1.1. This validator allows one field to be specified as required if another field is null, not null, or equal to a specified value. This validator is deprecated, in favor of validwhen, in releases after Struts 1.1. validwhen Designed to replace requiredif, this validator is available in releases after Struts 1.1. This validator relies on a user-specified test expression that can include references to other fields, field values, and logical relationships. minlength Checks that the number of characters in......

阅读全文(3206) | 评论:0

struts插件 plug-in(2007-03-13 10:45:00)

摘要:n   问题: 有时候你需要在应用程序启动时装载一些数据到程序上下文中或执行某些操作。 n   解决方法: 创建一个实现了org.apache.struts.action.PlugIn接口的类文件并在struts-config.xml中设置plug-in元素。以下代码片段显示了一个plug-in生命声明和一个自定义的set-property子元素: <plug-in className="com.oreilly.strutsckbk.CustomPlugin" >   <set-property property="customData"                    value="Hello from the plugin"/> </plug-in> n   细节讨论: Struts提供一个 PlugIn接口能使你在启动应用程序时为你提供自定义的操作。其源代码如下: package org.apache.struts.action;   import javax.servlet.ServletException; import org.apache.struts.config.ModuleConfig;   public interface PlugIn {     void destroy();     void init(ActionServlet servlet, ModuleConfig config)         throws ServletException; } 要实现一个plug-in,你只需要实现这个接口并在struts-config.xml文件的中声明plug-in元素。子类必须实现方法destroy()和init()。init()在ActionServlet启动时......

阅读全文(4798) | 评论:2

tiles标记库(2007-03-13 10:44:00)

摘要:参见《精通Struts基于MVC 的Java Web设计与开发.pdf》的16章。这里做些补充说明。 配置tiles插件 在 struts-config.xml里:  struts-config.xml:   <plug-in className="org.apache.struts.tiles.TilesPlugin">     <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml"/>   </plug-in>   模块化tiles 在特定的模块配置文件里定义一个tiles plugin时,这个tiles只应用于他所在的模块。命名方式可以是tiles-defs-module1.xml 在tiles定义文件里用到的路径必须是上下文相关的,而不是模块相关的。......

阅读全文(2021) | 评论:1