.*; import com.opensymphony.xwork2.ModelDriven; //要实现模型驱动的Action需要实现ModelDriven接口 public class LoginAction...implements ModelDriven{ //必须定义并实例化模型实例 private User user=new User(); //实现getModel方法,用于获取实例对象...return "success"; }else{ return "error"; } } } LoginAction修改的地方有: 1、实现了ModelDriven
三种对象传参和ModelDriven的原理 ModelDriven的作用 所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象。...机制,让UserAction实现一个ModelDriven接口,同时实现接口中的方法:getModel()。...ModelDriven背后的机制 ModelDriven背后的机制就是ValueStack。...) { ModelDriven modelDriven = (ModelDriven) action; ValueStack stack = invocation.getStack...(); Object model = modelDriven.getModel(); if (model !
struts2 ModelDriven & Prepareable 拦截器 前面对于 Struts2 的开发环境的搭建、配置文件以及 Struts2 的值栈都已经进行过叙述了!...这次博文我们讲解利用 Struts2 进行 CURD 操作,体验和 Servlet 的不一样,以此案例理解 ModelDriven 和 Prepareable 拦截器! 案例流程 ?...拦截器其后,这时就需要使用 paramsPrepareParamsStack 拦截器栈,相比于默认拦截器此拦截器会在 ModelDriven 拦截器执行前先去执行一次 params 拦截器,在其后再执行一次...Struts2 默认的拦截器栈为我们提供了 ModelDriven 拦截器以解决此问题 实现 Action 类实现 ModelDriven 使用 ModelDriven 拦截器的优点 Action..., ModelDriven { private Dao dao = new Dao(); private Map requestMap
struts2 ModelDriven & Prepareable 拦截器 前面对于 Struts2 的开发环境的搭建、配置文件以及 Struts2 的值栈都已经进行过叙述了!...Struts2 默认的拦截器栈为我们提供了 ModelDriven 拦截器以解决此问题 实现 Action 类实现 ModelDriven 使用 ModelDriven 拦截器的优点 Action...= invocation.getAction(); //判断 action 是否是 ModelDriven 的实例 if (action instanceof ModelDriven...) { //强制转换为 ModelDriven 类型 ModelDriven modelDriven = (ModelDriven) action; //...ModelDriven 将对应的对象添加到栈顶之后执行 params 拦截器时便将请求参数和栈顶 * 对象对应的属性赋值,使用了 prepare 拦截器之后我们在执行 ModelDriven
RequestAware,SessionAware,ApplicationAware接口,来注入 三个Map 下面的例子就用以上4种方式来实现如何获取web对象 首先建立一个实体类,接收从客户端传过来的参数,通过ModelDriven...,如果对传递参数不明白的可以参看我上篇文章 三种对象传参和ModelDriven的原理 一个Student实体类 package com.yc.web.actions; import java.io.Serializable...; public class StudentAction extends ActionSupport implements ModelDriven{ private static...; public class StudentAction2 extends ActionSupport implements ModelDriven ,ServletRequestAware...; public class StudentAction3 extends ActionSupport implements ModelDriven{ private static
com.bebig.struts2.user.model.User; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven...; public class UserAction extends ActionSupport implements ModelDriven { private User user...return SUCCESS; } @Override public User getModel() { return user; } } 使用ModelDriven
实现数据模型的步骤: 实现一个ModelDriven的接口 实现接口里的方法getModel() 在使用模型驱动的时候,数据模型必须由我们来完成实例化 是由一个ModelDriven...的拦截器帮我们做的 1)实现ModelDriven接口和抽象方法 实现ModelDriven接口,提供一个方法getModel(),编写对象实例。 ...分析: 这有一个专门的拦截器,叫做modelDriven。 ? ...而我们常用的应该为动态参数封装了,其中更为常用的是使用modelDriven,或者直接使用ognl表达式进行封装。 ...2)感受到了struts2架构中的拦截器的作用,确实帮我们做了不少事情,了解了几个拦截器的功能,比如params,staticParams、modelDriven等的使用。 喜欢就点个“推荐”哦!
在struts2中action的分类有:继承 ActionSupport 实现 Action,模型驱动(ModelDriven)的 Action,多方法的 Action三种方式。...html; charset=utf-8"> 登陆错误 用户名或者密码错误 2、模型驱动(ModelDriven...模型驱动的 Action 要求 Action 实现ModelDriven 接口,假如登录页面需要传输参数 username 和 userpass,我们把这 2 个参数封装在一个数据的 JavaBean...com.lzugis.javabean.UserInfo; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven...; public class UserinfoAction extends ActionSupport implements ModelDriven { /** *
一种是通过在Action处理类声明属性并提供SET/GET方法,另一种是Action处理类实现ModelDriven类并提供一个对应的POJO供Struts进行封装。...结果页面result.jsp: 1 2 ${sayHelloStr } 3 二、通过ModelDriven接口实现参数传递 此时的前后台页面和...com.basestruts.pojo.Message; 4 import com.opensymphony.xwork2.ActionSupport; 5 import com.opensymphony.xwork2.ModelDriven...; 6 7 /** 8 * 通过ModelDriven方式传递参数 9 * @author chenyr 10 * 11 */ 12 public class MD_SayHelloAction...extends ActionSupport implements ModelDriven { 13 14 /** 15 * 版本号 16 */ 17
cn.itcast.elec.service.IElecCommonMsgService; import cn.itcast.elec.web.form.ElecCommonMsgForm; import com.opensymphony.xwork2.ModelDriven...; @SuppressWarnings("serial") public class ElecCommonMsgAction extends BaseAction implements ModelDriven
-- Sample model-driven stack --> <interceptor-ref name="<em>modelDriven</em>...通过调试你就可以发现,如果你的拦截器配置的是struts-default或者其它的拦截器组,那么你就会发现,即使你没有在项目中用到某个拦截器,比如我这里并没有实现<em>ModelDriven</em>接口,但是它被运行了...这里我们就查看<em>ModelDriven</em>这个拦截器类。 找到这个类有两种方式:1.在一个action类里面写上这个类,然后ctrl+鼠标左键就可以进入。...可以找到<em>ModelDriven</em>这个类。访问的时候ctrl+shift+T,然后把<em>ModelDriven</em>全路径复制上去就能够进入<em>ModelDriven</em>这个类了。...可以看到 <em>ModelDriven</em>继承了一个抽象类AbstractInterceptor这个抽象类。
...接口 if(action instanceof ModelDriven) { ModelDriven modelDriven = (ModelDriven)action...invocation.addPreResultListener(new ModelDrivenInterceptor.RefreshModelBeforeResult(modelDriven...使用数据模型驱动 实现ModelDriven接口 实现ModelDriven接口,重写方法….实现接口时,要封装的对象是什么,形参类型就给什么 public class UserAction extends...ActionSupport implements ModelDriven { public String login() { return SUCCESS;
版本说明: struts - 2.3.4.1 spring - 3.2.5 hibernate - 3.6 【知识点】 1 模型驱动 1.1 实现接口 implements ModelDriven...1.3 实现RequestAware接口 //实现RequestAware接口 public class EmployeeAction extends ActionSupport implements ModelDriven
import com.gdufe.pojo.User; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven...; public class UserAction3 extends ActionSupport implements ModelDriven { private User
struts2中常用的两种数据传递方式如下: 属性匹配方式 ModelDriven接口匹配方式(常用于自定义类型) 个人比较喜欢使用第一种,为什么呢?...---- 二、ModelDriven接口方式 这种方式与属性方式最大的区别就是自定义类型不用封装,而是通过实现该接口来进行自动赋值,请看下面代码。...页面的name属性也不需要加对象名了) 2.1)修改Action类 public class Hello extends ActionSupport implements ModelDriven
* @author jt * */ public class Employee3Action extends ActionSupport implements ModelDriven...例如: user.username; uiser.age; 3 模型驱动(单一的对象) (掌握) 条件: 1 让action实现一个接口: ModelDriven...2 需要在action的成员位置上申明javabean对象,并且这个对象得实例化 private User user=new User; 3 需要 ModelDriven...javabean对象.属性 例如: user.username; uiser.age; 3 模型驱动 条件: 1 让action实现一个接口: ModelDriven...2 需要在action的成员位置上申明javabean对象,并且这个对象得实例化 private User user=new User; 3 需要 ModelDriven
${requestScope.user.password } 模型驱动 模型驱动和域驱动比较相似,都是用一个JavaBean类作为model,但是模型驱动必须实现ModelDriven...属性值就不需要使用OGNL表达式了,而是直接使用属性字段即可,这个和属性驱动一样的 JavaBean类,这个和上面的一样 Action类,实现了ModelDriver 接口 //实现ModelDriven...接口指定的泛型为JavaBean类 public class SimpleAction implements Action,ModelDriven { private User
com.albertyy.ssh.entity.Customer; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven...Action的类 * * @author yxy */ public class CustomerAction extends ActionSupport implements ModelDriven...com.albertyy.ssh.service.CustomerService; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven...Action的类 * * @author yxy */ public class CustomerAction extends ActionSupport implements ModelDriven
bean.User; import bean.UserInfo; import com.alibaba.fastjson.JSON; import com.opensymphony.xwork2.ModelDriven...; public class UpdateAction extends BaseAction implements ModelDriven { User user = new User
ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven...所有对象类型 */ public abstract class BaseAction extends ActionSupport implements ModelDriven...3.实现了很多接口,值得注意的是Preparable和ModelDriven。...注意这个BaseAction是泛型,就是因为ModelDriven(模型驱动),有了它我们可以直接由ModelDriven的interceptor拦截前台参数,把参数分装成我们指定的泛型类型的对象,而Preparable
领取专属 10元无门槛券
手把手带您无忧上云