模型驱动一 | 学习笔记

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

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

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


模型驱动一

 

又叫做 ModelDriven,重新写一个 Action 名字叫做 userModelAction。

实现一个 ModelDriven 的接口,把实现的类写上去。Get Model 的一个方法,直接改 user 即可。

看一下源码,这是一个 ModelDriven 的接口,里面有 Get Model,返回的是 action里面的对象。 

ModelDriven 有一个拦截器

简单看一下,找 ModelDriven,是 opensymphony 下面的 ModelDriven 完成的。

拦截器,根据 intercept 的方法。判断这个是否是 ModelDriven 的类型。

public void setRefreshModelBeforeRes(boolean val)

this. refreshModelBeforeResult=val;

BOverride

public String intercept(ActionInvocati invocation) throws Exception

object action= invocation. getAction()

if (action instanceof ModelDriven)

ModelDriven modelDriven=(ModelDriv)action

Valuestack stack invocationgetstack();

object model= modelDriven. getModel();

if (model I= null)

stack. push(model);

if (refreshModelBeforeResult){

invocation.addPreResultListener(new RefreshModelBeforeResult(,mode1)

}

return invocation.invoke();

}

/**

要实现接口,之所以实现接口,在 modeldriven instances 里面,不是属于他的处理方法,进不来。

实现了这个接口,就是这个类型,限定了它。观察源码,观察底层的东西。

它把表达上的数据设置到对象上面来,struts2去完成这些功能,都是通过这些拦截器去完成的,这已经提到过,有这样的概念。

有 ModelDriven 拦截器去完成对象的赋值,他来了就判断,不属于他就不会做事情。你 action 要实现 ModelDriven 接口。

一旦 Action 属于 ModelDriven,转换成 ModelDriven,注意 ModelDriven 里面有一个 get model,如果不去写 get model,不能赋值。model 不等于 null,而默认情况是空,应该给他一个对象。

原因是可以判断他,做完之后去看一下这些值,刷新以后去设置,把user对象往值里面放。

写完之后要写 register,输出 user,返回 Action.SUCCESS。页面要简单一点,现在请求 regmodle 界面,改一改,要不然重名。

配置一下,name=regModle,成功以后,到显示页面,断点启动,为了看一下如何执行。

请求 regModle,点击,然后填写年龄邮箱,提交,应该走到 ModelDriven。

现在直接调过去,得到值了,还需要设置。DefaultAction invocation,再去请求一下,直接走到 proxy,需要一步一步走。 

DefaultActioninvocation 重新提交一下请求,有的端点必须跟进去,否则进不去。下一步,有的时候找不到,就会跳出。

应该走到 DefaultActioninvocation 里。

找 struts3.4,确定,小屏幕,进入到 Dispatcher下,往下走,Actionproxy Factory先进去,creatactionproxy,找 DefaultActionproxyFactory 这个类,不用管container。

现在在 dispatcher 这个类,最后有一个 proxy,会有一个 getInvocation,判断它,往里面走,继续走,注意看一下,有一个 inv,走进去看一下。

现在还没有值,往下走,走回来再进去,在 proxy Execute 执行,注意 proxy,调用它的执行,要去往下走。在 dispatcher 里,走断点,跳过去,非常麻烦。

这里面有一个 get Invocation 之类的,往里面走之前设置,再往下走,这个DefaultInvocation,看 Modeldriven,往下走,每次判断一下,然后是 invoke,它会去调用下一个,刚刚走 invoke 方法,它的 invoke 方法是调用拦截器的。

Invocation 的设置地方,应该是走过了断点。通过 Modeldriven,把这个值设置过来。

jsp 页面

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

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

密码:<input type="pas sword"name="pd"/><br>

年龄:<input type="text"name="age

<br>

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

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

</form>

UserModelAction

publicclassUserModelActionimploments ModelDriven<User>{

private User user=new User();

public String register

System.out. println(user);l

return Action.SUCCESS;

}

public User getModel(){

return user;

}

属性驱动和模型驱动,自选,如果属性较多可以使用模型驱动。

相关文章
|
7天前
|
前端开发 JavaScript API
探索JAMstack架构:现代Web开发的新范式
【10月更文挑战第28天】JAMstack架构是一种现代Web开发方法,以其高性能、高安全性和易于维护的特点受到开发者青睐。本文深入探讨了JAMstack的核心概念、优势、工具链及其如何改变Web开发方式,包括静态网站生成、API驱动和预渲染等关键技术。
|
15天前
|
前端开发 JavaScript 安全
探索 JAMstack 架构:现代Web开发的新范式
【10月更文挑战第20天】JAMstack(JavaScript、APIs、Markup)架构是一种现代Web开发方法,通过预构建静态页面、动态功能通过APIs实现和依赖JavaScript,提供高性能、安全和可扩展的Web开发新范式。本文深入探讨其核心理念、优势、工具和最佳实践,帮助开发者理解和应用JAMstack。
|
4月前
|
敏捷开发 Java 测试技术
「架构」模型驱动架构设计方法及其运用
本文探讨了MDA在软件开发中的应用,从需求分析到测试,使用UML建模功能需求,通过PIM设计架构,自动生成代码以减少错误。MDA提升了可维护性、可扩展性和可移植性,通过工具如Enterprise Architect和Eclipse MDT支持自动化转换。虽然有挑战,如模型创建和平台转换,但结合敏捷方法和适当工具能有效解决,从而提高开发效率和软件质量。
496 0
「架构」模型驱动架构设计方法及其运用
|
6月前
|
前端开发 数据可视化 搜索推荐
数据驱动的前端设计与开发实践
本文将介绍如何在前端设计与开发中充分利用数据驱动的方法,通过数据分析、用户行为追踪和可视化等手段,指导前端界面设计和功能开发,提高用户体验和产品质量。
|
算法 C++
软件开发入门教程网之C++ 数据抽象
软件开发入门教程网之C++ 数据抽象
|
缓存 自然语言处理 前端开发
【自然语言编程实践】GPT4 企业级在线商城开发 01-数据模型设计 下
【自然语言编程实践】GPT4 企业级在线商城开发 01-数据模型设计
109 0
|
敏捷开发 自然语言处理 前端开发
【自然语言编程实践】GPT4 企业级在线商城开发 01-数据模型设计 上
【自然语言编程实践】GPT4 企业级在线商城开发 01-数据模型设计
123 0
|
设计模式 开发框架 前端开发
手把手教你封装一个健壮的MVP框架,面向接口开发。
在我们的日常开发中,我们都知道 Android 端的开发框架有 MVC,MVP,MVVM,说起这几个框架,大家也肯定都有自己的看法,甚至很多同学也都封装过。
96 0
|
监控 负载均衡 Dubbo
框架设计|学习笔记
快速学习框架设计
框架设计|学习笔记
下一篇
无影云桌面