• 模型驱动封装


    --------------------siwuxie095

       

       

       

       

       

       

       

    模型驱动封装

       

       

    1、模型驱动通过实体类进行数据传递,即 实体类充当了数据模型

       

    「实体类封装的属性和表单的属性一一对应」

       

       

       

    2、使用模型驱动封装,可以直接把表单数据封装到实体类对象

       

       

       

       

    3、具体步骤

       

    (1)让 Action 实现 ModelDriven 接口

       

    2)在 Action 中创建实体类对象,即 数据模型对象

       

    (3)重写接口的 getModel() 方法,返回数据模型对象

       

       

       

    4、具体实现

       

    1)编写页面

       

    data.jsp:

       

    <%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>表单</title>

    </head>

    <body>

    <form action="${pageContext.request.contextPath }/data.action" method="post">

    username:<input type="text" name="username"/>

    <br/>

    password:<input type="password" name="password"/>

    <br/>

    address:<input type="text" name="address"/>

    <br/>

    <input type="submit" value="提交"/>

    </form>

    </body>

    </html>

       

       

       

    2)编写实体类

       

    User.java:

       

    package com.siwuxie095.entity;

       

       

    // User 实体类

    public class User {

       

    private String username;

    private String password;

    private String address;

    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;

    }

    public String getAddress() {

    return address;

    }

    public void setAddress(String address) {

    this.address = address;

    }

    @Override

    public String toString() {

    return "User [username=" + username + ", password=" + password

    + ", address=" + address + "]";

    }

    }

       

       

       

    3)编写 Action

       

    DataAction.java:

       

    package com.siwuxie095.action;

       

    import com.opensymphony.xwork2.ActionSupport;

    import com.opensymphony.xwork2.ModelDriven;

    import com.siwuxie095.entity.User;

       

       

    /**

    * 使用模型驱动封装获取表单数据

    *

    * 实现 ModelDriven 接口,并指定泛型为实体类类型

    */

    public class DataAction extends ActionSupport implements ModelDriven<User>{

    /*

    * Action 中创建实体类对象,即数据模型对象

    *

    * 注意:是创建,不是声明

    */

    private User user=new User();

    /*

    * 重写接口的 getModel() 方法,返回数据模型对象

    *

    * 返回实体类对象

    */

    @Override

    public User getModel() {

    return user;

    }

       

    @Override

    public String execute() throws Exception {

    System.out.println(user);

    return NONE;

    }

       

    }

       

       

       

    4)配置 Action

       

    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="demo" extends="struts-default" namespace="/">

    <action name="data" class="com.siwuxie095.action.DataAction"></action>

    </package>

       

    </struts>

       

       

       

    5)访问路径

       

    http://localhost:8080/工程名/data.jsp

       

       

       

    5、使用模型驱动封装属性封装需要注意的问题

       

    1)在一个 Action 中获取表单数据,可以使用属性封装,也可以

    使用模型驱动封装,但不能同时使用属性封装和模型驱动封装获取

    同一个表单数据

       

    2)如果同时使用,之后会执行模型驱动封装,不会执行属性封装

       

       

       

    6模型驱动封装表达式封装的异同

       

    1)同:都可以把数据封装到实体类对象中

       

    2)异:使用模型驱动封装只能把数据封装到一个实体类对象中,

    而使用表达式封装可以把数据封装到多个实体类对象中

       

    「前提:一个 Action 中」

       

       

       

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    Nginx IP限制
    Hadoop 基本原理
    Redis 主从复制原理
    ThreadLoacl 小记
    Spring boot @Transaction,@Async在同一个类中注解失效的原因和解决办法
    Kafka学习
    Spring BeanUtils简单使用
    精彩的解释CAP理论的文章
    tcp粘包,udp丢包
    java多线程
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/7338892.html
Copyright © 2020-2023  润新知