`
vv_1024
  • 浏览: 111691 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

WebWork2 Property-Driven & Model-Driven 驱动模式

阅读更多
昨天花了一晚上通读了《webwork in action》第三第四章节,高级输入部分的源码硬是通不过,今天趁着晚上值班空闲的时间,终于验证通过了。下面总结一下:

首先是 Property-Driven (属性依附于Action对象)

web.xml 代码
  1. >
  2. <web-app>
  3. <filter>
  4. <filter-name>webwork<!---->filter-name>
  5. <filter-class>
  6. com.opensymphony.webwork.dispatcher.FilterDispatcher
  7. <!---->filter-class>
  8. <!---->filter>
  9. <filter-mapping>
  10. <filter-name>webwork<!---->filter-name>
  11. <url-pattern>/*<!---->url-pattern>
  12. <!---->filter-mapping>
  13. <taglib>
  14. <taglib-uri>webwork<!---->taglib-uri>
  15. <taglib-location>
  16. /WEB-INF/lib/webwork-2.2.4.jar
  17. <!---->taglib-location>
  18. <!---->taglib>
  19. <!---->web-app>


xwork.xml 代码
  1. >
  2. <xwork>
  3. <include file="webwork-default.xml" />
  4. <package name="default" extends="webwork-default">
  5. <action name="userLogin" class="org.vv.action.UserLogin">
  6. <result name="success">welcome.jsp<!---->result>
  7. <result name="input">index.jsp<!---->result>
  8. <!---->action>
  9. <!---->package>
  10. <!---->xwork>

User 代码
  1. package org.vv.vo;
  2. public class User {
  3. private String userName;
  4. private String userPwd;
  5. public String getUserName() {
  6. return userName;
  7. }
  8. public void setUserName(String userName) {
  9. this.userName = userName;
  10. }
  11. public String getUserPwd() {
  12. return userPwd;
  13. }
  14. public void setUserPwd(String userPwd) {
  15. this.userPwd = userPwd;
  16. }
  17. }
UserDAO.java 代码
  1. package org.vv.dao;
  2. import org.vv.vo.User;
  3. public class UserDAO {
  4. public User findByUser(String userName,String userPwd)
  5. {
  6. User user = null;
  7. if(userName.equals("aaa") && userPwd.equals("bbb")){
  8. user = new User();
  9. user.setUserName(userName);
  10. user.setUserPwd(userPwd);
  11. }
  12. return user;
  13. }
  14. }

UserLogin.java 代码
  1. package org.vv.action;
  2. import java.util.Map;
  3. import org.vv.dao.UserDAO;
  4. import org.vv.vo.User;
  5. import com.opensymphony.xwork.ActionContext;
  6. import com.opensymphony.xwork.ActionSupport;
  7. public class UserLogin extends ActionSupport {
  8. private static final long serialVersionUID = 1L;
  9. User user;
  10. UserDAO userDAO = new UserDAO();
  11. Map
  12. public User getUser() {
  13. return user;
  14. }
  15. public void setUser(User user) {
  16. this.user = user;
  17. }
  18. public UserDAO getUserDAO() {
  19. return userDAO;
  20. }
  21. public void setUserDAO(UserDAO userDAO) {
  22. this.userDAO = userDAO;
  23. }
  24. public String execute() throws Exception {
  25. String userName = user.getUserName();
  26. String userPwd = user.getUserPwd();
  27. if (userDAO.findByUser(userName, userPwd) != null) {
  28. ActionContext ctx = ActionContext.getContext();
  29. session = ctx.getSession();
  30. session.put("userName", userName);
  31. return SUCCESS;
  32. } else {
  33. return INPUT;
  34. }
  35. }
  36. }
index.jsp 代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
  2. <%@ taglib prefix="ww" uri="webwork" %>
  3. <html>
  4. <head>
  5. <title><!---->title>
  6. <!---->head>
  7. <body>
  8. <p align="center">
  9. 登录
  10. <br>
  11. <!---->p>
  12. <form action="userLogin.action" method="post">
  13. userName:
  14. <ww:textfield name="user.userName"/>
  15. userPwd:
  16. <ww:textfield name="user.userPwd"/>
  17. <ww:submit name="submit" value="submit"/>
  18. <!---->form>
  19. <!---->body>
  20. <!---->html>

welcome.jsp 代码
  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
  2. <%@ taglib prefix="ww" uri="webwork" %>
  3. <html>
  4. <head>
  5. <title><!---->title>
  6. <!---->head>
  7. <body>
  8. success!!!<br/>
  9. userName:<ww:property value="user.userName"/><br/>
  10. Password:<ww:property value="user.userPwd"/><br/>
  11. session:<ww:property value="#session['userName']"/>
  12. <!---->body>
  13. <!---->html>


下面是Model-Driven 只要修改两个文件即可
UserLogin.java 代码(实现ModelDriven接口和getModel( )方法)
  1. package org.vv.action;
  2. import java.util.Map;
  3. import org.vv.dao.UserDAO;
  4. import org.vv.vo.User;
  5. import com.opensymphony.xwork.ActionContext;
  6. import com.opensymphony.xwork.ActionSupport;
  7. import com.opensymphony.xwork.ModelDriven;
  8. public class UserLogin extends ActionSupport implements ModelDriven{
  9. private static final long serialVersionUID = 1L;
  10. User user;
  11. UserDAO userDAO = new UserDAO();
  12. Map
  13. public User getUser() {
  14. return user;
  15. }
  16. public void setUser(User user) {
  17. this.user = user;
  18. }
  19. public UserDAO getUserDAO() {
  20. return userDAO;
  21. }
  22. public void setUserDAO(UserDAO userDAO) {
  23. this.userDAO = userDAO;
  24. }
  25. public String execute() throws Exception {
  26. String userName = user.getUserName();
  27. String userPwd = user.getUserPwd();
  28. if (userDAO.findByUser(userName, userPwd) != null) {
  29. ActionContext ctx = ActionContext.getContext();
  30. session = ctx.getSession();
  31. session.put("userName", userName);
  32. return SUCCESS;
  33. } else {
  34. return INPUT;
  35. }
  36. }
  37. public Object getModel() {
  38. return user;
  39. }
  40. }

修改xwork.xml
xwork.xml 代码(增加拦截器 interceptor)
  1. >
  2. <xwork>
  3. <include file="webwork-default.xml" />
  4. <package name="default" extends="webwork-default">
  5. <interceptors>
  6. <interceptor-stack name="modelParamsStack">
  7. <interceptor-ref name="params" />
  8. <interceptor-ref name="model-driven" />
  9. <!---->interceptor-stack>
  10. <!---->interceptors>
  11. <action name="userLogin" class="org.vv.action.UserLogin">
  12. <result name="success">welcome.jsp<!---->result>
  13. <result name="input">index.jsp<!---->result>
  14. <interceptor-ref name="modelParamsStack" />
  15. <!---->action>
  16. <!---->package>
  17. <!---->xwork>

ok!
分享到:
评论

相关推荐

    WebWork docs -- webWork 详细的说明文档

    webWork 详细的说明文档, 由于我的上传大小有限, 这个好东西我只能是分两次上传了, 下载的人可能要辛苦一些了, 不过这些都是值得的, 将&lt;&lt;WebWork docs 2 -- webWork 详细的说明文档&gt;&gt; 也一同下载下来, 下载后两个...

    WebWork docs 2 -- webWork 详细的说明文档

    WebWork是一个基于Java的轻量级MVC(Model-View-Controller)框架,它为构建高性能、可维护的Web应用程序提供了强大的支持。WebWork docs 2 是一套完整的WebWork框架的详细说明文档,包含了开发者在使用WebWork时...

    webwork-reference-2.2.2.pdf

    2. **MVC支持**:框架遵循MVC设计模式,将业务逻辑、数据和表示层分离,便于团队协作和代码管理。 3. **类型转换和验证**:内置强大的类型转换和验证机制,可以轻松处理各种数据类型的输入,并确保数据的有效性。 4....

    Model-Driven(模型驱动)、配置表单验证

    **标题:“Model-Driven(模型驱动)与配置表单验证”** **正文:** 在软件开发领域,模型驱动(Model-Driven)是一种先进的开发方法论,它强调将业务逻辑和系统设计通过模型来表达,从而提高开发效率和代码质量。...

    webwork-1.4-src.zip_webwork_webwork s_webwork.zip_webwork1.4.zip

    WebWork 是一个基于Java的开源MVC(Model-View-Controller)框架,它主要用于构建企业级的Web应用程序。WebWork1.4是该框架的一个较早版本,它为开发者提供了强大的功能,包括动作映射、数据绑定、异常处理、国际化...

    webwork JAR xalan-j_2_7_1-bin-2jars

    4. **添加外部依赖**:将`xalan-j_2_7_1-bin-2jars`中的JAR文件复制到Web应用程序的`WEB-INF/lib`目录下,确保WebWork能访问到正确的Xalan版本。 5. **使用Maven或Gradle管理依赖**:如果项目使用了构建工具,可以...

    webwork-tags-API

    WebWork-Tags API 是一个专为WebWork框架设计的标签库,它提供了丰富的标签来简化JSP页面中的Java代码,从而提升开发效率和代码可读性。WebWork是一个基于Action的MVC(模型-视图-控制器)架构的Java Web应用框架,...

    webwork-spring-hibernate.rar_spring_webwork

    这三个框架是Java Web开发中的重要组件,分别负责不同的职责:WebWork(或Struts)是MVC(Model-View-Controller)架构的实现,用于处理用户请求和展示数据;Spring是一个全面的后端应用框架,提供依赖注入、AOP...

    WebWork教程-0.90版

    解压后的主要文件包括`webwork-2.x.jar`(主要Jar包)、`webwork-example.war`(功能演示示例)、`webwork-migration.jar`(用于1.x到2.x迁移)及文档等。 2. **部署Web容器** 推荐使用稳定的**Tomcat 4.1**作为...

    appfuse-light-webwork-spring-jdbc-1.8.2.zip_Java 8_appfuse_webwo

    在"appfuse-light-webwork-spring-jdbc-1.8.2.zip"这个压缩包中,我们能看到一个基于Java 8、WebWork、Spring和JDBC的项目实例。 **Java 8** Java 8是Java平台的重大更新,引入了许多新特性,如lambda表达式、函数...

    Struts2-Webwork2-DWR

    **Struts2** 是一个基于 MVC(Model-View-Controller)设计模式的开源 Java 框架,用于简化 Java Web 应用程序的开发。Struts2 结合了 Struts1 和 Webwork2 的优点,提供了更强大、灵活和可扩展的框架。它提供了一种...

    webwork2-spring.jar

    用于集成WebWork2.1和Spring的一个jar文件,编译级别jdk1.4, 已测试过,可以整合

    webwork2实例源代码

    1. **MVC架构**:WebWork2遵循MVC模式,将应用程序逻辑、用户界面和数据模型分离,提高代码的可维护性和可扩展性。在WebWork2中,Action类代表控制器,负责处理请求并调用业务逻辑;视图通常是JSP页面,用于展示结果...

    Webwork2-Guide.rar_webwork2

    Webwork2是一个基于Java的轻量级Web应用框架,它为开发者提供了构建MVC(Model-View-Controller)架构的应用程序的强大工具。本教程“Webwork2-Guide”旨在指导用户理解和掌握Webwork2框架的核心概念和技术。让我们...

    WebWork教程开发资料

    Field-Driven Action依赖于字段级别的验证,而Model-Driven Action则更侧重于对象模型的管理。 **Field-Driven Action vs. Model-Driven Action** Field-Driven Action的焦点在于单独字段的验证,每个字段都有对应...

    webwork2个人学习总结

    例如,`params`拦截器负责将请求参数封装到Action的属性中,而`model-driven`拦截器支持Model驱动的Action模式。 4. **Action配置**: - 在`&lt;action&gt;`节点中,定义了具体的Action,如`login`,并指定了Action类`...

    webwork配置详解

    - **Model-Driven Action**:与Field-Driven Action不同,Model-Driven Action使用一个模型对象来封装业务数据。模型对象持有所有相关的业务状态,而Action仅作为模型和控制器之间的桥梁。 **ActionContext(Action...

    webwork学习资料

    而在Model-Driven Action中,Action只有一个属性指向Model对象,所有的表单字段都映射到Model对象的属性上,这使得Model可以在多个Action之间共享。 6. **ActionContext (Action上下文)** ActionContext是WebWork...

    WebWork_开发指南

    这两个输入框的名称均以 “model” 开头,这是因为使用了 WebWork 的 Model-Driven Action 驱动模式。 #### 四、核心概念和技术点 - **Action 驱动模式**:WebWork 支持 Action 驱动模式,即用户提交表单时,框架...

Global site tag (gtag.js) - Google Analytics