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>

 

你可能感兴趣的:(struts2)