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>
时间: 2024-11-05 11:31:42

struts2中 模型驱动(model)action用法的相关文章

struts2中&lt;s:checkboxlist/&gt;的用法详解

Html代码 选择角色<br> <s:checkboxlist list="#request.roleuserList" listKey="roleId" listValue="roleName" value="#request.rolelist.{roleId}" name="roleIds"></s:checkboxlist> 说明: 其中#request.roleu

struts2中&lt;welcome-file&gt;index.action&lt;/welcome-file&gt;直接设置action,404的解决方案

这几天的项目页面的访问全部改为.action访问,在修改首页时遇到了问题.将web.xml文件中<welcome-file>index.action</welcome-file>修改成这样,访问首页时报404错误,也就是说文件找不到.上网查了有两种解决方法.     方法一.在WebRoot下新建一个index.action空文件,这个方法简单实用,强烈推荐.    方法二.因为 welcome-file 必须是实际存在的文件,不能是action或者servlet路径你可以设置一个

Struts2中OGNL表达式的用法

OGNL的全称是Object Graph Navigation Language(对象图导航语言),它是一种强大的表达式语言,能通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能. 一.为什么要使用OGNL 视图层的表达式语言通常是用来简化数据的访问操作,取代Java脚本代码,提供更清晰的视图层实现.比如,要获取user对象的age属性,利用OGNL表达式可以写成: <s:property value="user.age&

struts2中两个action之间的跳转(struts.xml)

1. action的配置中,有一个为"redirectAction"(重定向到一个Action)和chain(就是所谓的action请求链)的action类型顺便说一下struts2的action type:chain   用来处理Action链 dispatcher  用来转向页面,通常处理JSP redirect  重定向到一个URL redirectAction(或redirect-action)   重定向到一个Action 2. 范例 <action name=&quo

struts2中&lt;s:property&gt;的用法

1,访问Action值栈中的普通属性: <s:property value="attrName"/> 2,访问Action值栈中的对象属性(要有get set方法): <s:property value="obj.attrName"/> <s:property value="obj1.obj2.attrName"/> 3,访问值栈中对象属性的方法 <s:property value="obj.m

Struts2中动态调用action中的方法失败的问题

解决方法: 在Struts.xml中添加该配置: <!-- 该配置设置为true可以调用动态方法 --> <constant name="struts.enable.DynamicMethodInvocation" value="true" />

JAVAWEB开发之Struts2详解(一)——Struts2框架介绍与快速入门、流程分析与工具配置以及Struts2的配置以及Action和Result的详细使用

Struts2框架介绍 三大框架:是企业主流JavaEE开发的一套架构.Struts2 + Spring + Hibernate 什么是框架?为什么要学习框架? 框架是实现部分功能的代码(半成品),使用框架简化企业级软件开发. Struts2与MVC? Struts是一款优秀的MVC框架 MVC:是一种思想,是一种模式,将软件分为Model模型.View视图.Controller控制器 JAVAEE软件三层架构:web层(表现层).业务逻辑层.数据持久层(Sun提供javaEE开发规范) Jav

Struts2中Action取得表单数据的几种方法

Struts2中Action取得表单数据的几种方法 Struts2中Action获得表单数据的几种方法struts2 Action获取表单传值 1.通过属性驱动式JSP: <form action="sys/login.action" method="post"> <input type="text" name="username"> <input type="submit"

Struts2中Action接收参数的方法

详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt112 Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数:     a.定义:在Action类中定义属性,创建get和set方法:     b.接收:通过属性接收参数,如:userName:     c.发送:使用属性名传递参数,如:user1!add?userName=Magci: 2.使用DomainModel接收参数: