在Struts2中,提供了另外一种直接使用领域对象的方式,那就是让action实现com.opensymphony.xwork2.ModelDriven接口。ModelDriven让你可以直接操作应用程序中的领域对象,允许你在Web层和业务逻辑层使用相同的对象。

  ModelDiven接口中只有一个方法,如下

  public T getModel();

  该方法返回一个接受用户输入数据的对象模型。在页面中,这个模型对象中的属性可以直接通过对象名来访问,嗯不需要使用user.name来访问,在action类中,也不需要为这个对象提供getter和setter方法。

  代码如下:

package action;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ModelDriven;
import entity.User; public class Model implements Action,ModelDriven<User> {
private User user=new User();
@Override
public User getModel() {
return user;
} @Override
public String execute() throws Exception {
return SUCCESS;
}
}

实体类:

package entity;
public class User {
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}

  首先还是老样子,创建一个login.jsp,登陆后经过Stuts2的拦截器,找到并进入自定义的实现了action接口和ModelDriven接口的Model类

返回SUCCESS,在stuts.xml中定向到success.jsp页面。

在success.jsp页面中,我们只需要如下定义,就可以实现原有功能

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="s" uri="/struts-tags" %>
<%@ page isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<s:debug></s:debug>
<s:fielderror></s:fielderror>
Hello <s:property value="name"/>
<s:iterator value="list" id="str">
<s:property value="str"/>
</s:iterator> </body>
</html>

登陆后的效果如下

那么什么时候应该使用领域对象,什么时候应该实现ModelDriven接口呢?这两种方式其实实际上没有本质的差别,对于大多数的应用,使用任何一种方式都可以。

在Stuts2中使用ModelDriven action的更多相关文章

  1. Struts2中的ModelDriven机制及其运用

    所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar.struts2.actions; public cla ...

  2. Struts2中的ModelDriven机制及其运用(转)

    所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar.struts2.actions; public cla ...

  3. Struts2中的ModelDriven机制及其运用、refreshModelBeforeResult属性解决的问题

    1.为什么需要ModelDriven? 所谓ModelDriven,意思是直接把实体类当成页面数据的收集对象.比如,有实体类User如下: package cn.com.leadfar.struts2 ...

  4. MVC 5 中Filter控制 action的访问权限

    1,创建一个继承自 FilterAttribute, IActionFilter的类 namespace HeatMetering2.Filters { public class HMV2Authen ...

  5. jquery中ajax向action传递对象参数,json ,spring注入对象

    首先,我这个程序的框架是spring+struts2+hibernate. 后端的action的需要接受从前端传进来的参数,由spring的注入,可知,如果前端用的是form的话,只需要在每个inpu ...

  6. loadrunner 技巧-模拟Run Logic中的随机Action运行

    技巧-模拟Run Logic中的随机Action运行 by:授客 QQ:1033553122   可以这样做,Run-time Settings,删除Action7,然后在其它Action比如Acti ...

  7. ASP.NET Core MVC中Controller的Action,默认既支持HttpGet,又支持HttpPost

    我们知道ASP.NET Core MVC中Controller的Action上可以声明HttpGet和HttpPost特性标签,来限制可以访问Action的Http请求类型(GET.POST等). 那 ...

  8. Struts2中的ModelDriven接口

    若没有实现ModelDriven的接口,Controll的代码会比较冗余,不能实现Controll和Model代码的分离 下面是没有实现ModelDriven接口的SuggestAction pack ...

  9. struts2中<welcome-file>index.action</welcome-file>直接设置action,404的解决方案

    这几天的项目页面的访问全部改为.action访问,在修改首页时遇到了问题.将web.xml文件中<welcome-file>index.action</welcome-file> ...

随机推荐

  1. 广东IP段列表

    广东IP段列表219.137.240.0 219.137.240.255219.137.148.0 219.137.150.255 广东省广州市 电信ADSL219.137.144.0 219.137 ...

  2. C语言变长数组data[0]总结

    C语言变长数组data[0] 1.前言 今天在看代码中遇到一个结构中包含char data[0],第一次见到时感觉很奇怪,数组的长度怎么可以为零呢?于是上网搜索一下这样的用法的目的,发现在linux内 ...

  3. css hack原理

    近期看了几篇关于css hack的文章,认为不错整理一下. css hack非常多人不理解它的原理,事实上大家都知道对于不同的浏览器,CSS的解析程度不一样.因此会导致生成的页面效果不一样:特别是对于 ...

  4. (原创)EasyUI中datagrid的行编辑模式中,找到特定的Editor,并为其添加事件

    有时候在行编辑的时候,一个编辑框的值要根据其它编辑框的值进行变化,那么可以通过在开启编辑时,找到特定的Editor,为其添加事件 // 绑定事件, index为当前编辑行 var editors = ...

  5. iOS开发——高级篇——iOS开发之网络安全密码学

    一.非对称加密 - RSA : + 公钥加密,私钥解密: + 私钥加密,公钥解密: + 只能通过因式分解来破解 二.对称加密 - DES - 3DES - AES (高级密码标准,美国国家安全局使用, ...

  6. 2016-2017 ACM-ICPC Southwestern European Regional Programming Contest (SWERC 2016) E.Passwords AC自动机+dp

    题目链接:点这里 题意: 让你构造一个长度范围在[A,B]之间 字符串(大小写字母,数字),问你有多少种方案 需要满足条件一下: 1:构成串中至少包含一个数字,一个大写字母,一个小写字母:   2:不 ...

  7. struts2 Action获取表单数据

    1.通过属性驱动式 1.首先设置 表单中的数据的name值 如:<input type="text" name="username" value=&quo ...

  8. 查源码分析 游标 写 需要 cursors 一切不看源码的代码引入都是定时炸弹的启动

    https://github.com/PyMySQL/PyMySQL/blob/master/pymysql/__init__.py 建立连接 def Connect(*args, **kwargs) ...

  9. 自己动手写最简单的Android驱动---LED驱动的编写【转】

    本文转载自:http://blog.csdn.net/k_linux_man/article/details/7023824 转载注明出处,作者:K_Linux_Man, 薛凯 山东中医药大学,给文章 ...

  10. Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate

    Silverlight实用示例 - DataGrid行详细信息的绑定DataGrid.RowDetailsTemplate 2012-12-28 21:04 来源:博客园 作者:chengxingli ...