`

struts2属性驱动与模型驱动

阅读更多
1. struts2属性驱动与模型驱动

user.java

package com.andrew.model;
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;
    }
}

UserService.java

package com.andrew.service;
import com.andrew.model.User;
public class UserService {
    public boolean login(User user) {
        if ("andrew".equals(user.getUserName()) && "123456".equals(user.getPassword())) {
            return true;
        } else {
            return false;
        }
    }
}

success.jsp

登录成功!

error.jsp

登录失败!


1) 属性驱动(FieldDriven)

1.1) 基本数据类型属性

UserAction.java

package com.andrew.action;
import com.andrew.model.User;
import com.andrew.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
    private UserService userService = new UserService();
    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;
    }
    @Override
    public String execute() throws Exception {
        System.out.println("执行了UserAction的默认方法");
        User user = new User();
        user.setUserName(userName);
        user.setPassword(password);
        if (userService.login(user)) {
            return SUCCESS;
        } else {
            return ERROR;
        }
    }
}

struts.xml

<action name="user" class="com.andrew.action.UserAction">
      <result name="success">success.jsp</result>
      <result name="error">error.jsp</result>
</action>

login.jsp

<form action="user" method="post">
    用户名:<input type="text" name="userName"/>
    密码:<input type="text" name="password"/>
    <input type="submit" value="登录"/>
</form>

http://localhost:8080/HeadFirstStruts2Chap02/login.jsp
abc 123 submit
运行结果:
登录失败! 
控制台:
执行了UserAction的默认方法
andrew 123456 submit
运行结果:
登录成功!
控制台:
执行了UserAction的默认方法


1.2) JavaBean类型属性

UserAction2.java

package com.andrew.action;
import com.andrew.model.User;
import com.andrew.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction2 extends ActionSupport {
    private UserService userService = new UserService();
    private User user;
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
    @Override
    public String execute() throws Exception {
        System.out.println("执行了UserAction2的默认方法");
        if (userService.login(user)) {
            return SUCCESS;
        } else {
            return ERROR;
        }
    }
}

struts.xml

<action name="user2" class="com.andrew.action.UserAction2">
      <result name="success">success.jsp</result>
      <result name="error">error.jsp</result>
</action>

login2.jsp

<form action="user2" method="post">
    用户名:<input type="text" name="user.userName"/>
    密码:<input type="text" name="user.password"/>
    <input type="submit" value="登录"/>
</form>

http://localhost:8080/HeadFirstStruts2Chap02/login2.jsp
abc 123 submit
运行结果:
登录失败! 
控制台:
执行了UserAction2的默认方法
andrew 123456 submit
运行结果:
登录成功!
控制台:
执行了UserAction2的默认方法


2) 模型驱动(ModelDriven)

现实接口 implements ModelDriven<xxx>

UserAction3.java

package com.andrew.action;
import com.andrew.model.User;
import com.andrew.service.UserService;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class UserAction3 extends ActionSupport implements ModelDriven<User> {
    private UserService userService = new UserService();
    private User user = new User();
    @Override
    public String execute() throws Exception {
        System.out.println("执行了UserAction3的默认方法");
        if (userService.login(user)) {
            return SUCCESS;
        } else {
            return ERROR;
        }
    }
    public User getModel() {
        return user;
    }
}

struts.xml

<action name="user3" class="com.andrew.action.UserAction3">
      <result name="success">success.jsp</result>
      <result name="error">error.jsp</result>
</action>

login3.jsp

<form action="user3" method="post">
    用户名:<input type="text" name="userName"/>
    密码:<input type="text" name="password"/>
    <input type="submit" value="登录"/>
</form>

http://localhost:8080/HeadFirstStruts2Chap02/login3.jsp
abc 123 submit
运行结果:
登录失败! 
控制台:
执行了UserAction3的默认方法
andrew 123456 submit
运行结果:
登录成功!
控制台:
执行了UserAction3的默认方法
分享到:
评论

相关推荐

    jQuery EasyUI与Struts2的整合—属性驱动篇

    jQuery EasyUI与Struts2 的整合—属性驱动篇 如果你是用模型驱动,或者是直接把属性写在action里面,你不会碰到我遇到的那么多问题。 但是你用模型驱动好吗,如果一个页面需要处理多个对象的时候怎么办。 如果你...

    struts2驱动包

    5. **模型驱动(ModelDriven)**:Struts2提供了一种模型驱动的方式,将Action与业务模型对象绑定,简化了数据处理。 6. **值栈(Value Stack)**:值栈是Struts2用来存储Action和表单属性的地方。它使得视图层可以...

    Struts2之模型驱动及分层架构初识案例struts004

    在Struts2中,模型驱动模式是一种设计模式,它将业务逻辑(模型)与视图和控制器分离。模型对象负责处理业务逻辑,而控制器(如Struts2的动作类)则处理用户请求并调用模型进行处理。这种模式有助于提高代码的复用性...

    Struts2.0属性转换器的作用说明

    Struts2.0属性转换器(Converters)是框架中一个关键组件,它负责将用户输入的数据转换为Java对象的属性类型,确保数据在表单提交后能够正确地绑定到模型对象上。转换器机制的存在使得开发者可以自定义数据类型转换...

    struts2的驱动和防止重复提交

    本文将深入探讨Struts2的属性驱动和模型驱动的区别,以及如何防止表单的重复提交,并讲解如何在表单中正确显示验证信息。 ### 属性驱动与模型驱动 **属性驱动**(Property Driven)是Struts2中的一种常见做法,它...

    struts 1.2驱动包

    Struts 1.2驱动包是Apache软件基金会开发的一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。它旨在提供一个结构化的、可扩展的平台,帮助开发者构建更易于维护和管理的Web应用。Struts 1.2...

    struts2数据封装源码

    5. **模型驱动**:除了Action类,Struts2还支持模型驱动模式,即直接将用户的输入数据绑定到一个模型对象上,而不是Action类。这样可以使Action类更加专注于业务逻辑,而模型对象则负责数据处理。 6. **Interceptor...

    struts2学习笔记

    **六.Struts2的属性驱动和模型驱动** 1. **属性驱动**:Action类中的字段直接对应请求参数,Struts2自动将请求参数值填充到Action字段。 2. **模型驱动**:使用一个公共对象作为模型,Action类持有这个模型的引用,...

    Struts2接口文档

    Struts2是一个强大的Java web应用程序开发框架,它基于Model-View-Controller(MVC)设计模式,旨在简化创建用户交互式、数据驱动的web应用的过程。这个“Struts2接口文档”是开发者的重要参考资料,提供了关于...

    ssh2 模型驱动 整合

    Struts2与Spring的整合使得业务对象可以直接由Spring管理,提高了代码的可测试性。 **Hibernate框架**:Hibernate是Java领域最流行的ORM工具之一。它通过映射文件或注解将Java实体类与数据库表关联,简化了数据库...

    Struts2 Struts2 超好的Struts2 pdf 文档

    5. **模型驱动(ModelDriven)**:这是一种简化Action类设计的方式,允许Action类仅关注业务逻辑,而将模型对象的管理交给框架。 6. **值栈(Value Stack)**:值栈是Struts2中的一个核心组件,它存储了请求中的...

    深入 struts2

    本文将探讨Struts2的配置文件、Action、请求处理、结果映射、属性驱动和模型驱动,以及异常处理机制。 首先,我们来看Struts2的配置文件,主要是struts.xml。这个文件是Struts2应用的核心配置,用于定义Action、...

    Struts2框架及注释和用法

    Struts2中的模型驱动模式允许将Action与业务对象直接关联,使得Action可以直接操作这些对象。值栈是Struts2中的一种数据管理机制,它存储Action、结果和其他对象,方便在Action之间共享数据。 **5.拦截器...

    Struts驱动包(jar)

    在这个“Struts驱动包”中,包含了Struts 1.2.9版本的必要组件,以及一个空项目,可以作为学习或快速启动新项目的基础。 1. **Struts框架核心组件**: - `struts-core.jar`:这是Struts框架的核心库,包含Action...

    转:struts1与struts2的区别

    此外,Struts2支持模型驱动特性,允许使用现有的业务对象作为输入/输出对象,减少了代码冗余并提高了代码复用性。 #### 6. 表达式语言的改进 - **Struts1**: Struts1集成了JSTL,使用JSTL的表达式语言(EL),支持...

    Struts2.0深入学习 命名空间,模型驱动,表单重复提交

    本篇文章将深入探讨Struts2中的三个关键概念:命名空间、模型驱动以及表单重复提交的处理,这些都是在实际开发中必不可少的知识点。 **命名空间(Namespace)** 命名空间在Struts2中扮演着路由和隔离的作用。它可以...

    struts2 学习资料

    教程通常以实例驱动,让学习者通过实际操作来掌握Struts2。 在学习过程中,你将了解到Struts2如何通过Action类处理用户请求,以及如何通过配置文件或注解来定义Action的映射。拦截器是Struts2的一个重要特性,它们...

    Struts2 in action(struts2实战)

    - Struts2与Dojo、jQuery等JavaScript库集成良好,方便实现异步交互。 10. **测试支持**: - Struts2提供了测试框架,如Struts2 TestNG Plugin,便于进行单元测试和集成测试。 学习并掌握Struts2框架,对于理解...

    struts2总结大全

    模型驱动模式是Struts2的一种设计模式,它将Action实例作为模型,自动将请求参数绑定到Action的属性上。这简化了Action类的编写,减少了手动设置属性的代码,同时提高了代码的可复用性和可维护性。 五、数据校验 ...

Global site tag (gtag.js) - Google Analytics