Struts2接受参数
2016-02-04 22:10
609 查看
Struts2接受参数有三种方法
1、使用Action的属性来接受
——就是在一个Action里面定义许多前台需要接受的属性(属性名要一致)
如jsp页面
相应的Action的代码
对应的Struts.xml的配置
2、使用Domain Model接受参数
—–将后台需要接受的参数用一个model来封装,然后在Action里面把model作为一个属性来接受前台数据
由于多个model可能有相同的属性,所以需要在jsp页面指定你的参数是属于哪个model对象的
3、使用ModelDriven接受参数,推荐使用
将Action实现一个ModelDriven接口
—-Action的代码
—-jsp的配置
—-model的配置
方法一的缺点:影响了数据的封装性,使得一个整体对象成了零散的属性进行传递,不符合面向对象的思维
方法二的缺点:前台的数据一定要指定对象类型,如果后台改变了model的名称,前台需要随着变化,不利于代码的维护
1、使用Action的属性来接受
——就是在一个Action里面定义许多前台需要接受的属性(属性名要一致)
如jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'login.jsp' starting page</title> </head> <body> <form action="LoginAction.action" method="post"> 账号:<input type="text" name="username"><br> 密码:<input type="password" name="password"> <input type="submit" value="提交"> </form> </body> </html>
相应的Action的代码
package com.xingyao.www.action; import com.opensymphony.xwork2.ActionSupport; public class LoginAction extends ActionSupport { private static final long serialVersionUID = 1L; private String username; private String password; public String login(){ System.out.println(username); return "SUCCESS"; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public static long getSerialversionuid() { return serialVersionUID; } }
对应的Struts.xml的配置
<action name="LoginAction" method="login" class="com.xingyao.www.action.LoginAction"> <!-- 配置返回结果名为SUCCESS,则服务器跳转到index.jsp --> <result name="SUCCESS">index.jsp</result> </action>
2、使用Domain Model接受参数
—–将后台需要接受的参数用一个model来封装,然后在Action里面把model作为一个属性来接受前台数据
model对象 package com.xingyao.www.po; import java.util.List; public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } Action类的写法 package com.xingyao.www.action; import com.opensymphony.xwork2.ActionSupport; import com.xingyao.www.po.User; public class LoginAction1 extends ActionSupport { private static final long serialVersionUID = 1L; private User user; public String login() { System.out.println(user.getUsername()); return "SUCCESS"; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public static long getSerialversionuid() { return serialVersionUID; } }
由于多个model可能有相同的属性,所以需要在jsp页面指定你的参数是属于哪个model对象的
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'login.jsp' starting page</title> </head> <body> <form action="LoginAction1.action" method="post"> 账号:<input type="text" name="user.username"><br> 密码:<input type="password" name="user.password"> <input type="s c410 ubmit" value="提交"> </form> </body> </html>
3、使用ModelDriven接受参数,推荐使用
将Action实现一个ModelDriven接口
—-Action的代码
package com.xingyao.www.action; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; import com.xingyao.www.po.User; //T:封装参数的model public class LoginAction2 extends ActionSupport implements ModelDriven<User> { private static final long serialVersionUID = 1L; private User user = new User(); public String login() { System.out.println(user.getUsername()); System.out.println(user.getBooks().get(0)); System.out.println(user.getBooks().get(1)); return "SUCCESS"; } @Override public User getModel() { // TODO Auto-generated method stub return user; } }
—-jsp的配置
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'login.jsp' starting page</title> </head> <body> <form action="LoginAction2.action" method="post"> 账号:<input type="text" name="username"><br> 密码:<input type="password" name="password"> 书籍1:<input type="password" name="books[0]"> 密码:<input type="password" name="books[1]"> <input type="submit" value="提交"> </form> </body> </html>
—-model的配置
package com.xingyao.www.po; import java.util.List; public class User { private String username; private String password; private List<String> books; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public List<String> getBooks() { return books; } public void setBooks(List<String> books) { this.books = books; } }
方法一的缺点:影响了数据的封装性,使得一个整体对象成了零散的属性进行传递,不符合面向对象的思维
方法二的缺点:前台的数据一定要指定对象类型,如果后台改变了model的名称,前台需要随着变化,不利于代码的维护
相关文章推荐
- Struts - 标签库
- struts1.0于struts2.0的比较
- Struts2中关于namespace的学习心得
- Struts2----自定义action的学习心得
- HTTP Status 404 - There is no Action mapped for namespace [/] and action name [login!welcome] associ
- struts2
- struts 学习笔记
- struts2框架架构流程
- struts2.0拦截器(实现未登录的用户不能访问系统的页面)(转)
- Struts2+jQuery+JSON实现异步交互
- 软件开发疑惑解答
- ajax ssh 整合
- struts2 @Action给方法注解
- struts2登陆拦截器
- struts2框架原理
- web.xml
- web.xml
- struts2框架原理
- struts2登陆拦截器
- struts2 @Action给方法注解