`
柳月樱
  • 浏览: 1196 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

struts1源码中的单例模式

阅读更多
protected Action processActionCreate(HttpServletRequest request,
                                         HttpServletResponse response,
                                         ActionMapping mapping)
        throws IOException {

        // Acquire the Action instance we will be using (if there is one)
        String className = mapping.getType();
        if (log.isDebugEnabled()) {
            log.debug(" Looking for Action instance for class " + className);
        }

        // :TODO: If there were a mapping property indicating whether
        // an Action were a singleton or not ([true]),
        // could we just instantiate and return a new instance here?

        Action instance = null;
        synchronized (actions) {
          //sss 每次ancton的创建都是从系统的action map里面根据类名来读取,所以是另外的一种单例模式,所有的同类的action共享一个实例 struts127
            // Return any existing Action instance of this class
            instance = (Action) actions.get(className);
            if (instance != null) {
                if (log.isTraceEnabled()) {
                    log.trace("  Returning existing Action instance");
                }
                return (instance);
            }

            // Create and return a new Action instance
            if (log.isTraceEnabled()) {
                log.trace("  Creating new Action instance");
            }
           
            try {
                instance = (Action) RequestUtils.applicationInstance(className);
                // :TODO: Maybe we should propagate this exception
                // instead of returning null.
            } catch (Exception e) {
                log.error(
                    getInternal().getMessage("actionCreate", mapping.getPath()),
                    e);
                   
                response.sendError(
                    HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
                    getInternal().getMessage("actionCreate", mapping.getPath()));
                   
                return (null);
            }
分享到:
评论

相关推荐

    struts2 源码

    10. **生命周期管理**: Struts2中的Action实例默认为多例,但可以通过配置改为单例,以优化性能。同时,Struts2还支持Spring等依赖注入框架,方便管理Action的依赖关系。 深入学习Struts2的源码,有助于理解其运行...

    struts1.3.10源代码

    深入研究Struts 1.3.10源代码,可以帮助我们掌握Web应用开发的基本架构,理解MVC模式在实践中的应用,以及学习如何通过配置和编程控制请求流程。同时,通过分析源码,还可以学习到如何处理HTTP请求,验证用户输入,...

    hibernate源码,struts2源码,spring源码

    通过阅读源码,可以学习到设计模式的应用,如工厂模式、单例模式、装饰者模式等。此外,还可以了解到如何优化性能,例如Hibernate的缓存策略,以及Spring如何实现事务的自动提交和回滚。 总之,深入学习SSH框架的...

    Struts2.2.1.1源码

    通过阅读和分析源码,我们可以学习到如何设计和实现一个高效、灵活的Web框架,了解设计模式的应用,如工厂模式、单例模式、装饰者模式等。同时,还能学习到如何使用Apache的Commons系列库和其他开源组件,提升自己的...

    JSP书店(struts)源码

    - **单例模式**: 在应用启动时只创建一次DAO和服务实例,提高性能。 - **工厂模式**: 用于创建DAO和服务对象,隐藏具体的创建过程。 - **贫血/富模型**: 在JSP页面中,可能会使用富模型(包含业务逻辑)或贫血模型...

    Struts,Spring,Hibernate源码包

    通过源码,你可以看到设计模式的实际应用,比如工厂模式、单例模式、观察者模式等,并学习到如何在大型项目中组织代码和管理依赖。 总之,深入学习Struts、Spring和Hibernate的源码,对于提升Java开发者的专业水平...

    struts2,spring的源码

    1. **设计模式**:两者都大量运用了设计模式,如工厂模式、单例模式、观察者模式等,理解这些模式在源码中的应用有助于你提升设计能力。 2. **事件驱动和拦截机制**:Struts2的拦截器链和Spring的AOP都是事件驱动的...

    struts-commons包的源码

    10. **设计模式**:识别和学习源码中应用的设计模式,如工厂模式、单例模式、策略模式等,提升自己的设计能力。 通过深入学习和研究这些源码,开发者不仅可以提升对Struts Commons组件的理解,还能加深对Java Web...

    struts+hibernate分页源码

    8. **设计模式应用**: 可以采用工厂模式、单例模式等设计模式来组织分页相关的类和方法,提高代码的可读性和可维护性。 9. **响应式设计**: 如果项目需要支持多种设备,还需要考虑到分页在不同屏幕尺寸下的适应性,...

    xwork2.1.6源码及其之前版本的源码

    8. **设计模式**:XWork源码中运用了多种设计模式,如工厂模式(Factory)、单例模式(Singleton)、装饰器模式(Decorator)等,这些都是Java开发中的经典模式,值得深入研究。 通过学习和分析XWork 2.1.6的源码,...

    Xwork2 源码阅读.pdf(附源码)

    《Xwork2 源码阅读.pdf》是一个深入解析Xwork2框架的文档,结合了Webwork和Struts2的源码...同时,源码阅读也能加深对Java设计模式的理解,如工厂模式、单例模式、装饰者模式等,这些都是软件开发中不可或缺的知识。

    面向对象初学者必须掌握的几种设计模式

    观察者模式 Observer:Swing中的事件模型 工厂模式 Factory:在JDK中遍地都是,比如JDBC、JNDI等,是学习Spring的基础 命令模式 Command:Struts框架的基石 单例模式 Singleton:最简单的设计模式,大量...

    Struts2.0中文教程

    Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用的开发流程。这个框架提供了丰富的特性,包括动作调度、结果映射、插件架构、国际化的支持以及与各种...

    java应用范例源码

    7. **设计模式**:源码中可能运用了常见的设计模式,如工厂模式、单例模式、观察者模式等。设计模式是解决特定问题的成熟方案,熟悉它们能提高代码的可读性和可维护性。 8. **网络编程**:Java的Socket编程可用于...

    Struts2+Spring4+Hibernate4框架整合小项目,包含ssh源码及SQL文件(MySQL)

    此外,对于DAO和Service的设计模式,也应该有所了解,如单例模式、工厂模式等。 总之,SSH框架的整合不仅提升了开发效率,也为项目提供了清晰的分层结构。通过学习和实践这个小项目,开发者可以深入理解Java Web...

    OA办公源码

    通过设计模式如工厂模式、单例模式等,可以使代码更易于理解和复用。 通过研究和学习这个"办公企业OA源码1",开发者不仅可以了解OA系统的实现原理,还能掌握相关技术的应用,为自己的项目开发积累宝贵经验。同时,...

    Struts2

    在源码层面,Struts2的设计遵循了OOP原则,使用了大量设计模式,如工厂模式、单例模式、装饰器模式等,增强了框架的可扩展性和可维护性。通过阅读Struts2源码,开发者可以深入了解MVC框架的工作原理,提升自身技能。...

    当当网源码java版

    服务层的设计可以遵循单例模式或工厂模式,以确保高并发环境下的性能和线程安全。 3. **Controller**:控制器层(Controller)通常由Struts的Action类实现,它们接收HTTP请求,调用相应服务层的方法,处理业务逻辑...

    Spring官方 源码

    Spring框架的源码充满了设计模式的运用,如工厂模式、单例模式、观察者模式、装饰器模式等。通过阅读源码,你可以学习到如何在实际项目中有效地运用这些模式。此外,Spring的源码还展示了如何优雅地处理依赖关系,...

    开源mvc框架源码

    3. **设计模式**:在开源MVC框架中,设计模式如工厂模式用于创建对象,单例模式用于确保类只有一个实例,观察者模式则用于对象间的事件通知。这些模式帮助框架实现灵活、可扩展的结构。 4. **AOP**:面向切面编程...

Global site tag (gtag.js) - Google Analytics