模型驱动二 | 学习笔记

简介: 快速学习模型驱动二,介绍了模型驱动二系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【Java Web开发系列课程 - Struts2框架入门模型驱动二】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/537/detail/7300


模型驱动二

 

ModelDriven,首先表单的数据改成 regDriven,不需要对象的名字,直接拿对象的属性,把 Action 改成 Driven。

写一个 UserDrivenAction,跟刚刚的 action 不一样了,刚刚是 Java 的一个普通的类,现在实现 ModelDriven 的一个接口,里面有一个类型。如果想要从页面表单上提供对象的类型,需要写出来,写 user,方法叫 getmodel,getmodel 需要返回指定的对象。

在 Action 中写上获取对象的属性,对象是为空的,Struts2把它注入进来,使用ModelDriven 进行开发,把这个对象直接创建出来。把这个对象给 get user,可以把user 输出来看一下,直接拷贝,这些不改变,直接拿过来。

当然如果页面上需要显示的话,也需要用 get set 的方法。在页面上把 user 显示出来,配置一下。

结果成功后,尝试跑一下。然后访问 regDriven,把年龄,邮箱写上,提交,把数据获取到。

说明 jsp 页面中获取数据时只需要把对象写上,不需要把 user 加上去,通过ModelDriven 方式在 Action 将表达的数据写进来,比刚刚的属性写的页面稍微少一些。

Action 都提供一些接口,具有侵入性。建议在某个对象的类写的特别多的时候,使用ModelDriven 进行开发,页面可以少写一些代码。

实现 ModelDriven 的方法,里面有一个拦截器。Struts2里面的核心内容都是通过拦截器来实现的,把 ModelDriven 带入,把值注入到 action 里,通过拦截器实现。

拦截器主要的方法是 intercept,首先获取要执行目标的 action,And do an action 是否属于 ModelDriven 的这样的一个接口类型,如果不是的话 直接往下走了,只有是这个类型 才会继续往下执行。

Action 中通过 ModelDriven 实现 ModelDriven Intercept 功能的话,这个 action 必须要实现 ModelDriven 这样的一个接口,因为只有属于这样的借口的话 在这个地方判断的话,他才会属于 ModelDriven 这样的类型,接着才会把值设置进来。

UserDriven Action 里面实现了一个getModel方法,本质是在 ModelDrivenintercept里面调用的方法,如果这个方法和这个 getModel 不等于空的时候,才会把值放进,做一些处理。如果等于空,是不会做这样的事情的。

需要把对象创建出来,和属性驱动不太一样的地方。因为属性驱动是由 Struts2来传的,而 ModelDriven 对象是由自己创建的。struts2会将页面的表单数据设置到对应的类型数据上去,这是使用 ModelDriven 进行开发。

Jsp 代码

不需要把 User 加上,属性名称不用加上去。

<form action="regDriven. action" method="post">

用户名:<input type="text"name="name"/><br>

密码:<input type=""name="pwd"/><br>

年龄:<input type="text"name="age"/><br>

邮箱:<input type="text"name="email"/><br>

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

</form>

Action 代码

关注实现接口,还有 getModel。

public class UserDrivenAction implements Model Driven< User>

private User user =new User()

/注册

public String register(

System.out. printIn(user);

return Action. SUCCESS:

}

public User getModel(){

return user;

}

public User getUser(){

return user;

}

public void setUser(User user){

this.user =user;

}

}

实体类代码

public class User {

private String name;

private String pwd;

private int age;

private String email;

public String getName(){

return name;

}

public void setName(String name)}

this. name= name

}

public String getPwd(){

return pwd;

}

public void setPwd(String pwd){

this. pwd= pwd;

}

public int getAge()

return age;

}

public void setAge(int age){

this.age =age;

}

注意表单数据和这个是一样的,属性名称变化,比刚刚简单,配置是一样的,几乎没有什么变化。

Struts.xml 配置

Struts xml 配

<package names"user" extends="struts-default">

<action name="register"class="cn. sxt. action. UserAction

method="register">

<result name="success">show.jsps/result>

</action>

<action name="regDriven"

class="cn. sxt. action. UserDrivenAction"method="

register">

<result>name="success">/show. isps/result>

</action>

</package>

实际应用开发中,选择属性应用开发还是模型驱动开发,建议在实体类属性比较多时,采用模型驱动进行开发。


相关文章
|
5月前
|
并行计算 机器人 网络安全
阿里云服务器上部署ROS2+Isaac-Sim4.5实现LeRobot机械臂操控
本文介绍了如何在阿里云上申请和配置一台GPU云服务器,并通过ROS2与Isaac Sim搭建机械臂仿真平台。内容涵盖服务器申请、系统配置、远程连接、环境搭建、仿真平台使用及ROS2操控程序的编写,帮助开发者快速部署机器人开发环境。
2156 4
|
关系型数据库 MySQL 数据库
mysql事务的 四个特征(ACID)
mysql事务的 四个特征(ACID)
352 2
|
弹性计算 大数据 测试技术
2024年阿里云服务器租用价格表(CPU/内存/带宽/磁盘收费标准)
2024年阿里云服务器租用价格表更新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年、ECS u1实例2核4G、5M固定带宽、80G ESSD Entry盘优惠价格199元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元、2核4G4M带宽轻量服务器一年165元12个月、2核4G服务器30元3个月,幻兽帕鲁4核16G和8核32G服务器配置,云服务器ECS可以选择经济型e实例、通用算力u1实例、ECS计算型c7、通用型g7、c8i、g8i等企业级实例规格。阿里云百科分享阿里云服务器租用费用最新报价
|
自然语言处理 Dubbo 应用服务中间件
Higress和dubbo-go-pixiu都与网关和服务调用有关
Higress和dubbo-go-pixiu都与网关和服务调用有关
214 1
|
XML Java 数据库连接
SpringBoot - 整合MyBatis配置版(XML)并开启事务
SpringBoot - 整合MyBatis配置版(XML)并开启事务
953 0
|
Web App开发 弹性计算 Shell
云起实验室功能介绍
云起实验室全新上线,全新全意为开发者服务,点击开始体验,开始学习旅程。
云起实验室功能介绍
|
3天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
4天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1089 152