




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
3 Struts2的拦截器 拦截器 Interceptor 是Struts2的核心组成部分 拦截器动态拦截Action调用的对象 它提供了一种机制 使开发者可以定义一个特定的功能模块 这个模块可以在Action执行之前或者之后运行 也可以在一个Action执行之前阻止Action执行 拦截器分为两类 Struts2提供的内建拦截器和用户自定义的拦截器 Struts2拦截器的自定义实现 为了实现自定义拦截器 Struts2提供了Interceptor接口 以及对该接口实现的一个抽象拦截器类 AbstractInterceptor 实现拦截器类一般可以实现Interceptor接口 或者直接继承AbstractInterceptor类 Struts2还提供了一个MethodFilterIntercepter类 该类是AbstractInterceptor类的子类 需要实现的拦截器支持方法过滤性 就继承MethodFilterIntercepter 用户自定义一个拦截器一般需要三步 1 自定义一个实现Interceptor接口 或继承AbstractInterceptor或继承MethodFilterIntercepter 的类 2 在struts xml中注册上一步中定义的拦截器 3 在需要使用的Action中引用上述定义的拦截器 1 拦截器接口 InterceptorStruts2提供的Interceptor接口 Interceptor java 的代码如下 importcom opensymphony xwork2 ActionInvocation importjava io Serializable publicinterfaceInterceptorextendsSerializable voiddestroy voidinit Stringintercept ActionInvocationinvocation throwsException Intercept方法是拦截器的核心方法 实现具体的拦截操作 返回一个字符串作为逻辑视图 与Action一样 如果拦截器能够成功调用Action 则Action中的execute 方法返回一个字符串类型值 作为逻辑视图 否则 返回开发者自定义的逻辑视图 2 抽象拦截器类 AbstractInterceptor抽象拦截器类 AbstractInterceptor 是对接口Interceptor的一种实现 其中 init 和destroy 方法是空实现 importcom opensymphony xwork2 ActionInvocation publicabstractclassAbstractInterceptorimplementsInterceptor publicvoidinit publicvoiddestroy publicabstractStringintercept ActionInvocationinvocation throwsException 3 自定义拦截器 实现接口Intercepter 或继承AbstractInterceptor 并在interceptor方法中加入有关的处理代码 其代码格式如下 packageinterceptor publicclassMyInterceptorextendsAbstractInterceptor publicStringintercept ActionInvocationinvocation throwsException System out println Before 在Action之前调用Stringresult invocation invoke invocation invoke 方法检查是否还有拦截器 若有 则继续调用余下的拦截器 若没有 则执行action的业务逻辑 并返回值 System out println After returnresult 4 在Struts xml中配置拦截器 success jsp test jsp 5 在interceptor方法中 利用参数ActionInvocation可获取页面提交的信息publicStringintercept ActionInvocationai throwsException Mapsession invocation getInvocationContext getSession if session get user null return login else returnai invoke 案例 开发一个网上论坛过滤系统 如果网友发表的有不文明的语言 将通过拦截器对不文明的文字进行自动替代 只是给出了一种简单的过滤 过滤是否有 讨厌 文字 若有 讨厌 则用 喜欢 代替要过滤的内容 讨厌 形成新的文本内容并显示在论坛上 运行界面如图所示 Struts2的输入验证 Struts2提供了安全的服务器验证方法 1 一种是使用validate 方法 2 另一种是配置验证 使用配置验证文件 1使用validate 方法实现验证 validate 方法是专门用来验证数据的 实现的时候需要继承ActionSupport类 并重写validate 方法来完成输入验证 案例 实现客户注册输入验证 使用validate 方法实现对注册页面进行验证 注册页面如下图所示 若输入的数据验证成功 进入验证成功页面 该页面显示注册信息 否则 仍返回注册页面 分析 对于该案例 根据Struts2的MVC设计思想 需要设计3部分组件 1 模型组件 注册用户的JavaBean User Java实现注册信息添加到数据库的JavaBean userDbase java 2 Action控制器的设计 RegisterAction java 在该控制器中有两个主要方法 publicStringregister 实现注册publicvoidvalidate 实现注册前的信息验证 3 设计视图 注册页面 Regist jsp 按上图所示的页面设计注册成功后 显示注册信息的页面 Success jsp 3 编写业务控制器 RegisterAction java packageAction importBeans User importBeans userDbase importcom opensymphony xwork2 ActionSupport importjava util regex publicclassRegisterValidateActionextendsActionSupport privateUseruser privateStringuserPwd 省略了属性的Setter Getter方法publicStringregister throwsException userDbaseud newuserDbase if ud addUser user 1 return success elsereturn error publicvoidvalidate if user getUserName null user getUserName length 0 addFieldError user userName 用户名不能为空 else Stringf1 a zA Z w 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 addFieldError userPwd 确认密码不能为空 else if userPwd equals user getUserPwd addFieldError userPwd 密码不一致 if user getUserEmail length 0 user getUserEmail null addFieldError user userEmail 邮件地址不能为空 else Stringf2 w w w w w w if Pattern matches f2 user getUserEmail addFieldError user userName 邮箱地址格式不正确 4 编写注册页面 ch12 5 Regist jsp 其代码如下 注册页面body font size 12px title color FF7B0B font size 20px font weight bold td height 30px info color BBBBBB functioncheck frm if frm accept checked false alert 您需要仔细阅读用户使用协议 并同意接受协议 returnfalse returntrue 填写注册信息用户名 用户名由字母开头 后跟字母 数字或下划线 密码 设置登录密码 至少6位 确认密码 请再输入一次你的密码 性别 请选择你的性别 邮箱地址 请填写您的常用邮箱 可以用此邮箱找回密码 基本情况 我已经仔细阅读并同意接受用户使用协议 5 编写注册成功页面 Success jsp 校验成功校验通过 用户信息如下 用户名 密码 确认密码 性别 邮箱地址 基本情况 6 修改struts xml配置Action 配置信息如下 register jsp success jsp 2使用验证文件实现验证 基于验证文件的输入验证方式 将验证规则保存在特定的验证文件中 实现验证的要求 1 验证文件的命名规则验证文件的命名规则是 Actio类名 validatin xml 如果一个Action有多个逻辑处理方法 要为某个特定方法做验证 其命名规则是 Action类名 Action逻辑名 validatin xml 其中 Action逻辑名 是指struts xml中的对应该处理方法的action配置中的name值 例如 如果该校验器对应的Action类名为Register2Action 那么验证文件的名为Register2Action validation xml 该验证文件一般都是保存在与Action类相同的目录下 这样对于不同的Action处理请求将会加载不同的校验文件 2 校验器Struts2框架中提供了大量的内置校验器 在项目开发中 大部分校验功能都可以通过内置校验器来完成 Struts2框架提供两种配置校验器的方式 字段校验器配置风格非字段校验器配置风格 1 字段校验器配置风格如果使用字段校验器配置风格 校验文件以元素为基本元素 这个基本元素的name属性值为被校验的字段 该风格的格式 参数值校验失败提示的信息 3 常用的字段检验器常用的字段校验器有 必填校验器 要求字段必须有值 校验字段是否为空必填字符串校验器 要求字段为一个非空字符串 并且长度需要大于0字符串长度校验器 用于校验字段中字符串长度在指定的范围整数校验器 用于将要求被校验的整数在指定范围内 否则校验失败日期校验器邮件地址校验器网址校验器表达式校验器字段表达式校验器 1 必填检验器 required要求字段必须有值 校验字段是否为空 fieldName 指定校验字段的名称 例如 用户名不能为空 2 必填字符串校验器 requiredstring要求字段为一个非空字符串 并且长度需要大于0 fieldName 指定校验字段的名称 trim 指定是否在校验之前对字符串进行整理 截取字符串前后空格 默认值为true 例如 true用户名不能为空 3 整数校验器 int用于将要求被校验的整数在指定范围内 否则校验失败 fieldname 指定校验字段的名称 max 指定整数的最大值 可选项 不选为最大值不限制 min 指定整数的最小值 可选项 不选为最小值不限制 例如 1100年龄必须在1到100之间 4 日期校验器 date要求字段的日期值在指定的范围内 fieldname 指定校验字段的名称 max 指定整数的最大值 可选项 不选为最大值不限制 min 指定整数的最小值 可选项 不选为最小值不限制 例如 必须是日期格式 1900 01 012090 12 31key userBirthday range 5 邮件地址校验器 email要求指定字段必须满足邮件地址规则 采用正则表达描述 例如 你的电子邮件地址必须是一个有效的电邮地址 6 网址校验器 url要求被校验字段必须为合法的URL地址 例如 无效的网络地址 7 字段表达式校验器 fieldexpression要求字段必须满足一个逻辑表达式 fieldname 指定校验字段的名称 expression 为一个逻辑表达式 使用OGNL表达式 例如 校验失败 8 正则表达式校验器 regex要求字段必须满足某种格式的正规式 expression r 为一个逻辑表达式 使用正规表达式例如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年物业客服专员考试题集及答案
- 2025年安全员招聘高频面试题解析
- 制造业产品质量协议
- 2025年土地整治项目管理员中级考试模拟题及高频题库
- 2025年能源监测工程师综合知识技能考察试卷及答案解析
- 2025年绿色建筑技术员职业资格考试试题及答案解析
- 2025年金融市场分析师资格考试试题及答案解析
- 2025年教师资格认证考试试题及答案解析
- 2025年电子商务运营经理面试问题及答案
- 2025年建筑幕墙工程师职业资格考试试题及答案解析
- 传媒入股协议合同
- 《有机化学》课程标准
- 《高效能电机》课件
- 汽车维护与保养 任务工单1 发动机油液与滤清器检查及更换
- 外科腹腔镜手术护理
- 非专用化妆包项目质量管理方案
- 工程类公路培训课件
- 2024年度中药的性能《四气五味》课件
- 太阳能光伏发电项目EPC工程设计施工范围及主要工程量
- 《汽车电工电子》课程标准
- 2024关于进一步提升基层应急管理能力的意见学习解读课件
评论
0/150
提交评论