Struts2的Action属于MVC模型层,Action中的方法代表业务逻辑,Action中的属性代表请求中的参数,当页面请求参数较多的时候,把过多的参数对象的属性定义在Action中不太符合Struts所倡导的松耦合原则,所以我们推荐单独用JavaBean来封装参数,在Action中为JavaBean赋值,这就是ModelDriven的Action。
模型驱动的Action要求Action实现ModelDriven接口,假如登录页面需要传输参数name和password,我们把这2个参数封装在一个数据的JavaBean中,然后在Action中定义该JavaBean为Model即可。
注意:JavaBean中成员变量的名字 和 登陆也面标签的name属性要保持一致。
代码如下:
UserInfo(Java Bean)代码
package model; public class UserInfo { private String name; private String password; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
html登陆页面主要代码
<html> <body> <form action="./user/getUser.action"> 用户名:<input type="text" name="name"/></p> 密码:<input type="password" name="password"/></p> <input type="submit" name="submit" value="提交"/> </form> </body> </html>
modelAction代package modelAction
import model.UserInfo; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; @SuppressWarnings("serial") public class modelAction extends ActionSupport implements ModelDriven<UserInfo> { //private UserInfo model = new UserInfo(); private UserInfo userInfo = new UserInfo(); @Override public String execute() throws Exception { System.out.println("modelAction..execute()"); return "success"; } @Override public UserInfo getModel() { // TODO Auto-generated method stub return userInfo; } }
struts.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="user" namespace="/user" extends="struts-default"> <action name="getUser" class="modelAction.modelAction"> <result name="success">/MyJsp.jsp</result> </action> </package> </struts>
action跳转页面myjsp.jsp中显示用户名 密码
当请求该Action的时候,请求中的参数会自动填充到模型Userinfo的属性中,当然需要参数名和属性名一样,到跳转的页面上利用Struts2标签<s:property value="username" />可以取出模型Userinfo中的属性username。在ModelDriven接口中的方法getModel()必须实现,通过它告诉系统模型的具体对象是什么。
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%> <%@ taglib uri="/struts-tags" prefix="s"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP ‘MyJsp.jsp‘ starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> username:<s:property value="name" /> </body> </html>
时间: 2024-11-05 11:31:42