1,Action中get,set方法的使用流程?
前台form中有一個<input type="text" name="username"/>
如果傳到action。在action中應該有一個屬性,名字也叫username;而且這個username有get/set方法,其中get方法的命名必須為getUsername,其中set方法的命名必須為setUsername。這里方法名稱按java Bean的規定
。注意不是setUserName和getUserName。
當struts接受這個action請求時,struts調用 username的set方法把前台的值傳到action中的username,當action處理完成,要返回到頁面時。在生成jsp的過程中,你可以在頁面中使用EL,${username},這時調用username的get方法。
例如下邊實例:
class
Bean{
//普通公有屬性
public
Integer id;
//標准的java bean set/get方法
private
String username;
public
String getUsername() {
return
username;
}
public
void
setUsername(String username) {
this
.username = username;
}
}
2,還有,get方法的命名,為什么一定要,比如參數a,get一定要命名為getA();geta()則不行。如果參數是A呢,get什么?參數命名為A就不正確,不符合規則。所以不存在問題。
上邊問題中的命名方法getA是按java Bean的規定來命名的。這個標准就是java bean的標准,標准包括標准的set/get方法相關的東西。這個是開發struts的人定的標准,並沒有特定的意義,只是為了讓它規范化,有一個統一的標准。
如果你知道什么是javaBean,你就知道屬性abc的get/set方法為什么是setAbc/getAbc
更深層次,你就應該了解Ioc,控制反轉
3,Struts2中Action必須實現execute方法嗎?不必須,可以指定處理方法。
你配置里寫了method={1}就會調用對應的方法,只有當你沒指定method時,struts2才會默認調用execute 方法。
<package name="helloworld" extends="struts-default">
<action name="hello"
class="MyFirstPackage.HelloworldAction"
method="execute">
<result name="success">/HelloWorld.jsp</result>
</action>
</package>
@總結:
1,規范是沒有理由的。跟if...else一樣,java語法就是這樣定的,沒有為什么。
2,在action中,必須要有對應的get和set方法,只要有get和set方法,action中值就能獲取到,值都能傳到前台。