`
leisure
  • 浏览: 26447 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

springframe中的petstore中的setServlet()什么时候调用

    博客分类:
  • Java
阅读更多
springframework 自带的例子jpetstore中的BaseAction类
public abstract class BaseAction extends Action {

private PetStoreFacade petStore;

public void setServlet(ActionServlet actionServlet) {
super.setServlet(actionServlet);
ServletContext servletContext = actionServlet.getServletContext();
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
this.petStore = (PetStoreFacade) wac.getBean("petStore");
}

protected PetStoreFacade getPetStore() {
return petStore;
}

}

中的setServlet()方法什么时候调用的啊?为什么?
分享到:
评论
5 楼 leisure 2006-12-26  
RequestProcessor.java中有
protected Action processActionCreate(HttpServletRequest request,
        HttpServletResponse response, ActionMapping mapping)
        throws IOException {
        ..............
        // 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;

        synchronized (actions) {
            // 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);
            }
        .............
        if(instance.getServlet() == null) {
           instance.setServlet(this.servlet);
        }
        return (instance);
    }


应该就是在
if(instance.getServlet() == null) {
           instance.setServlet(this.servlet);
        }

中执行setServlet()方法了.
恩 看来还是要多看源代码啊,多谢楼上两位指点,我还是真菜啊
4 楼 leisure 2006-12-26  
我在log4j配置文件中加入一条:
引用
log4j.logger.org.springframework.samples.jpetstore.web.struts.BaseAction=INFO


而后把BaseAction中的setServlet()改为:
private PetStoreFacade petStore;
public void setServlet(ActionServlet actionServlet) {
		super.setServlet(actionServlet);
		if (actionServlet != null) {
			ServletContext servletContext = actionServlet.getServletContext();
			WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
			this.petStore = (PetStoreFacade) wac.getBean("petStore");
		}
		
	  System.out.println("俺已经初始化了么?");	
	}


启动tomcat时候,没有输出该语句.
我进入首页后,点击  Enter the Store,控制台输出了该语句,此时执行的DoNothingAction
其代码如下:
public class DoNothingAction extends BaseAction {

  /* Public Methods */

  public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
    return mapping.findForward("success");
  }
}


所以看来确实是在Action初始化的时候执行的该方法.
不过每次执行一个BaseAction子类,setServlet()方法就要执行一次.
不知道有更好的方法没?方法里面的内容只要执行一次不就可以了吗?
3 楼 宏基小键盘 2006-12-25  
我以前测试了下是在web应用启动时就初始化了,不信可以在这个方法里system.out.pringln一下。
2 楼 宏基小键盘 2006-12-25  
Spring的jpetstore很经典啊。
1 楼 ahuaxuan 2006-12-25  
这个方法会在action初始化的时候调用,这样在action初始化的时候就把spring管理的bean付给了action(作为action的全局变量),但是要注意的是在action中只有无状态的对象才能作为action的全局变量哦,如果还不明白,看看struts源代码中的requestprocessor类你就明白了

相关推荐

    Spring-frame

    Spring框架的介绍,描述了和介绍了Spring常用的方法以及对Spring框架的整体介绍

    用于IDEAL开发web service的springframe框架的jar包

    在“用于IDEAL开发Web Service的springframe框架的jar包”中,"spring-framework-master"可能是指Spring框架的源码仓库。如果你正在使用IDEAL进行开发,这个压缩包可以让你深入了解Spring的工作原理,并可能包含了...

    spring框架依赖

    Spring框架是中国著名的Java企业级应用开发框架,由Rod Johnson在其著作《Expert One-on-One J2EE Design and Development》中首次提出。它简化了Java应用程序的开发,通过提供一种声明式编程模型,使得开发者可以将...

    Spring-framework-5.0.x官方源码

    在Spring Framework 5.0.x中,以下几个核心知识点值得深入探讨: 1. **模块化设计**:Spring Framework 分为多个模块,如Core Container(核心容器)、Data Access/Integration(数据访问/集成)、Web、AOP(面向切...

    spring-context-support-1.0.5-API文档-中英对照版.zip

    赠送jar包:spring-context-support-1.0.5.jar; 赠送原API文档:spring-context-support-1.0.5-javadoc...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 双语对照,边学技术、边学英语。

    maven+springmvc+spring+mybatis框架V1.0

    在我们的框架中,Maven负责下载并管理所有必要的库,确保各组件之间的兼容性,并自动化构建过程,包括编译、测试、打包等步骤。 接下来,SpringMVC是Spring框架的一部分,专门用于处理Web层的请求。它采用了模型-...

    spring-framework完整源代码(spring框架源码)

    spring-framework完整源代码(spring框架源码) 完整的Spring工程源码,工程内内包括spring各模块源码 ...你全部下载下来后一起放到lib文件夹下,到此即可无误的将spring源文件导入ide中学习参考了!

    spring 4.3.29 所有jar包

    Spring框架是Java开发中最受欢迎的轻量级框架之一,它为构建企业级应用程序提供了全面的编程和配置模型。4.3.29是Spring框架的一个稳定版本,它包含了多个核心模块和其他相关组件,以支持现代Java应用的开发。在这个...

    基于JavaMail的常用类详细介绍

    JavaMail 是一个用于在Java应用程序中处理电子邮件的开源库,它提供了一系列的API,使得开发者能够方便地发送、接收和管理邮件。以下是基于JavaMail的常用类的详细说明: 1. **javax.mail.Properties** 类: ...

    兼容jdk1.8的spring.jar包

    该jar包兼容了jdk1.3到1.8,可以放心使用。

    Spring Framework 5.1.0源码

    Spring Framework 5.1.0源码 The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. ...

    java版 Spring Cloud搭建(二)创建Spring Boot工程-b2b2c小程序

    创建一个Spring Boot工程,这次创建比之前创建多一个步骤,在创建的时候选中web的starter,我们来创建一个web工程,在IntelliJ IDEA中创建的时候选中web,了解springcloud架构可以加求求:三五三六二四七二五九 ...

    SpringFrameWork_file

    在Spring Framework中,最重要的概念是依赖注入(Dependency Injection,简称DI),它是Spring的核心之一。通过DI,对象之间的关系不再硬编码,而是通过配置来决定。这样,对象可以在运行时动态地获得它们所依赖的...

    spring-boot-2.2.x:spring-boot-2.2.x原始码解读

    Sprint Boot Spring Boot可以帮助您以最小的麻烦来创建Spring支持的生产级应用程序和服务。 它从Spring平台的角度出发,以便新老用户都能快速找到所需的信息。 您可以使用Spring Boot创建... import org.springframe

    SpringFrameWork

    Spring Framework是中国最流行的Java应用开发框架之一,由Rod Johnson创建并首次发布于2003...随着版本的迭代,Spring不断适应新的技术和趋势,例如响应式编程、云原生应用开发等,确保其在现代软件开发中的领先地位。

    RED5必备开发包-1

    org.springframework.core-2.5.6.A.jar

    org.springframework.web.servlet-3.1.0.RELEASE

    是源代码,不是jar文件!!!!! /** * Holder for both Model and View in the web MVC framework. * Note that these are entirely distinct.... * both to make it possible for a controller to return both model ...

    spring-security-ad:用于 Spring Security 的 Microsoft Active Directory UserDetailsS​​ervice 和 AuthenticationProvider

    弹簧安全广告 用于基于 Microsoft Active Directory 的 AuthenticationProvider 和 UserDetailsS​​ervice 。 它适用于 Windows 2003、2008 和 2012 服务器。 项目设置 ... < groupId>org.springframe

    SpringMVC基础

    SpringMVC基础 概念 SpringMVC简介 配置 添加依赖 Spring-webmvc(4.3.6)八个jar包添加进来 配置web.xml文件: 让所的/请求都交给了我DispatcherServlet,而DispatcherServlet里面需要配置一个... org.springframe

    spring boot整合Shiro实现单点登录的示例代码

    import org.springframe; ``` 四、Shiro 的常见问题 在使用 Shiro 时,经常会遇到一些问题,例如: Q:对组的支持? A:Shiro 默认不支持对组设置权限,但可以通过扩展 Realm 来实现对组进行分配角色。 Q:是否...

Global site tag (gtag.js) - Google Analytics