`
dragonzhu
  • 浏览: 14704 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

JPetStore之我见

阅读更多
这两天看JPetStore(ibatis和struts),我原想把struts标签都改成el和jstl(需要加standard和jstl jar文件)。结果把html 改的过程出了很多问题,html:text /areatext /radio/checkbox/ select/ option必须包含在html:form中,它们的property要对应form 的action对应的bean,select/ option比较麻烦。所以总结出来,改造过程可以分两步走:1 html:from部分不变,其中还涉及验证,2bean和logic可以改为el和jstl,不过改了之后竟然识别不出来。。郁闷,只好先暂停。。
在程序中文件的后缀名改为shtml,每一个页面都经过servlet。
下面是beanaction的内容:
private static final String NO_METHOD_CALL = "*";
  private static final String SUCCESS_FORWARD = "success";
  public final ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    String forward = SUCCESS_FORWARD;
    try {
      if (!(form instanceof BaseBean)) {
        if (form != null) {         ...........        } else {         ..............        }
      }
      BaseBean bean = (BaseBean) form;
      ActionContext.initCurrentContext(request, response);
      if (bean != null) {
        // Explicit Method Mapping
        Method method = null;
        String methodName = mapping.getParameter();
        if (methodName != null && !NO_METHOD_CALL.equals(methodName)) {
          try {
            method = bean.getClass().getMethod(methodName, null);
            synchronized (bean) {
              forward = bean.getInterceptor().intercept(new ActionInvoker(bean, method));
            }
          } catch (Exception e) {
           ..........
          }
        }
        // Path Based Method Mapping
        if (method == null && !NO_METHOD_CALL.equals(methodName)) {
          methodName = mapping.getPath();
          if (methodName.length() > 1) {
            int slash = methodName.lastIndexOf("/") + 1;
            methodName = methodName.substring(slash);
            if (methodName.length() > 0) {
              try {
                method = bean.getClass().getMethod(methodName, null);
                synchronized (bean) {
                  forward = bean.getInterceptor().intercept(new ActionInvoker(bean, method));
                }
              } catch (Exception e) {
                .......
              }
            }
          }
        }
      }
    } catch (Exception e) {
      forward = "error";
      request.setAttribute("BeanActionException", e);
    }
    return mapping.findForward(forward);
  }
BeanActionException(RuntimeException) 很值得学习4个构造函数 super()/super(string)/super(throwable)/super(string,throwable)
ActionContext (cookieMap    parameterMap  requestMap    sessionMap   applicationMap/request/response)
abstract class BaseHttpMap拥有四个抽象的方法getNames() /getValue()/putValue()/removeValue())
abstract class BaseHttpMap implements Map 要实现map的一些方法。
throw new UnsupportedOperationException("Cannot put value to ParameterMap.");
分享到:
评论

相关推荐

    jpetstore

    **jpetstore** 是一个由Sun Microsystems公司开发的开源Web应用程序示例,它是一个基于Java技术的网上宠物商店。这个项目被设计成一个简单的“Hello, World”式的Web应用,用以展示Java技术和相关的框架在构建电子...

    jpetstore系统架构图

    《深入解析jpetstore系统架构图:从设计到实现》 在IT行业的软件开发领域,jpetstore系统作为一款开源的网上宠物商店示例应用程序,以其清晰的分层架构、强大的功能性和高度可扩展性而著称。尤其在jpetstore5.0版本...

    jpetstore开源学习代码

    《jpetstore开源学习代码》是一个深受开发者欢迎的学习资源,特别针对那些希望深入理解J2EE(Java 2 Platform, Enterprise Edition)技术的初学者和有经验的程序员。jpetstore项目是一个示例应用,它展示了如何在...

    JPetStore-5.0.zip_JPETSTO_jpetstore-5_jpetstore5_jpetstore5.0_jp

    《JPetStore-5.0:一个基于iBatis的开源电商示例解析》 JPetStore-5.0是一个著名的开源项目,它基于iBatis数据持久层框架,为开发者提供了一个完整的电子商务应用程序示例。这个项目由Apache Software Foundation...

    学习Spring 的例子JpetStore

    Spring的测试支持也是其强大之处。JpetStore项目中的单元测试和集成测试可以利用Spring的TestContext框架,轻松地进行依赖注入,确保每个组件都能独立测试。同时,Spring的Mockito支持可以帮助我们模拟复杂的依赖...

    jpetstore spring 的经典完整可直接运行的例子 jpetstore

    《基于jpetstore的Spring、iBatis与Struts整合实战》 jpetstore项目是Spring框架的一个经典示例,它全面展示了如何将Spring、iBatis和Struts这三个核心的Java Web技术进行集成,构建出一个完整的MVC(Model-View-...

    spring例子: jpetstore

    1. **依赖注入**:Spring的核心特性之一,通过XML配置或注解实现对象之间的依赖关系,使得代码更加松耦合,易于测试和维护。 2. **Spring MVC**:Spring的Web应用开发模型,负责处理HTTP请求,协调模型、视图和控制...

    jpetstore4.0 (spring+struts+ibatis)

    《基于Spring、Struts和iBatis的jpetstore4.0详解》 jpetstore4.0是一款经典的电子商务示例应用,它采用Spring、Struts和iBatis这三个核心框架构建,展示了如何在Java环境下实现一个完整的MVC(Model-View-...

    iBATIS JPetStore

    iBATIS JPetStore是一个经典的开源项目,它用于展示iBATIS框架在实际应用中的使用。iBATIS是一个数据持久层框架,它简化了Java应用程序与数据库之间的交互,避免了直接编写大量的SQL语句。JPetStore是基于iBATIS实现...

    jpetstore宠物店程序

    **jpetstore宠物店程序详解** `jpetstore` 是一个经典的开源项目,它展示了如何使用Java技术栈,特别是Struts和Spring框架来构建一个完整的Web应用。这个程序旨在为用户提供一个在线购买宠物及其相关商品的平台,...

    springMVC+mybatis+jpetstore工程源码

    【标题】"springMVC+mybatis+jpetstore工程源码"揭示了这是一个结合了SpringMVC、MyBatis和jpetstore示例项目的工程,主要用于演示如何在实际开发中整合这三个技术。SpringMVC是Spring框架的一个模块,用于处理Web...

    jpetstore-6.war

    使用了mybatis的jpetstore-6

    MyEclipse中加载Spring的JPetStore

    《MyEclipse中加载Spring的JPetStore详解》 在软件开发领域,Spring框架以其强大的功能和灵活性,已经成为Java企业级应用开发...希望本文的详细解析能对你的学习之路提供帮助,让你在Spring框架的应用上更加得心应手。

    JPetStore (Struts + Spring + Hibernate)版

    **标题解析:** "JPetStore (Struts + Spring + Hibernate)版" 是一个基于Java技术的开源电子商务示例应用,它集成了Struts、Spring和Hibernate三个关键的开源框架。这个版本相较于之前的JPetStore5.0,进行了重要的...

    jpetstore源码

    **jpetstore源码详解** `jpetstore`是一个经典的示例项目,它展示了如何使用Java企业级开发框架实现一个完整的网上宠物商店。这个源码是基于特定版本的Java技术栈构建的,如Spring框架、Struts框架或者MyBatis等,...

    SQL+Jpetstore配置

    ### SQL + JPetStore配置详解 #### 一、概述 JPetStore是一个广泛使用的开源示例应用程序,旨在演示企业级Java应用的构建过程。本文档将详细介绍如何在使用Oracle数据库时配置JPetStore,并解决配置过程中可能出现...

    JPetStore静态页面_java_java课程设计_java编程_

    **Java Web应用:JPetStore静态页面** JPetStore是一个基于Java技术的示例Web应用程序,主要用于教学目的,让学生和开发者了解如何使用Java进行Web开发。这个项目通常出现在Java课程设计中,它提供了构建电子商务...

    jpetstore源代码

    **标题解析:** "jpetstore源代码" 这个标题指的是一个开源项目或示例应用,名为"jpetstore",它提供了完整的源代码。这个项目可能是为了演示或者教学目的,让学习者能够理解并研究Java编程语言,特别是与Web应用...

    JPetStore4.0.5

    《JPetStore4.0.5:Ibatis与Struts的经典结合》 JPetStore4.0.5是一个基于Java的开源电子商务应用,它展示了如何有效地利用Ibatis和Struts框架构建一个简单而实用的在线商店系统。这个版本在设计上保持了简洁性,...

Global site tag (gtag.js) - Google Analytics