`
Callan
  • 浏览: 736015 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

struts2中使用ModelDriven

阅读更多

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

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

public T getModel()

方法返回一个用于接收用户输入数据的模型对象在页面中,这个模型对象中的属性可以直接通过属性名来访问(如username),而不需要使用形如“user.username”这种格式的表达式,在action中也不需要为这个模型对象提供JavaBean风格的getter和setter方法
下面我们让在3.1节创建的LoginAction类实现ModelDriven接口,修改后的代码如例3-7所示。

例3-7 LoginAction.java

package org.sunxin.struts2.ch03.action;
import org.sunxin.struts2.ch03.model.User;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ModelDriven;
public class LoginAction implements Action,ModelDriven<User>
{ 
private User user = new User();
 @Override
public String execute() throws Exception
{
…
//省略
}
 @Override
public User getModel()
{
return user;
}
}

修改过的部分以粗体显示。

修改login.jsp,修改后的代码如例3-8所示。

例3-8 login.jsp

…
<form action="login.action" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="reset" value="重填"></td>
<td><input type="submit" value="登录"></td>
</tr>
</table>
</form>
…

修改过的部分以粗体显示。LoginAction实现了ModelDriven接口,表单字段就不需要再使用 “user.”前缀了。

修改success.jsp,修改后的代码如例3-9所示。

例3-9 success.jsp

…
<body>
<h3><s:property value="username" />,欢迎您登
录程序员之家网站(www.sunxin.org)。</h3>
</body>
…


修改过的部分以粗体显示。

完整的项目代码请参看本书配套光盘中的ch03_2目录,测试时,输入URL:

http://localhost:8080/ch03_2/login.jsp

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

分享到:
评论

相关推荐

    Struts2接收参数ModelDriven

    这篇博客文章可能详细探讨了如何在Struts2中使用ModelDriven接口来接收和处理请求参数。 ModelDriven接口允许开发者将一个对象绑定到Action上下文中,这个对象可以被用来存储和传递业务逻辑层的数据。当Action类...

    struts2传递参数及ModelDriven的使用示例

    本示例主要讲解了如何在Struts2中传递参数以及使用ModelDriven模式。首先,我们来逐一解析涉及的知识点。 1. **Struts2框架**:Struts2是Apache软件基金会的一个开源项目,它是基于MVC设计模式的Web应用框架,旨在...

    Struts2_ModelDriven接收参数(项目案例及视频)

    在Struts2中,ModelDriven接口是一个非常实用的功能,它可以帮助我们更方便地处理Action类中的模型数据。这个项目案例和视频教程主要针对初学者,旨在深入理解如何使用Struts2的ModelDriven机制来接收和传递参数。 ...

    strusts2包struts2-rest-showcase-2.1.8.war实现ModelDriven接口项目心得

    在Struts2中,URL的设计对于RESTful服务至关重要,因为它决定了HTTP请求如何映射到特定的方法。例如,`/movies/Thrillers`这样的URL可以映射到`show`方法,通过`id="Thrillers"`参数来获取或展示指定类型的电影。...

    struts1和struts2的区别

    - **Struts2**: Struts2中的Action更像是工厂模式下的产品,每个Action实例都是线程安全的。Struts2提供了ActionSupport基类来简化Action的实现。Action本身可以是任何实现了特定接口的Java对象,甚至是普通的POJO。...

    Struts2中Action接收参数的方法

    例如,在 Action 中实现了 ModelDriven 接口,可以在 JSP 页面中使用 `user2!add?userName=MGC` 的方式将参数传递给 Action。 实例 在 Struts2 项目中,需要在 web.xml 和 struts.xml 文件中进行配置。web.xml ...

    ModelDriven

    在Struts2中,ModelDriven接口主要用于处理Action类中的模型数据,使得开发者无需在Action类中定义所有可能的业务对象属性,而是通过实现该接口将模型直接绑定到请求参数上。 【拦截器(Interceptor)】是Struts2...

    Struts2 Struts2 超好的Struts2 pdf 文档

    1. **Action**:在Struts2中,Action是业务逻辑的载体,负责处理用户请求。Action类通常会与Service层交互,完成特定的业务功能。 2. **配置**:Struts2的配置分为XML配置和注解配置两种方式。XML配置文件(struts....

    Struts2视频教程

    Struts2内置了对OGNL的支持,可以方便地在JSP页面中使用OGNL表达式获取模型数据。 - **标签库**:Struts2提供了丰富的标签库,可以帮助开发者快速构建表单和页面元素,提高开发效率。 - **拦截器**:拦截器是Struts2...

    struts2框架做的学生信息查询系统

    1. **Action类**:在Struts2中,业务逻辑通常封装在Action类中。Action类是处理用户请求的实体,它执行特定的业务操作,并通过返回值决定后续的页面流向。 2. **配置文件**:Struts2的核心配置文件是struts.xml,它...

    Struts2Day2

    `Struts2Day2_modelDriven`可能涉及Struts2中的ModelDriven模式。此模式允许开发者将业务逻辑对象与Action类关联,减少Action类中的代码量。通过实现ModelDriven接口,Action类可以自动绑定一个模型对象,简化了...

    struts2中文帮助文档

    1. **Action和Result**:Struts2中的核心组件是Action类,它代表了应用程序中的业务逻辑。当用户进行操作时,请求会被映射到相应的Action,执行完业务逻辑后,会通过Result返回相应的视图。Result可以是JSP、...

    使用struts2写的小项目

    1. **Action类**:在Struts2中,Action类是业务逻辑的主要载体。每个Action类对应一个用户请求,处理相应的业务逻辑,并返回一个结果。 2. **配置文件**:通常包括struts.xml,这是Struts2的核心配置文件,用来定义...

    struts2简单案例

    - **Action类**:在Struts2中,Action类是处理用户请求的中心组件,它封装了业务逻辑,并通过调用Service层来处理实际的业务操作。 - **配置文件**:`struts.xml`是Struts2的主要配置文件,用于定义Action、结果...

    struts2+spring练习

    5. **ModelDriven模式**:在Struts2中,ModelDriven模式可以帮助简化Action类的编写。通过实现`ModelDriven`接口,Action类可以自动绑定模型对象到请求参数,减少代码量。 6. **Service层**:在Spring中,业务逻辑...

    struts2 接收参数

    在这个例子中,可能讲解了如何创建Model对象,如何在Action中实现ModelDriven接口,以及如何在JSP页面中使用这些模型属性。 总之,Struts2提供了灵活的方式来接收和处理HTTP请求中的参数,这使得开发者能够根据项目...

    struts2开发文档

    3. **OGNL(Object-Graph Navigation Language)**: OGNL是Struts2中的表达式语言,用于在Action、ValueStack和视图层之间传递数据。 4. **Tiles插件**: 提供布局和组合页面的功能,便于创建复杂的视图结构。 5. *...

    Struts2_Action学习笔记、通配符{1},{2}

    - 在web.xml中添加Struts2的过滤器配置: ```xml &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher &lt;filter-name&gt;struts2 &lt;url-pattern&gt;/* ``` - 上述配置表示...

    struts2中action实现ModelDriven后无法返回json的解决方法

    在Struts2框架中,ModelDriven接口用于将Action与模型对象进行绑定,这样可以更方便地进行数据处理。然而,在实现ModelDriven接口后,有时候会遇到无法返回JSON格式数据的问题。通常,这一问题可能是因为Struts2默认...

    Struts2和Struts1的区别,详细点,主要说说Struts2

    - **Struts2**虽然不再强制要求使用ActionForm模式,但仍然支持类似的功能,例如通过ModelDriven模式或使用Struts2的类型转换机制来处理用户输入。 #### 视图技术的支持 - **Struts1**支持使用JSTL标签库和EL表达式...

Global site tag (gtag.js) - Google Analytics