Struts2框架及应用——主要组件---作业与要求.ppt_第1页
Struts2框架及应用——主要组件---作业与要求.ppt_第2页
Struts2框架及应用——主要组件---作业与要求.ppt_第3页
Struts2框架及应用——主要组件---作业与要求.ppt_第4页
Struts2框架及应用——主要组件---作业与要求.ppt_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、3、Struts2的拦截器,拦截器(Interceptor)是Struts2的核心组成部分。 拦截器动态拦截Action调用的对象,它提供了一种机制,使开发者可以定义一个特定的功能模块,这个模块可以在Action执行之前或者之后运行,也可以在一个Action执行之前阻止Action执行。 拦截器分为两类:Struts2提供的内建拦截器和用户自定义的拦截器。,Struts2拦截器的自定义实现,为了实现自定义拦截器,Struts2提供了Interceptor接口,以及对该接口实现的一个抽象拦截器类(AbstractInterceptor)。 实现拦截器类一般可以实现Interceptor接口,或者

2、直接继承AbstractInterceptor类。 Struts2还提供了一个MethodFilterIntercepter类,该类是AbstractInterceptor类的子类,需要实现的拦截器支持方法过滤性,就继承MethodFilterIntercepter。,用户自定义一个拦截器一般需要三步:,(1)自定义一个实现Interceptor接口 (或继承AbstractInterceptor 或继承MethodFilterIntercepter)的类。 (2)在struts.xml中注册上一步中定义的拦截器。 (3)在需要使用的Action中引用上述定义的拦截器。,1. 拦截器接口:In

3、terceptor Struts2提供的Interceptor接口(Interceptor.java)的代码如下: import com.opensymphony.xwork2.ActionInvocation; import java.io.Serializable; public interface Interceptor extends Serializable void destroy(); void init(); String intercept(ActionInvocation invocation) throws Exception; Intercept 方法是拦截器的核心方法

4、,实现具体的拦截操作,返回一个字符串作为逻辑视图。 与Action一样,如果拦截器能够成功调用Action,则Action中的execute()方法返回一个字符串类型值,作为逻辑视图,否则,返回开发者自定义的逻辑视图。,2. 抽象拦截器类:AbstractInterceptor 抽象拦截器类(AbstractInterceptor),是对接口Interceptor的一种实现,其中,init()和destroy()方法是空实现。 import com.opensymphony.xwork2.ActionInvocation; public abstract class AbstractInter

5、ceptor implements Interceptor public void init() public void destroy() public abstract String intercept(ActionInvocation invocation) throws Exception; ,3自定义拦截器: 实现接口Intercepter(或继承AbstractInterceptor),并在interceptor方法中加入有关的处理代码,其代码格式如下: package interceptor; public class MyInterceptor extends Abstract

6、Interceptor public String intercept(ActionInvocation invocation) throws Exception System.out.println(Before); /在Action之前调用 String result = invocation.invoke(); /* invocation.invoke()方法检查是否还有拦截器,若有,则继续调用余下的拦截器,若没有,则执行action的业务逻辑,并返回值*/ System.out.println(After); return result; ,4在Struts.xml中配置拦截器, /s

7、uccess.jsp /test.jsp ,5. 在interceptor方法中,利用参数ActionInvocation可获取页面提交的信息 public String intercept(ActionInvocation ai) throws Exception Map session = invocation.getInvocationContext().getSession(); if(session.get(user) = null) return login; else return ai.invoke(); ,案例:,开发一个网上论坛过滤系统,如果网友发表的有不文明的语言,将通过

8、拦截器对不文明的文字进行自动替代。只是给出了一种简单的过滤,过滤是否有“讨厌”文字,若有“讨厌”,则用“喜欢”代替要过滤的内容“讨厌”,形成新的文本内容并显示在论坛上。运行界面如图所示。,Struts2的输入验证,Struts2提供了安全的服务器验证方法: (1)一种是使用validate()方法, (2)另一种是配置验证(使用配置验证文件),1 使用validate()方法实现验证,validate()方法是专门用来验证数据的,实现的时候需要继承ActionSupport类,并重写validate()方法来完成输入验证 。,案例实现客户注册输入验证,使用validate()方法实现对注册页面

9、进行验证。注册页面如下图所示,若输入的数据验证成功,进入验证成功页面(该页面显示注册信息),否则,仍返回注册页面。,【分析】 对于该案例,根据Struts2的MVC设计思想,需要设计3部分组件: (1)模型组件: 注册用户的JavaBean:User.Java 实现注册信息添加到数据库的JavaBean:userDbase.java (2)Action控制器的设计:RegisterAction.java,在该控制器中有两个主要方法: public String register():实现注册 public void validate():实现注册前的信息验证 (3)设计视图: 注册页面(Reg

10、ist.jsp):按上图所示的页面设计 注册成功后,显示注册信息的页面:Success.jsp。,(3)编写业务控制器:RegisterAction.java: package Action; import Beans.User; import Beans.userDbase; import com.opensymphony.xwork2.ActionSupport; import java.util.regex.*; public class RegisterValidateAction extends ActionSupport private User user; private Str

11、ing userPwd; /省略了属性的Setter、Getter方法 public String register() throws Exception userDbase ud=new userDbase(); if(ud.addUser(user)=1) return success; else return error; ,public void validate() if(user.getUserName()=null |user.getUserName().length()=0) addFieldError(user.userName,用户名不能为空!); else String

12、f1=a-zA-Zw*; if(!Pattern.matches(f1,user.getUserName() addFieldError(user.userName,格式不正确!); ,if(user.getUserPwd().length()=0|user.getUserPwd()=null) addFieldError(user.userPwd,密码不能为空!); else if(user.getUserPwd().length()6) addFieldError(user.userPwd,密码长度不能小于6!); if(userPwd.length()=0|userPwd=null) a

13、ddFieldError(userPwd,确认密码不能为空!); else if(userPwd.equals(user.getUserPwd() addFieldError(userPwd,密码不一致!); if(user.getUserEmail().length()=0|user.getUserEmail()=null) addFieldError(user.userEmail,邮件地址不能为空!); else String f2=w+(-+.w+)*w+(-.w+)*.w+(-.w+)*; if(!Pattern.matches(f2,user.getUserEmail() addFi

14、eldError(user.userName,邮箱地址格式不正确!); ,(4)编写注册页面:ch12_5_Regist.jsp,其代码如下: 注册页面 bodyfont-size:12px; #titlecolor:#FF7B0B;font-size:20px;font-weight:bold; .tdheight:30px; .infocolor:#BBBBBB; function check(frm) if(frm.accept.checked=false) alert(您需要仔细阅读用户使用协议,并同意接受协议!); return false; return true; , 填写注册信

15、息 用户名:* 用户名由字母开头,后跟字母、数字或下划线! 密码:* 设置登录密码,至少6位! 确认密码:* 请再输入一次你的密码! 性别:* 请选择你的性别! 邮箱地址:* 请填写您的常用邮箱,可以用此邮箱找回密码! 基本情况:* 我已经仔细阅读并同意接受用户使用协议 ,(5)编写注册成功页面:Success.jsp: 校验成功 校验通过,用户信息如下: 用户名: 密码: 确认密码: 性别: 邮箱地址: 基本情况: ,(6)修改struts.xml配置Action,配置信息如下: /register.jsp /success.jsp ,2 使用验证文件实现验证,基于验证文件的输入验证方式,将

16、验证规则保存在特定的验证文件中 。 实现验证的要求: 1. 验证文件的命名规则 验证文件的命名规则是:Actio类名-validatin.xml。如果一个Action有多个逻辑处理方法,要为某个特定方法做验证,其命名规则是:Action类名-Action逻辑名-validatin.xml(其中,Action逻辑名,是指struts.xml中的对应该处理方法的action配置中的name值)。 例如:如果该校验器对应的Action类名为Register2Action,那么验证文件的名为Register2Action-validation.xml。该验证文件一般都是保存在与Action类相同的目录

17、下,这样对于不同的Action处理请求将会加载不同的校验文件。,2. 校验器 Struts2框架中提供了大量的内置校验器,在项目开发中,大部分校验功能都可以通过内置校验器来完成。 Struts2框架提供两种配置校验器的方式: 字段校验器配置风格 非字段校验器配置风格。,(1)字段校验器配置风格 如果使用字段校验器配置风格,校验文件以元素为基本元素,这个基本元素的name属性值为被校验的字段,该风格的格式: 参数值 校验失败提示的信息 . ,3常用的字段检验器 常用的字段校验器有: 必填校验器要求字段必须有值,校验字段是否为空 必填字符串校验器要求字段为一个非空字符串,并且长度需要大于0 字符串

18、长度校验器用于校验字段中字符串长度在指定的范围 整数校验器用于将要求被校验的整数在指定范围内,否则校验失败 日期校验器 邮件地址校验器 网址校验器 表达式校验器 字段表达式校验器,(1)必填检验器:required 要求字段必须有值,校验字段是否为空。 fieldName:指定校验字段的名称。 例如: 用户名不能为空! ,(2)必填字符串校验器:requiredstring 要求字段为一个非空字符串,并且长度需要大于0。 fieldName:指定校验字段的名称, trim:指定是否在校验之前对字符串进行整理,截取字符串前后空格,默认值为true。 例如: true 用户名不能为空! ,(3)整数校验器:int 用于将要求被校验的整数在指定范围内,否则校验失败。 fieldname:指定校验字段的名称; max:指定整数的最大值,可选项,不选为最大值不限制; min:指定整数的最小值,可选项,不选为最小值不限制。 例如: 1 100 年龄必须在1到100之间! ,(4)日期校验器:date 要求字段的日期值在指定的范围内。 fieldname:指定校验字段的名称; max:指定整数的最大值,可选项,不选为最大值不限制; min:指定整数的最小值,可选项,不选为最小值不限制。 例如: 必须是日期格式! 1900-01-01 2090-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论