struts2中 模型驱动(model)action用法

        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>

 

posted @ 2015-01-05 16:04  看海8801  阅读(865)  评论(0编辑  收藏  举报