- 浏览: 284262 次
- 性别:
- 来自: 湖南
文章分类
- 全部博客 (120)
- Struts 1.框架 (12)
- Spring框架 (9)
- hibernate框架 (6)
- web 综合 (15)
- Dwr (1)
- struts 2 (19)
- 设计模式 (0)
- lucene (6)
- oracle (3)
- linux (10)
- mysql (4)
- jquery (0)
- AJAX (1)
- javaScript (1)
- J2SE (4)
- IBATIS (3)
- JPA (1)
- Compass (3)
- 报表 (1)
- 任务调度 (1)
- tomcat (3)
- RMI (0)
- JMS (2)
- WebService (2)
- SOAP (0)
- XML (1)
- 多线程 (8)
- 缓存 (2)
- nginx (3)
- mongodb (1)
- ant打包 (0)
最新评论
-
iceman1952:
Hi 你觉得很好的那两三篇 百度文库的链接,能贴一下吗?
内网穿透&UDP打洞 -
ice86rain:
里面貌似没有用到Lucene
Struts2+Hibernate3.2+Spring2.5+Compass整合 -
sgq0085:
写得非常详细 好文章
JMS之ActiveMQ Linux下安装与应用实例 -
強顔歓笶:
JMS之ActiveMQ Linux下安装与应用实例 -
yixiandave:
forcer521 写道不指定所有子目录都在一起的话,这样用源 ...
linux下nginx稳定版1.6.2安装
输入验证的流程:
1. 类型转换器对请求参数执行类型转换,并把转换后的值赋给action的属性。
2. 如果在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext,
conversionError拦截器将异常信息添加到fileErrors里。不管类型转换是否出现异常
,都会进入第3步。
3. 系统通过反射技术先调用action的validateXxx()方法,Xxx为方法名。
4. 在调用action的validate()方法。
5. 经过上面4步 ,如果在系统中的fieldErrors存在错误信息(即存放错误信息的集合
的size大于0),系统自动将请求转发至名称为input的视图 。如果系统中的fieldErrors
没有任何错误信息,系统将执行action中的处理方法。
对于输入校验struts2提供了两种实现
@手工编写代码实现
@基于配置XML的实现
1.手工编写代码实现对action中所有方法输入校验
通过重写validate()方法实现,validate方法会验证所有与execute方法签名相同的方法,当某个数据验证失败时,我们应该调用addFieldError()方法网系统的fieldErrors添加校验失败信息(为了使用addFieldError()方法,action必须继承ActionSupport),如果系统的fieldErrors包含错误信息,struts2会将请求转发到名为input的result。在input视图中可以通过<s:fielderror/>显示失败信息。
public void validate() {//会对action中的所有方法校验 if(this.username==null || "".equals(this.username.trim())){ this.addFieldError("username", "用户名不能为空"); } if(this.mobile==null || "".equals(this.mobile.trim())){ this.addFieldError("mobile", "手机号不能为空"); }else{ if(!Pattern.compile("^1[358]\\d{9}$").matcher(this.mobile).matches()){ this.addFieldError("mobile", "手机号格式不正确"); } } }2.手工编写代码实现对action中指定方法输入校验
通过validateXxx()方法实现,validateXxx()会验证action中方法名为xxx的方法,其它的流程与“手工编写代码实现对action中全部方法输入校验”一致。
3 . 基于XML配置实现对action中的所有方法进行输入校验
使用基于XML配置方式实现校验时,Action也要继承ActionSupport,并且提供校验文件,检验文件和action类放在统一包下,文件的取名格式为ActionClassName-validation.xml ,其中ActionClassName为action的简单类名,-validate为固定写法。
ActionClassName-validate.xml的示意内容如下
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd"> <validators> <field name="username"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>用户名不能为空!</message> </field-validator> </field> <field name="mobile"> <field-validator type="requiredstring"> <message>手机号不能为空!</message> </field-validator> <field-validator type="regex"> <param name="expression"><![CDATA[^1[358]\d{9}$]]></param> <message>手机号格式不正确!</message> </field-validator> </field> </validators>
常用的校验器
<field-validator type="requiredstring"> <param name="trim">true</param> <message>用户名不能为空!</message> </field-validator> <field-validator type="requiredstring"> <message>手机号不能为空!</message> </field-validator> <field-validator type="regex"> <param name="expression"><![CDATA[^1[358]\d{9}$]]></param> <message>手机号格式不正确!</message> </field-validator> <field-validator type="required"> <message>性别不能为空!</message> </field-validator> <field-validator type="stringlength"> <param name="maxLength">10</param> <param name="minLength">5</param> <param name="trim">true</param> <message><![CDATA[产品名称应在5-10个字符之间]]></message> </field-validator> <field-validator type="email"> <message>电子邮件地址无效</message> </field-validator>
4 . 基于XML配置实现对action中的指定方法进行输入校验
如果只需对action中的某个方法进行进行校验,只需步骤3的基础上,把校验文件的取名应为:
ActionClassName-ActionName-validation.xml即可,但是这里的ActionName并不是struts中的配置的action名称(user_*)
而应该是路径中的action,如现在要访问useraction的add方法
http://localhost:8080/projectName/namespace/user_add.action
那么此时的actionName应是user_add
所以校验文件的名称应为UserAction-user_add-validation.xml。
5 . 基于XML校验的一些特性
5.1 :当为某个action提供了ActionClassName-validation.xml和ActionClassName-ActionName-validation.xml
两种规则的校验文件中,系统按下面顺序寻找校验文件,
1>ActionClassName-validation.xml
2>ActionClassName-ActionName-validation.xml
在系统寻找到某一校验文件时还会继续搜索后面的校验文件,当搜索到所有校验文件时,会把校验文件里的所有校验规则汇总
,然后全部应用于action方法的校验。如果两个校验文件中的规则冲突,则使用后面文件中的校验规则。
5.2 :当action继承了另一个action,父类的校验文件会被先搜到。
假设UserAction继承BaseAction
<action name="user" class="cn.action.UserAction" method="{1}">
</action>
访问上面的action,系统先搜索父类的校验文件:BaseAction-validation.xml,
BaseAction-user-validation.xml,接着搜索子类的校验文件:UserAction-validation.xml,
UserAction-user-validation.xml。应用于上面action的校验规则为这四个文件的总和。
发表评论
-
struts2中的异常处理
2010-07-22 17:23 1418Struts2 中的异常处理? 异常有几种类型: 1.意外的错 ... -
struts2 支持的下载以及如何动态生成excel表格文件
2010-07-15 23:35 4339struts2支持的下载 , 以及下载方法的实现方式 先说s ... -
struts2的token机制
2010-07-11 18:15 1829token机制:解决页面重复提交 struts2中的步骤: 1 ... -
struts2的ognl表达式
2010-07-11 16:59 924下面是本人写的关于og ... -
struts2的学习笔记+测试源代码
2010-07-11 15:05 2373学习struts2的测试代码 之前用的都是struts1 , ... -
struts2中的国际化问题
2010-07-11 14:54 1079国际化 1.全局范围的资源文件 在src目录下简历资源文 ... -
srtuts2的拦截器(interceptor)
2010-07-11 14:09 12001. 自定义的拦截器 ... -
struts2上传文件及多文件上传
2010-07-10 18:32 51261. struts2中的文件上传 ... -
struts2如何获取Request-Session-ServletContext-Response
2010-07-10 18:13 63581. 访问和添加request/session/applica ... -
stuts2的类型转换
2010-07-10 18:11 12061.自定义类型转换器 第一步:编写自定义的转换器类 imp ... -
struts2接收请求参数的原理解析
2010-07-10 18:09 1869接受请求参数的原理 在struts2中没有actionForm ... -
struts2动态方法(dynamic)调用的两种方式
2010-07-10 18:07 1651动态方法调用的两种方式 1 . 使用!+方法名调用指定方法 ... -
struts2常用的常量constant
2010-07-10 18:05 1540常用的常量配置 strut ... -
struts2属性注入+修改请求后缀
2010-07-10 18:00 14071. 属性注入 <action name=&quo ... -
struts2的视图类型+中文编码+在struts.xml配置中如何传递action中的属性值
2010-07-10 17:56 2424struts2是通过filter来初始化配置的,struts1 ... -
struts2的action是线程安全的,struts1的action不是线程安全的
2010-07-08 13:33 3928为什么struts2的action是线程安全的,struts1 ... -
struts2的工作流程
2010-07-08 13:22 1637struts2的工作流程 StrutsPrepareAnd ... -
struts2的优点
2010-07-04 20:14 32791.在软件设计上struts2没有像struts1那样跟ser ...
相关推荐
综上所述,Struts2的输入校验机制不仅支持基本的手动校验,还提供了高度可配置和扩展的验证框架,使得开发者能够根据应用的具体需求,灵活地实现各种校验逻辑,从而提升应用程序的质量和用户体验。
此外,Struts 2 还提供强大的拦截器机制,可以实现权限控制、数据校验等功能,确保论坛系统的安全性和稳定性。 接着,Hibernate 是一个对象关系映射(ORM)框架,它简化了数据库操作,将Java对象和数据库表之间的...
Struts2的校验框架是基于Apache Commons Validator库的,它允许开发者定义一系列的验证规则来检查用户的输入。这些规则可以是简单的数据类型检查,如非空、长度限制,也可以是复杂的业务逻辑校验。校验过程通常分为...
Struts2提供了内置的验证框架,基于XML配置或者注解实现。这个框架允许开发者定义一组规则来检查用户提交的数据,这些规则可以在Action类中应用。 2. **XML输入校验**: - **创建校验文件**:首先,你需要创建一...
Struts2提供了多种方式进行输入校验,包括Action级别校验、拦截器级别校验以及基于Validator框架的校验。 二、Action级别校验 Action级别校验是在Action类中定义校验逻辑,通常通过在Action类的属性上添加注解实现...
Struts2是一个基于MVC设计模式的Java web框架,它是在WebWork2的基础上发展起来的。与Struts1相比,Struts2具有显著的优势,包括更少的侵入性设计、支持AOP编程的拦截器、类型转换器、多样的表现层技术以及更灵活的...
在Struts2中,输入校验通常在控制器层执行,确保数据在进入业务逻辑之前符合预设的规则。 **Struts2的校验框架** Struts2提供了强大的验证框架,支持多种验证方式,包括基于注解的验证、XML配置的验证以及编程式...
总结,Struts2的输入校验机制提供了手动和自动两种方式,结合配置文件和内置校验器,能够实现灵活且强大的数据校验,有效地防止了非法数据的流入,提升了系统的安全性。在实际开发中,开发者可以根据业务需求选择...
struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...
Struts2提供了多种进行输入校验的方式,包括Action级别校验、Validator框架校验、拦截器校验以及使用JSR303/JSR349 Bean Validation标准。这些方法可以单独使用,也可以结合使用,以满足不同项目的需求。 1. Action...
Struts2通过配置文件(如struts.xml)来定义Action和结果页面的映射关系,以及拦截器的使用,提供了强大的拦截器机制用于实现日志、权限校验等功能。 其次,Spring框架是企业级应用的核心,它提供依赖注入(DI)和...
Struts2是一个基于MVC设计模式的Web应用框架,它通过拦截器栈来处理请求,实现了灵活的控制器。Struts2提供了丰富的内置拦截器,如异常处理、参数校验等,同时支持多种结果类型,如JSP、FreeMarker、Velocity等视图...
通过XML或注解配置,我们可以轻松地定义SQL语句,同时利用iBatis的动态SQL功能,实现灵活的数据验证和校验。 jQuery是一个JavaScript库,极大地简化了DOM操作、事件处理和AJAX通信。在登录注册系统中,jQuery AJAX...
Struts2的核心是拦截器链,它允许开发者自定义拦截器以实现特定的功能,如数据校验、登录检查等。此外,Struts2还支持多种视图技术,如JSP、FreeMarker等。 2. **Spring**:Spring是一个全面的后端开发框架,它的...
5. 实现输入验证,可以使用struts2内置的拦截器,如FieldAwareValidationInterceptor,或者自定义验证注解或XML配置。 6. 编写服务层方法,处理登录逻辑。 7. 根据登录结果,返回相应的视图,如登录成功页面...
Struts2提供了两种主要的验证方式:基于注解的验证和基于XML的验证。本例子主要关注XML形式的验证。 XML验证的优点在于其灵活性和可读性。开发者可以在Action类旁创建一个与Action类同名的.xml文件,比如Action类名...