struts2學(xué)習(xí)筆記(2)——簡單的輸入驗證以及標(biāo)簽庫的運用
struts2自帶了一些標(biāo)簽庫,運用好這些標(biāo)簽庫會減少開發(fā)周期。
1.struts2標(biāo)簽庫是在哪定義的?
struts2標(biāo)簽庫定義在 struts2-core-2.1.8.jar這個文件中,具體在這個jar的META-IN
F文件夾struts- tags.tld中。
2.如何引用struts2標(biāo)簽庫?
使用<%@ taglib prefix="s" uri="/struts-tags" %>可以引用,其中uri是在struts-tags.tld中指定的。
重構(gòu)昨天的應(yīng)用:
<s:form action="login">
<s:textfield name="username" label="username"></s:textfield>
<s:password name="password" label="password"></s:password>
<s:submit label="submit"></s:submit>
</s:form>
其中注意的是form的action是login而不是html中的login.action,兩者表示的意思一樣。標(biāo)簽中的label屬性值將顯示在textfield前。
然后修改 LoginAction類,讓其繼承ActionSupport類,以實現(xiàn)簡單驗證功能。昨天寫的類是一個POJO,與struts2無關(guān)。而現(xiàn)在這個類的功能將更加強大。
override其方法validate,來實現(xiàn)驗證功能。
內(nèi)容:
if (null == this.getUsername() || "".equals(this.getUsername().trim())) {
this.addFieldError("username", "username required");
}
if (null == this.getPassword()|| "".equals(this.getPassword().trim())) {
this.addFieldError("password", "password required");
}
}
作用是來驗證輸入的內(nèi)容是否為空(為什么不用JavaScript 來驗證???)
這里用到了一個小技巧,順便提一下:
"".equals(this.getUsername().trim())
把常量放在前面可以避免當(dāng)this.getUsername()為空時拋出異常
this.addFieldError("username", "username required");
可以在username上面顯示出錯信息(username required)
接著在struts2中指定信息沒有輸入完整時的處理方法,即在struts.xml中進行配置
<result name="input">/login2.jsp</result>
在validate方法中只做一些簡單的驗證,判斷是否為空等,不會涉及業(yè)務(wù)邏輯。
程序流程:
在login.jsp中輸入數(shù)據(jù)提交后,struts2攔截用戶請求,然后發(fā)送請求到LoginAction處理請求,LoginAction調(diào)用validate方法進行驗證。
若不通過,則交給struts2再次轉(zhuǎn)發(fā)給login.jsp處理,并顯示出相應(yīng)的出錯信息,由(this.addFieldError())方法指定。
若通過,則進行相應(yīng)的set操作,結(jié)束后調(diào)用execute方法,返回相應(yīng)的處理結(jié)果到struts2。
然后struts2根據(jù)返回的結(jié)果轉(zhuǎn)發(fā)到相應(yīng)的頁面(result.jsp)
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。