框架及应用主要组件作业与要求.ppt

上传人:小飞机 文档编号:6301884 上传时间:2023-10-15 格式:PPT 页数:37 大小:326.50KB
返回 下载 相关 举报
框架及应用主要组件作业与要求.ppt_第1页
第1页 / 共37页
框架及应用主要组件作业与要求.ppt_第2页
第2页 / 共37页
框架及应用主要组件作业与要求.ppt_第3页
第3页 / 共37页
框架及应用主要组件作业与要求.ppt_第4页
第4页 / 共37页
框架及应用主要组件作业与要求.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《框架及应用主要组件作业与要求.ppt》由会员分享,可在线阅读,更多相关《框架及应用主要组件作业与要求.ppt(37页珍藏版)》请在三一办公上搜索。

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.拦截器接口:Intercepto

3、r Struts2提供的Interceptor接口(Interceptor.java)的代码如下:import com.opensymphony.xwork2.ActionInvocation;import;public interface Interceptor extends Serializable void destroy();void init();String intercept(ActionInvocation invocation)throws Exception;Intercept 方法是拦截器的核心方法,实现具体的拦截操作,返回一个字符串作为逻辑视图。与Action一样,如

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

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

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

7、可获取页面提交的信息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()方法实现对注册页面进行验证。注册页面如下图所示,若输入的数据验证成功,进入验证成功页面(该页面显示注册信息),否则,仍返回注册页面。,【分析】对于该案例,根据Stru

9、ts2的MVC设计思想,需要设计3部分组件:(1)模型组件:注册用户的JavaBean:User.Java 实现注册信息添加到数据库的JavaBean:userDbase.java(2)Action控制器的设计:RegisterAction.java,在该控制器中有两个主要方法:public String register():实现注册 public void validate():实现注册前的信息验证(3)设计视图:注册页面(Regist.jsp):按上图所示的页面设计 注册成功后,显示注册信息的页面:Success.jsp。,(3)编写业务控制器:RegisterAction.java:p

10、ackage Action;import Beans.User;import Beans.userDbase;import com.opensymphony.xwork2.ActionSupport;import.*;public class RegisterValidateAction extends ActionSupport private User user;private String userPwd;/省略了属性的Setter、Getter方法public String register()throws Exception userDbase ud=new userDbase();

11、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 f1=a-zA-Zw*;if(!Pattern.matches(f1,user.getUserName()addFieldError(user.userName,格式不正确!);,if(user.getUserPwd().leng

12、th()=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(

13、).length()=0|user.getUserEmail()=null)addFieldError(user.userEmail,邮件地址不能为空!);elseString f2=w+(-+.w+)*w+(-.w+)*.w+(-.w+)*;if(!Pattern.matches(f2,user.getUserEmail()addFieldError(user.userName,邮箱地址格式不正确!);,(4)编写注册页面:ch12_5_Regist.jsp,其代码如下:注册页面 bodyfont-size:12px;#titlecolor:#FF7B0B;font-size:20px;fo

14、nt-weight:bold;.tdheight:30px;.infocolor:#BBBBBB;function check(frm)=false)alert(您需要仔细阅读用户使用协议,并同意接受协议!);return false;return true;,填写注册信息 用户名:*用户名由字母开头,后跟字母、数字或下划线!密码:*设置登录密码,至少6位!确认密码:*请再输入一次你的密码!性别:*请选择你的性别!邮箱地址:*请填写您的常用邮箱,可以用此邮箱找回密码!基本情况:*我已经仔细阅读并同意接受用户使用协议,(5)编写注册成功页面:Success.jsp:校验成功 校验通过,用户信息如

15、下:用户名:密码:确认密码:性别:邮箱地址:基本情况:,(6)修改struts.xml配置Action,配置信息如下:/register.jsp/success.jsp,2 使用验证文件实现验证,基于验证文件的输入验证方式,将验证规则保存在特定的验证文件中。实现验证的要求:1.验证文件的命名规则 验证文件的命名规则是:Actio类名-validatin.xml。如果一个Action有多个逻辑处理方法,要为某个特定方法做验证,其命名规则是:Action类名-Action逻辑名-validatin.xml(其中,Action逻辑名,是指struts.xml中的对应该处理方法的action配置中的n

16、ame值)。例如:如果该校验器对应的Action类名为Register2Action,那么验证文件的名为Register2Action-validation.xml。该验证文件一般都是保存在与Action类相同的目录下,这样对于不同的Action处理请求将会加载不同的校验文件。,2.校验器 Struts2框架中提供了大量的内置校验器,在项目开发中,大部分校验功能都可以通过内置校验器来完成。Struts2框架提供两种配置校验器的方式:字段校验器配置风格 非字段校验器配置风格。,(1)字段校验器配置风格 如果使用字段校验器配置风格,校验文件以元素为基本元素,这个基本元素的name属性值为被校验的字

17、段,该风格的格式:参数值 校验失败提示的信息.,3常用的字段检验器 常用的字段校验器有:必填校验器要求字段必须有值,校验字段是否为空 必填字符串校验器要求字段为一个非空字符串,并且长度需要大于0 字符串长度校验器用于校验字段中字符串长度在指定的范围 整数校验器用于将要求被校验的整数在指定范围内,否则校验失败 日期校验器 邮件地址校验器 网址校验器 表达式校验器 字段表达式校验器,(1)必填检验器:required 要求字段必须有值,校验字段是否为空。fieldName:指定校验字段的名称。例如:用户名不能为空!,(2)必填字符串校验器:requiredstring 要求字段为一个非空字符串,并

18、且长度需要大于0。fieldName:指定校验字段的名称,trim:指定是否在校验之前对字符串进行整理,截取字符串前后空格,默认值为true。例如:true 用户名不能为空!,(3)整数校验器:int 用于将要求被校验的整数在指定范围内,否则校验失败。fieldname:指定校验字段的名称;max:指定整数的最大值,可选项,不选为最大值不限制;min:指定整数的最小值,可选项,不选为最小值不限制。例如:1 100 年龄必须在1到100之间!,(4)日期校验器:date 要求字段的日期值在指定的范围内。fieldname:指定校验字段的名称;max:指定整数的最大值,可选项,不选为最大值不限制;

19、min:指定整数的最小值,可选项,不选为最小值不限制。例如:必须是日期格式!1900-01-01 2090-12-31 key=userBirthday.range,(5)邮件地址校验器:email 要求指定字段必须满足邮件地址规则(采用正则表达描述)。例如:你的电子邮件地址必须是一个有效的电邮地址!,(6)网址校验器:url 要求被校验字段必须为合法的URL地址。例如:无效的网络地址!,(7)字段表达式校验器:fieldexpression 要求字段必须满足一个逻辑表达式。fieldname:指定校验字段的名称,expression:为一个逻辑表达式,使用OGNL表达式。例如:校验失败!,(

20、8)正则表达式校验器:regex 要求字段必须满足某种格式的正规式,expression_r:为一个逻辑表达式,使用正规表达式例如:您输入的用户名只能是长度在4到25之间的字母和数字,(9)字符串长度校验器:stinglength 用于校验字段中字符串长度在指定的范围内。例如:16 6 姓名长度为$minLength到$maxLength个字符!,案例实现客户注册输入验证,使用配置验证文件实现对对注册页面的验证。注册页面如下图所示,若输入的数据验证成功,进入验证成功页面(该页面显示注册信息),否则,仍返回注册页面。,作业实现客户注册输入验证,分别利用validate()方法和配置验证文件,实现对注册页面进行验证。注册页面如下图所示,若输入的数据验证成功,进入验证成功页面(该页面显示注册信息),否则,仍返回注册页面。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号