Struts2笔记——Struts2的模型驱动(ModelDriven)

Java领域模型驱动设计案例 什么是领域(Domain)? 我们所做的软件系统的目的都是来解决一系列问题,例如做一个电商系统来在线销售自己企业的产品;做一个灰度发布平台来提升服务的质量和稳定性。任何一个系统都会属于某个特定的领域,例如: 论坛是一个领域:要做一个论坛,那这个论坛的核心业务是确定的:比如用户发帖、回帖等核心基本功能; 电商系统是一个领域:只要是电商领域的系统,那核心业务就是:商品浏览、购物车、下单、减库存、付款交易等核心环节; 同一个领域的系统都具有相同的核心业务,因为他们要解决的问题的本质是类似的。因此可以推断:一个领域本质上可以理解为一个 问题域 。只要确定了系统所属的领域,那么这个系统的核心业务,即要解决的关键问题就基本确定了。通常我们说,要成为一个领域的专家,必须要在这个领域深入研究很多年才行,只有这样才会遇到非常多的该领域的问题,积累了丰富的经验。 立即下载

1.  模型驱动:
         模型驱动是使用javaBean对象来封装请求参数,在整个MVC流程中可以直接使用这个对象。在发送请求后Struts将各个请求参数(javab的属性)封装到一个JavaBean对象中,Action接收这个实例对象并用该对象进行相关处理返回处理结果。
         模型驱动的Action中定义javaBean并实例化,并且需要提供该JavaBean的getter和setter方法。Action需要实现ModelDriven接口。

2.  Struts2模型驱动实现方式:
       那么Struts2是如何将请求参数封装到model中的呢?我们可以解读一下struts-default.xml配置文件,在struts-default.xml中有如下配置:

<interceptors>
       ……
       <!--定义属性驱动的拦截器—>
       <interceptor name=”params” class=”com.opensymphony.xwork2.interceptor.ParametersInterceptor” />
       <!--定义模型驱动的拦截器—>
<interceptor name=”model-driven”  class=”com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor” />
       ……
       <!--定义模型驱动的拦截器栈—>
       <interceptor-stack name=”modelDrivenStack”>
              <interceptor-ref name=”model-driven”/>
              <interceptor-ref name=”basicStack”/>
       </interceptor-stack>
……
       <interceptor-stack name=”defaultStack”>
              <interceptor-ref name=”model-driven”/>
              <interceptor-ref name=”params”/>
       </interceptor-stack>
</interceptors>
<!--定义Struts2默认的拦截器栈—>
<default-interceptor-ref name=”defaultStack” />

其中params拦截器负责提取请求的参数,如果是使用的属性驱动模式,它还负责将请求参数传给Action实例的属性;而model-driven拦截器则负责把请求参数传给模型的属性。

 

 

3. 下面给出一个使用模型驱动的示例程序:

JavaBean类:

public class TestBean { 

    private int id;
    private String name;
    public TestBean(){};
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

Action:

import com.core.bean.TestBean;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class TestAction extends ActionSupport implements ModelDriven<TestBean> { 

    private TestBean testBean=new TestBean(); 

    public TestBean getTestBean() {
        return testBean;
    } 

    public void setTestBean(TestBean testBean) {
        this.testBean = testBean;
    } 

    @Override
    public String execute() throws Exception {
        return this.INPUT;
    } 

    public TestBean getModel() {
        return testBean;
    }
}

采用模型驱动模式后,所有的处理结果都封装在Model中,如果想要在JSP页面上输出属性结果,可以使用<s:property value=”testBean.name”/>或<s:property value=”name”/>输出结果。

 

      

YOLO26改进策略【小目标改进】| 添加专用于小目标的检测层 附YOLOv1~YOLOv11的检测头变化详解 在目标检测领域,小目标检测一直是一个具有挑战性的问题。算法以其高效快速的特点受到广泛关注,然而在面对小目标时,仍存在一些局限性。本文将介绍如何在中添加小目标检测层,以提高对小目标的检测能力。原始模型结构如下: 二、有效特征层对应的检测头类别 2.1 P3/8 - small检测头 原始模型中的对应的检测头主要用于检测相对较小的目标。其特征图大小相对较大,空间分辨率较高。 适合检测尺寸大概在到像素左右的目标。 2.2 P4/16 - medium检测头 这个检测头对应的经过了更多的下采样操作,相比P3/ 阅读详情

相关推荐

《深入 UFS Explorer:自定义 RAID 配置指南》

UFS Explorer支持以虚拟模式组装任何受支持的RAID配置,以便后续访问其内容或恢复丢失数据。启动RAID构建器;向RAID构建器主内容区域的列表中添加RAID组件;为不可用组件插入占位符(需当前RAID级别支持且软件兼容);调整组件的准确顺序;在“虚拟RAID配置”区域设置RAID参数;以虚拟模式组装阵列各部分。程序主窗口“存储设备导航面板”中打开的任何存储设备(包括驱动器、逻辑卷、磁盘镜像、虚拟磁盘及其他复杂存储设备)均可作为RAID组件。

melonbo的专栏 1404

struts2(二)---ModelDriven模型驱动

这篇文章是在上一篇文章(http://blog.youkuaiyun.com/u012116457/article/details/48194905)的基础上写的,大家可以先快速阅读一下上一篇。 这篇文章用来写一下struts中的模型驱动机制modelDriven 1.为什么要用modelDriven struts中Action 用来处理业务逻辑,如果向上一篇文章中的做法,把实体类...

weixin_30701575的博客 181

从零开始:手把手教你用Verilog搭建一个可配置的Cache模块(以Vortex GPGPU为例)

本文详细介绍了如何使用Verilog从零开始搭建一个可配置的Cache模块,以Vortex GPGPU为例。内容涵盖Cache设计基础、模块接口与参数化设计、核心子模块实现、仲裁与一致性机制、功能验证与性能调优等关键环节,适合RTL设计初学者和希望深入理解Cache工作原理的工程师。通过实战指南,读者可以掌握硬件代码分析技巧,提升Cache模块的设计能力。

weixin_42552315的博客 441

Struts2模型驱动原理

谈到模型驱动之前,先了解一下属性驱动,属性驱动和模型都是用来解决表单值和类中的属性值对应传递的。   一、属性驱动 a)  原理:主要靠的就是ParameterInterceptor拦截器来实现表单值和action中对应属性的值传递,valueStack.setValue()方法操作值栈。 b) 形式:      i. 在action中设置属性,属性的名称和页面表单中name属性的名称一

红桃峰峰 的博客 4821

【校招】SHL 的 General Ability (GA, 通用能力测试)

SHL 的 General Ability (GA, 通用能力测试) 文章目录SHL 的 General Ability (GA, 通用能力测试)1、归纳推理题1.1 圈圈线条推理1.2 图形颜色位置推理1.3 箭头指向推理2. 数字推理题攻略3. 语言推理题 1、归纳推理题   归纳推理题我把它总结为三种类型:圈圈线条推理;图形颜色位置推理;箭头指向推理。 1.1 圈圈线条推理   你别看这个题目看起来很复杂,其实很简单,而且这个题型的题目背后原理都一样!我把我的 tips 偷偷分享给你们嘿嘿~先从 A

Sunnyside_ 2万+

CCS安装教程图解说明:可视化步骤快速上手

通过清晰的图解步骤详解CCS安装过程,帮助新手快速掌握环境搭建。结合ccs安装教程与实际操作界面,每一步都直观易懂,大幅降低学习门槛,提升配置效率。

weixin_42611310的博客 964

struts2 接受参数的两种方式(属性驱动和模型驱动)

定义: 在struts2中,页面的数据和action(控制层)传输基本上有两种方式,一个是属性驱动、另一个是模型驱动。 属性驱动 基本数据类型的属性对应: 就是Web页面上html标签的name属性或者与属性相对应的getter/setter相对应。当页面提交的时候,struts2会自动从request对象里面把数据取出来,然后按照名称进行对应,自动设置到Action的属性里面去。 缺点:如果实

xyffly的博客 7128

ACS驱动器直线电机回零程序与误差补偿Buffer实战解析

本文深入解析了ACS驱动器控制直线电机时,实现高精度回零与误差补偿的完整实战流程。核心在于利用驱动器的D-Buffer功能,将激光干涉仪测量的误差数据导入补偿数组,通过ERRORMAP1D指令进行映射,从而实时修正定位误差,显著提升设备重复定位精度。文章详细拆解了回零程序逻辑、补偿参数设置及关键调试避坑指南。

650

Struts2的模型驱动(ModelDriven)

Struts2笔记——Struts2的模型驱动(ModelDriven) 1.  模型驱动:           模型驱动是使用javaBean对象来封装请求参数,在整个MVC流程中可以直接使用这个对象。在发送请求后Struts将各个请求参数(javab的属性)封装到一个JavaBean对象中,Action接收这个实例对象并用该对象进行相关处理返回处理结果。       

技术何 7894

使用R语言实现循环神经网络RNN进行文本生成

首先,让我们回顾一下循环神经网络(Recurrent Neural Networks,RNN)的基本概念。RNN是一种深度学习技术,特别适合处理序列数据,如时间序列和文本数据。RNN的关键特性是它的隐藏状态,这个状态可以捕捉到当前输入之前的信息。这使得RNN能够利用前面的信息来影响后续的输出,从而对序列数据进行有效的处理。

斌擎科技 725

AI智能体丨使用Coze一键生成爆款书单视频,3个月内获赞131.1w!(附保姆级教程)

这篇教程详细介绍了如何使用扣子(Coze)平台的AI智能工作流批量制作爆款书单视频。通过自动化流程,只需1-2分钟即可生成45-50秒的书单视频,效率提升近百倍。工作流包含文案生成、音频合成、图片素材获取、视频剪辑等全流程,支持随机生成8本书单、自动提取金句、智能配音等功能。教程提供了完整的操作步骤,包括剪映草稿配置、特效添加等细节,并附体验链接和示例效果。最终生成的视频包含书单展示、金句字幕、背景音乐等元素,适合书单号运营者快速批量产出内容。

李同学Lino的博客 2355

struts2模型驱动方式传值

【例】用户登录第一步:创建user域对象package com.dwx.bean; public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String u...

1650

大数据领域数据服务的数据分析工具推荐

你有没有过这样的经历?——领导说“帮我分析一下上个月的销量”,你打开Excel却发现数据有100万行,电脑直接卡死;或者想实时知道“现在直播间的观众在买什么”,却不知道用什么工具处理每秒10万条的点击数据。本文的目的:帮你解决“选什么工具做什么事”的问题,覆盖大数据服务的全流程(采集→存储→处理→分析→可视化),推荐高频、实用、易上手的工具,并讲清楚它们的“适用场景”和“优缺点”。范围。

大数据洞察的博客 1932

【Struts2学习笔记】14:实现ModelDriven(模型驱动)接口接收用户输入为Action传值

在J2EE课上了解了更先进的ModelDriven(模型驱动)方式,也对Struts2的这三种传值方法有了更深刻的认识。 ModelDriven的优势 之前学过直接的属性注入,就是在页面中提交Action所组合的属性的名字;学过域模型注入,就是在页面中提交Action所组合的全小写对象的对象名.属性名,这个对象也叫领域对象,可以理解成带领自己的这几个域的对象。 在属性注入中,如果属性非常多,...

大桔骑士的学习笔记 1452

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Struts2中的ModelDriven机制及其运用

ModelDriven<br /> 为什么需要ModelDriven<br /> <br />所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象。比如,有实体类User如下:<br /><br />package cn.com.leadfar.struts2.actions;<br /> <br />publicclass User {<br />    privateintid;<br />    private String username;<br />    private Str

李腾飞的专栏 10万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

模型驱动 ModelDriven

ModelDriven:模型驱动,对所有action的模型对象进行批处理. 我们在开发中, 在action中一般是用实体对象,然后给实体对象get,set方法。 RegAction{   User user ;   //get/set } 然后在jsp页面中给action中的user属性绑定值是通过如下方式 &lt;s:textfield name="user.name" /&gt; &l...

paullinjie的博客 4204

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Struts2之ModelDriven用法

我们在使用Struts2时,客户端的数据传递有很多方式,我们推荐使用Action类实现ModelDriven接口的方式,因为它有很多便利之处! 我们可以根据Action属性的不同将它分为两类:Field-Driven(属性驱动)和Model-Driven(模型驱动)Action。  一、Field-Driven(属性驱动)Action,Action拥有自己的属性,这些属性一般是Java

Leeon的博客 2956

Struts2 ModelDriven使用总结

strus2中获取表单数据有两种方式属性驱动和模型驱动,属性驱动即使用Action的属性元素封装请求参数,而模型驱动是使用javaBean来封装来回请求参数。 【struts2中模型驱动的使用方法】 一个Action要想成为模型驱动的话,就必须实现ModelDriven接口,请看下面一个例子: 上面的代码,首先BaseAction实现了ModelDriven接口,在BaseActio...

紫陌520的博客 268

Struts2模型驱动

把动作和模型隔开 在使用 Struts 作为前端的企业级应用程序时把动作和模型清晰地隔离开是有必要的: 有些动作类不代表任何模型对象, 它们的功能仅限于提供图文显示服务 ModelDriven 拦截器 l情景:有一个用来处理客户的CustomerAction类,该动作类实现了ModelDriven接口. l当用户触发CustomerAction动作时,ModelDriven拦截器将

球球之家 1406

struts2中的ModelDriven

在使用struts2的时候,我们在jsp中经常写这样的代码片段: 学生姓名: 考试名称: 考试分数: 其中studentScores.student.stuName是对应后台action的熟悉,action是这样写的 public class StudentExamAction extends ActionSupport { // 学生

xqf的小站 2987

Struts2属性驱动与模型驱动

Struts2属性驱动与模型驱动 为什么要使用属性驱动和模型驱动 struts2与struts很大的不同点在于,struts的execute方法提供了HttpServletRequest和HttpServletResponse方法在获取客户端提交的数据信息的时候需要使用HttpServletRequest的getParameter()方法,并且还需要进行必要的数据类型转换。如何客户端提交的数据

博学而笃志,切问而近思 1万+

Struts模型驱动

模型驱动 Struts运行时候,会执行默认的拦截器栈,其中有一个拦截器,模型驱动拦截器: <interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>   @Override public String intercept(Action

LFSenior 4041

Struts2的ModelDriven机制

好久没有写博客了,这段时间个人事情实在太多,耽误了学习,心中惶恐不安!         今天这篇博客我们介绍Struts2中的ModelDriven机制!         在struts2中提供了一种特殊的领域对象的访问方式ModelDriven,我们可以通过ModelDriven直接操作应用程序中的模型对象,我们可以再不同层中使用相同的对象。使用ModelDriven必须要在action

致力于顶级java全栈工程师 1050

Struts2之ModelDriven的使用

Java代码  我们可以根据Action属性的不同将它分为两类:Field-Driven(属性驱动)Action和Model-Driven(模型驱动)Action。  一、Field-Driven(属性驱动)Action,Action拥有自己的属性,这些属性一般是Java的基本类型。表单字段直接和Action的属性对应。  二、实现了modelDriven接口可以在action中直接获得例如

qq_29631069的博客 533

Struts2的模型驱动和属性驱动

Struts2环境搭建成功后,最起码的要求是能实现对数据的增删改查,然而这就涉及到了如何将前台数据传入到我们后台中,简单说如何将页面的数据传到处理程序中,以及如何把数据库中的数据显示在jsp中,想要实现这些功能,首先要了解Struts2的驱动方式。 属性驱动:使用属性来封装来回请求参数和处理结果,即在jsp页面的每一个form中的name都对应在action中有一个属性与之对应。 如果在jsp

想念的专栏 2672

Struts2中ModelDriven的使用

它是Struts2种独有的一种接收用户输入的机制,想在项目中使用模型驱动 (ModelDriven)需要让Action实现com.opensymphony.xwork2.ModelDriven 接口,使用它 的getModel()方法来通知Struts2要注入的属性类型,并且声明属性时一定要实例化,但不需get, set方法。 package com.lsc.ala...

weixin_30472035的博客 109
上一篇: Struts2笔记——Struts2环境搭建步骤
下一篇: 排序算法(一)——快速排序
carroll0911
博客等级 码龄17年 27粉丝 41原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值