您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > class17struts2(高级)
Struts2(高级)讲解人:王英伟讲解时间:60min23Struts2介绍4Struts2的处理流程StrutsPrepareAndExecuteFilterInterceptorActionResultJsp/html响应用户请求Struts2内置的一些拦截器或用户自定义拦截器5自定义拦截器要自定义拦截器需要实现com.opensymphony.xwork2.interceptor.Interceptor接口:publicclassPermissionInterceptorimplementsInterceptor{publicStringintercept(ActionInvocationinvocation)throwsException{Objectuser=ActionContext.getContext().getSession().get(user);if(user!=null){//调用此方法,拦截执行。returninvocation.invoke();}ActionContext.getContext().put(message,你没有权限执行操作);return“index;}}6interceptors!--引用自定义拦截器--interceptorname=permissionclass=com.unis.interceptor.PermissionInterceptor/!--拦截器栈--interceptor-stackname=permissionStack!--struts2的默认拦截器,如果自定义拦截器,struts2的拦截器失去功能--interceptor-refname=defaultStack/interceptor-refname=permission//interceptor-stack/interceptorsactionname=list_*method={1}class=com.unis.action.admin.UserLoginActioninterceptor-refname=permissionStack//action!--可以为包指定默认拦截器,每个包只能指定一个默认拦截器--default-interceptor-refname=permissionStack/default-interceptor-ref7输入校验•采用手工编写代码实现。•基于XML配置方式实现。8手工编写代码方式(全方法)publicvoidvalidate(){if(this.username==null||(this.username).equals()){this.addFieldError(username,用户名不能为空);}if(this.mobile==null||(this.mobile.toString()).equals()){this.addFieldError(mobile,手机号不能为空);}else{//正则表达式(^首位,)if(!Pattern.compile(^1[358]\\d{9}$).matcher(this.mobile).matches()){this.addFieldError(mobile,手机号格式不确定);}}}验证失败后,请求转发至input视图:resultname=input/WEB-INF/page/addUser.jsp/result在addUser.jsp页面中使用s:fielderror/显示失败信息。%@tagliburi=“/struts-tags”prefix=“s”%//引用ognl标签库9手工编写代码方式(指定方法)publicvoidvalidateXxx(){if(this.username==null||(this.username).equals()){this.addFieldError(username,用户名不能为空);}if(this.mobile==null||(this.mobile.toString()).equals()){this.addFieldError(mobile,手机号不能为空);}else{//正则表达式(^首位,)if(!Pattern.compile(^1[358]\\d{9}$).matcher(this.mobile).matches()){this.addFieldError(mobile,手机号格式不确定);}}}•Xxx代表方法名,首字母大写验证失败后,请求转发至input视图:resultname=input/WEB-INF/page/addUser.jsp/result在addUser.jsp页面中使用s:fielderror/显示失败信息。%@tagliburi=“/struts-tags”prefix=“s”%//引用ognl标签库10输入校验的流程1.类型转换器对请求参数执行类型转换,并把转换后的值赋给action中的属性。2.如果在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext,conversionError拦截器将异常信息添加到fieldErrors里。不管类型转换是否出现异常,都会进入第3步。3.系统通过反射技术先调用action中的validateXxx()方法,Xxx为方法名。4.再调用action中的validate()方法。5.经过上面4步,如果系统中的fieldErrors存在错误信息(即存放错误信息的集合的size大于0),系统自动将请求转发至名称为input的视图。如果系统中的fieldErrors没有任何错误信息,系统将执行action中的处理方法。11基于XML配置方式(全方法)定义UserAction-validation.xml:ActionClassName-validation.xml?xmlversion=1.0encoding=UTF-8?!DOCTYPEvalidatorsPUBLIC-//OpenSymphonyGroup//XWorkValidator1.0.3//EN=usernamefield-validatortype=requiredstringparamname=trimtrue/parammessage用户名不能为空!/message/field-validator/field/validators•field指定action中要校验的属性•field-validator指定校验器:xwork-core-2.x.jar下com.opensymphony.xwork2.validator.validators中default.xml找到校验器类型•paramname=“trim”true/param对属性进行校验,首先要求调用trim()方法去掉空格•message为校验失败后的提示信息12基于XML配置方式(指定方法)当校验文件的取名为ActionClassName-validation.xml时,会对action中的所有处理方法实施输入验证。如果你只需要对action中的某个action方法实施校验,那么,校验文件的取名应为:ActionClassName-ActionName-validation.xml,其中ActionName为struts.xml中action的名称。例如:在实际应用中,常有以下配置:actionname=“user_*”class=“com.unis.action.UserActionmethod={1}“resultname=success/WEB-INF/page/message.jsp/resultresultname=input/WEB-INF/page/addUser.jsp/result/actionUserAction中有以下两个处理方法:publicStringadd()throwsException{....}publicStringupdate()throwsException{....}要对add()方法实施验证,校验文件的取名为:UserAction-user_add-validation.xml要对update()方法实施验证,校验文件的取名为:UserAction-user_update-validation.xml13struts2提供的校验器列表系统提供的校验器如下:•required(必填校验器,要求field的值不能为null)•requiredstring(必填字符串校验器,要求field的值不能为null,并且长度大于0,默认情况下会对字符串去前后空格)•stringlength(字符串长度校验器,要求field的值必须在指定的范围内,否则校验失败,minLength参数指定最小长度,maxLength参数指定最大长度,trim参数指定校验field之前是否去除字符串前后的空格)•regex(正则表达式校验器,检查被校验的field是否匹配一个正则表达式.expression参数指定正则表达式,caseSensitive参数指定进行正则表达式匹配时,是否区分大小写,默认值为true)•int(整数校验器,要求field的整数值必须在指定范围内,min指定最小值,max指定最大值)•double(双精度浮点数校验器,要求field的双精度浮点数必须在指定范围内,min指定最小值,max指定最大值)•fieldexpression(字段OGNL表达式校验器,要求field满足一个ognl表达式,expression参数指定ognl表达式,该逻辑表达式基于ValueStack进行求值,返回true时校验通过,否则不通过)•email(邮件地址校验器,要求如果field的值非空,则必须是合法的邮件地址)•url(网址校验器,要求如果field的值非空,则必须是合法的url地址)•date(日期校验器,要求field的日期值必须在指定范围内,min指定最小值,max指定最大值)•conversion(转换校验器,指定在类型转换失败时,提示的错误信息)•visitor(用于校验action中的复合属性,它指定一个校验文件用于校验复合属性中的属性)•expression(OGNL表达式校验器,expression参数指定ognl表达式,该逻辑表达式基于ValueStack进行求值,返回true时校验通过,否则不通过,该校验器不可用在字段校验器风格的配置中)14校验器的使用例子required必填校验器field-validatortype=requiredmessage性别不能为空!/message/field-validatorrequiredstring必填字符串校验器field-validatortype=requiredstringparamname=trimtrue/parammessage用户名不能为空!/message/field-validatorstringlength:字符串长度校验器field-validatortype=stringlengthparamname=maxLength10/paramparamname=minLength2/paramparamname=trimtrue/parammessage![CDATA[产品名称应在2-10个字符之间]]/message/field-validator15email:邮件地址校验器field-va
本文标题:class17struts2(高级)
链接地址:https://www.777doc.com/doc-1238592 .html