『壹』 struts工作原理與工作流程有什麼區別
工作原理
在Struts2框架中的處理大概分為以下幾個步驟
1 客戶端初始化一個指向Servlet容器(例如Tomcat)的請求
2 這個請求經過一系列的過濾器(Filter)(這些過濾器中有一個叫做ActionContextCleanUp的可選過濾器,這個過濾器對於Struts2和其他框架的集成很有幫助,例如:SiteMesh Plugin)
3 接著FilterDispatcher被調用,FilterDispatcher詢問ActionMapper來決定這個請是否需要調用某個Action
4 如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy
5 ActionProxy通過Configuration Manager詢問框架的配置文件,找到需要調用的Action類
6 ActionProxy創建一個ActionInvocation的實例。
7 ActionInvocation實例使用命名模式來調用,在調用Action的過程前後,涉及到相關攔截器(Intercepter)的調用。
8 一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。返回結果通常是(但不總是,也可 能是另外的一個Action鏈)一個需要被表示的jsP或者FreeMarker的模版。在表示的過程中可以使用Struts2 框架中繼承的標簽。在這個過程中需要涉及到ActionMapper
工作流程
1、客戶端瀏覽器發出HTTP請求.
2、根據web.xml配置,該請求被FilterDispatcher接收
3、根據struts.xml配置,找到需要調用的Action類和方法, 並通過IoC方式,將值注入給Aciton
4、Action調用業務邏輯組件處理業務邏輯,這一步包含表單驗證。
5、Action執行完畢,根據struts.xml中的配置找到對應的返回結果result,並跳轉到相應頁面
6、返回HTTP響應到客戶端瀏覽器
『貳』 struts2的action怎麼獲取jsp頁面的表單值
舉個例子你就好明白了。x0dx0a例如,首先,你寫了一個ExampleBean裡面有屬性userName和password都是String類型,然後別忘了寫他們的setter和getter方法,publicvoidsetUserName(StringuserName)等等。x0dx0a然後,寫Action,在Action類中加入成員變數privateStringuName;privateStringuPwd;x0dx0a一定要再寫上他們的Setter和Getter方法。publicvoidsetUName(Strings)等等。x0dx0a然後你在execute方法中創建一個bean對象。如:x0dx0aExampleBeanb=newExampleBean(this.getUName(),this.getUPwd());x0dx0a就可以創建這個bean對象了。x0dx0ax0dx0a具體傳值流程是:首先你訪問jsp頁面,然後比如jsp頁面上有一個登錄框,你可以輸入用戶密碼。x0dx0a
『叄』 Struts2中使用重定向防止表單重復提交後怎們在表單中保留已填的信息和表單驗證後的錯誤信息
使用struts2標簽就可以了。例如:
JSP頁面
<form action="url">
<s:textfield name="userName"/>
<input type="submit">
</form>
然後後台Action需要:
private String userName;
//生成setter和getter
這樣如無意外就OK了 你可以測試跳到其它頁面或返回原頁面 。
記得導入標簽信息<%@taglib prefix="s" uri="/struts-tags" %>
『肆』 JSP身份證號碼的正則表達式驗證
這個簡單,在jsp頁面上寫個腳本,首先第一步(你的字元串這里設為str):
用str.length來做參數判斷是否為18位
2.截取字元串前十七個,用正則判斷
3.最後一個再用正則判斷
正則的腳本如下:(首先申明,未經測試)
function isNumber(str){
var rege=/[\d]/g;
var a=str.match(rege);
if(a==null)
alert('必須是數字');
}
function isNumberOrAlpha(str){
var rege=/[\da-zA-Z]/g;
var a=str.match(rege);
if(a==null)
alert('必須是數字或字母');
}
對於正則表達式,你可以在csdn網上找一本《精通正則表達式看》
『伍』 JSP Struts2如何郵箱驗證
直接通過正則表達式驗證即可:
<script language=javascript>
<!--
function checkform() {
if(addform.yx.value != '') {
if(!Isyx(addform.yx.value)){
alert("請輸入正確的郵箱地址!")
addform.yx.focus();
return false;
}
}
}
function Isyx(yx){
var reyx= /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
return(reyx.test(yx));
}
//-->
</script>