今天在搭SSH框架的时候,想到Struts的表单封装,自己只知道有2种方式,结果在网上一查,还可以根据Struts自带的ModelDriven来获取表单数据。
顺便也做下总结:
1.Action中的属性与表单中的属性一致就可以
01.<!--JSP中的表单-->
02.<form action="login.action" method="post">
03. 用户名:<input type="text" name="username"/> <br/>
04. 密码: <input type="password" name="password" /> <br/>
05. <input type="submit" value="登陆" />
11.</form>
Java代码
01.//Action中的属性
02.public class LoginAction extends ActionSupport {
03. private String username;
04. private String password;
05.
06. public String getUsername() {
07. return username;
08. }
09.
10. public void setUsername(String username) {
11. this.username = username;
12. }
13.
14. public String getPassword() {
15. return password;
16. }
17.
18. public void setPassword(String password) {
19. this.password = password;
20. }
21.
22. public String execute(){
23. if( username.equalsIgnoreCase("aaa")&&password.equals("aaaaaa")){
24. return SUCCESS;
25. }else{
26. return ERROR;
27. }
28. }
29.
30.}
2.使用一个VO类
XML/HTML代码
01.<!--在表单中提交的属性名改为user.username-->
02.<form action="login.action" method="post">
03. 用户名:<input type="text" name="user.username"/> <br/>
04. 密码: <input type="password" name="user.password" /> <br/>
05. <input type="submit" value="登陆" />
06. </form>
Java代码
01.//LoginAction中的属性改为user
02.public class LoginAction extends ActionSupport{
03. private User user;
04.
05. public User getUser() {
06. return user;
07. }
08.
09. public void setUser(User user) {
10. this.user = user;
11. }
12.
13. public String execute(){
14. if( user.getUsername().equalsIgnoreCase("aaa")&&user.getPassword().equals("aaaaaa")){
15. return SUCCESS;
16. }else{
17. return ERROR;
18. }
19. }
20.
21.}
3.使用Struts2中的ModelDriven数据模式
Java代码
01.//Action类要实现一个泛型接口,前台表单与1相同
02.public class LoginAction extends ActionSupport implements ModelDriven<User> {
03. private User user = new User();
04.
05. public String execute(){
06. if( user.getUsername().equalsIgnoreCase("aaa")&&user.getPassword().equals("aaaaaa")){
07. return SUCCESS;
08. }else{
09. return ERROR;
10. }
11.
12. }
13.
14. public User getModel() {
15. return user;
16. }
17.
18.}
如果大家还有更好的方法,大家可以一起讨论!