struts2 手动验证和框架验证
手動驗證
struts.xml
<?xml?version="1.0"?encoding="UTF-8"?> <!DOCTYPE?struts?PUBLIC "-//Apache?Software?Foundation//DTD?Struts?Configuration?2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant?name="struts.devMode"?value="true"></constant> <constant?name="struts.enable.DynamicMethodInvocation"?value="true"></constant> <include?file="cn/itcast/validate/struts_validate.xml"></include> </struts>struts_validate.xml
<?xml?version="1.0"?encoding="UTF-8"?> <!DOCTYPE?struts?PUBLIC "-//Apache?Software?Foundation//DTD?Struts?Configuration?2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package?name="validate"?namespace="/validate"?extends="struts-default"> <action?name="validateAction_*"?class="cn.itcast.validate.ValidateAction"?method="{1}"> <result?name="success">/validate/success.jsp</result> <result?name="input">/validate/login.jsp</result> </action> </package> </struts>ValidateAction.java
package?cn.itcast.validate; import?java.util.regex.Matcher; import?java.util.regex.Pattern; import?com.opensymphony.xwork2.ActionSupport; @SuppressWarnings("serial") public?class?ValidateAction?extends?ActionSupport?{ private?String?username; public?String?getUsername()?{ return?username; } public?void?setUsername(String?username)?{ System.out.println("ValidateAction?*****?setusername()"); this.username?=?username; } public?String?getPsw()?{ return?psw; } public?void?setPsw(String?psw)?{ this.psw?=?psw; } private?String?psw; /**?驗證方法:*?*改動作類action必須繼承ActionSupport或者實現Validateable接口*?*必須保證serUsername(),validate(),login()方法的執行順序如下:*?*setUsername()*?*validate()*?*login()**如果登陸失敗,如何處理:**this.addFildError(key,value);**key:錯誤提示字段**value:錯誤提示信息**什么時候才是驗證通過?**驗證通過:1.map集合存在;2.map集合存在時為,**驗證不通過:map集合存在,并且不為空**分析需求:**用戶名不能為null,""**密碼不能為null,"",并且密碼的長度6-12之間*?*針對所有業務方法進行驗證還是針對某個指定業務方法進行驗證?*?*重寫的validate()方法,針對所有業務方法進行驗證*?*?重寫的validate()方法加上要驗證的制定的業務方法名(業務方法名的首字母大寫),實現針對某個指定的業務方法進行驗證*?*為什么要這樣進行拼接?因為struts2框架底層拼接,如果不這樣寫底層就找不到對應方法名*?(non-Javadoc)*?@see?com.opensymphony.xwork2.ActionSupport#validate()*/ public?void?validateLogin()?{ System.out.println("ValidateAction?******?validate()"); if(username==null||username.equals("")){ this.addFieldError("error",?"用戶名不能為空"); } if(psw==null||psw.equals("")){ this.addFieldError("error",?"密碼不為空"); }else{ String?pattern="^[0-9a-zA-Z]{6,12}"; Pattern?p?=?Pattern.compile(pattern); Matcher?m?=?p.matcher(psw); boolean?b?=?m.matches(); if(!b){ this.addFieldError("error",?"密碼的長度必須在6-12之間"); } } } public?String?login(){ //?驗證 System.out.println("ValidateAction?****** login()"+"username:"+username+"psw:"+psw); return?"success"; } public?String?test(){ System.out.println("validate?*******?test()"); return?"success"; } }login.jsp
<%@?page?language="java"??pageEncoding="UTF-8"?contentType="text/html;?charset=utf-8"%> <%@?taglib?uri="/struts-tags"?prefix="s"?%> <html><head>????<title>My?JSP?'login.jsp'?starting?page</title></head><body><br><s:fielderror/><s:form?name="loginForm"?method="post"??namespace="/validate"??action="validateAction_login.action"?theme="simple"?><table?border="1"><tr><td>用戶名</td><td>?<s:textfield?name="username"?/></td></tr><tr><td>密碼</td><td><s:password?name="psw"?/></td></tr><tr><td> </td><td><s:submit?value="登陸"/></td></tr></table></s:form></body><a?href="${pageContext.request.contextPath}/validate/validateAction_test.action">test其他的方法</a></html>框架驗證
struts2框架驗證(xml方式)
????*首先要從頁面中獲取對應的標簽name屬性的值,在動作類action中聲明同名的屬性,提供get和set方法
????*創建一個xml格式驗證文件:
????????*命名方式:ActionClassName-validation.xml,ActionClassName指的是動作類action的名稱
????????*<validators>標簽:根元素
????????*field:指定action中要校驗的屬性,實際上就是頁面中表單的name的屬性的值
????????????*name:指定頁面中表單的name屬性的值
????????*field-validator:指定驗證規則
????????????*type:指定驗證規則名稱,struts2框架提供的驗證規則放在xwork-core-xxx.jar下的com.opensymphony\xwork2\validator\validators的default.xml配置文件。
????????*param:向底層的驗證規則傳遞的參數
????????*message:驗證失敗時,提供的錯誤提示信息
????*如果要對指定方法進行驗證的話:
????????*xml驗證文件的命名方式:ActionClassName-ActionName-validation.xml
????????????????????????????????ActionName對應的是struts.xml文件對應的action標簽的name屬性的值????????
總結
以上是生活随笔為你收集整理的struts2 手动验证和框架验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu切换用户
- 下一篇: 自定义拦截器