`
king_tt
  • 浏览: 2260675 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Servlet 调用 Spring 容器的 service

 
阅读更多
自定义(继承自 javax.servlet.http.HttpServlet)的 Servlet 如何像 Struts1/2 中那样调用 Spring 容器的 service 呢?
如同 Struts1/2 的配置一样,Spring 在 web.xml 中的配置及其 application*.xml 配置不变:
web.xml 中:

  1. <listener>
  2. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  3. </listener>

  1. <context-param>
  2. <param-name>contextConfigLocation</param-name>
  3. <param-value>/WEB-INF/applicationContext*.xml</param-value>
  4. </context-param>



applicationContext-service.xml 中:


  1. <beanid="operationService"
  2. class="com.defonds.cds.service.operation.impl.OperationServiceImpl"scope="singleton">
  3. </bean>



如同一般的 Servlet 的配置一样,Servlet 在 web.xml 中的配置不变:


  1. <servlet>
  2. <servlet-name>downloadServlet</servlet-name>
  3. <servlet-class>com.defonds.cds.common.ArcSyncDownloadServlet</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <servlet-name>downloadServlet</servlet-name>
  7. <url-pattern>/file</url-pattern>
  8. </servlet-mapping>



如同一般的 Struts1/2 的 action 一样注入 service:


  1. privateOperationServiceoperationService=null;
  2. publicOperationServicegetOperationService(){
  3. returnoperationService;
  4. }
  5. publicvoidsetOperationService(OperationServiceoperationService){
  6. this.operationService=operationService;
  7. }



在 Servlet 中如同一般的Struts1/2 的 action 一样调用 service:


  1. FileInfofileInfo=this.getOperationService().getFileByFidAndSecret(Long.parseLong(fileId),secret);



唯一需要修改的是 Servlet 的 init 方法:


  1. publicvoidinit(ServletConfigconfig)throwsServletException{
  2. super.init(config);
  3. ServletContextservletContext=this.getServletContext();
  4. WebApplicationContextwac=null;
  5. wac=WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
  6. this.setOperationService((OperationService)wac.getBean("operationService"));//Spring配置中的beanid
  7. }

分享到:
评论

相关推荐

    原生Servlet与Spring Controller性能比较--Servlet项目

    然而,Spring MVC的性能通常被认为略逊于原生Servlet,因为框架本身引入了额外的开销,如对象创建、方法调用和拦截器链。 性能比较: 1. **初始化时间**:原生Servlet通常比Spring Controller更快地完成初始化,...

    jsp servlet struts hibernate spring

    Struts作为MVC框架处理用户请求,JSP作为视图展示结果,Servlet在底层提供HTTP请求的处理,Hibernate负责数据持久化,而Spring则扮演容器角色,管理和协调各个组件的交互。这种架构提高了代码的可维护性和可扩展性,...

    spring管理servlet的利器--SimpleServletHandlerAdapter

    `SimpleServletHandlerAdapter`是Spring MVC中一个关键组件,它为非Spring MVC注解驱动的Servlet提供了一种简单的方式来与Spring容器进行集成。这篇文章将深入探讨`SimpleServletHandlerAdapter`的工作原理及其在...

    外部接口调用 使用spring4+hessian4实例

    在实际应用中,首先我们需要在服务器端创建一个服务接口和其实现类,然后使用Spring4的`@Service`注解标记这个实现类,让Spring管理它。接着,我们需要在服务器端暴露这个服务,这通常通过实现`HessianServlet`并将...

    JSP 开发之servlet中调用注入spring管理的dao

    当我们在Servlet中调用Spring管理的DAO时,会遇到一个问题:Servlet并不是由Spring容器直接管理的,因此在Servlet中不能直接使用依赖注入的方式来获取DAO的实例。为了解决这一问题,可以采用以下技术方案。 首先,...

    Spring远程调用使用http方式

    &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;/servlet-class&gt; &lt;param-name&gt;contextConfigLocation &lt;param-value&gt;/WEB-INF/spring-context.xml &lt;/servlet&gt; &lt;servlet-mapping&gt; ...

    Web Service框架xfire与spring集成开发流程

    - 接着,我们需要配置XFire的servlet,这里使用的是`XFireSpringServlet`,这是专门为Spring设计的Servlet,能够与Spring容器协同工作,发布在Spring中的Web Service。 - 最后,配置servlet-mapping,将`.ws`后缀...

    Servlet和Struts2的交互(转载)

    当用户发送一个HTTP请求到服务器时,Servlet容器(如Tomcat)会根据`web.xml`配置文件中的映射规则,调用相应的Servlet实例来处理请求。Servlet的主要方法有`init()`、`service()`和`destroy()`,分别用于初始化、...

    servlet api servlet api

    - 服务:每当服务器接收到对Servlet的新请求,都会调用`service()`方法来处理请求和响应。 - 销毁:当Servlet不再使用或者Web应用停止时,调用`destroy()`方法释放资源。 3. **Servlet API的主要接口和类**: - ...

    Spring+Servlet读取数据库返回JSON数据(源码).zip

    Spring通过IoC(Inversion of Control,控制反转)容器管理对象的生命周期和依赖关系,这使得代码更加松耦合,易于测试和维护。此外,Spring MVC是Spring框架的一部分,它为Web应用提供了一种组织代码的方式,允许...

    整理xfire和spring的集成 web service 面向服务编程 java

    - Spring框架的库:如spring-context、spring-web等,用于Spring的容器管理和Web支持。 - 数据库驱动:如mysql-connector-java,用于数据库操作。 - 其他可能的依赖:如log4j用于日志记录,Struts2用于MVC框架(在本...

    servlet基础入门教程

    当第一次请求到达时,Web容器会加载并初始化Servlet,然后在每次请求时调用`service()`方法,最后在容器关闭或Servlet不再需要时销毁Servlet。 3. **Servlet的基本方法** - `init()`: 初始化方法,用于设置Servlet...

    servlet servlet

    默认情况下,Servlet容器会调用Servlet的`service()`方法,该方法会根据请求类型(GET、POST等)选择适当的`doGet()`或`doPost()`方法。 三、Servlet生命周期 1. **加载与实例化**:当Servlet容器首次接收到对...

    Servlet

    结合MVC框架如Spring MVC,Servlet可以更好地组织代码,提高代码复用性和可维护性。 通过阅读《Servlet基础.ppt》文件,你可以更深入地了解Servlet的基础知识和实践技巧。记住,理论知识结合实践才能真正掌握...

    flex与spring连接java后台示例

    这个服务类将用于调用Spring容器中的Bean方法。通过设置`endpoint`属性,我们可以指定BlazeDS的URL,`destination`属性则用于指定与Spring中哪个服务代理匹配。 在Flex客户端,我们可以通过`SpringService`实例调用...

    servletapi

    Servlet容器调用Servlet的`service()`方法,此方法会自动选择适当的`doXXX()`方法处理请求。处理完成后,Servlet将响应写入到`ServletResponse`对象,最后由容器发送回客户端。 5. **Servlet的部署与配置**: 在`...

    Servlet参考手册.zip

    在接收到请求时,Servlet调用`service()`方法处理。当Web应用停止或Servlet不再需要时,容器会调用`destroy()`方法进行清理工作。 2. **Servlet配置**:Servlet可以通过在Web应用的web.xml文件中定义servlet元素...

    Web服务启动时自动加载Servlet,并读取数据库内容

    DI允许我们在不直接创建对象的情况下,将依赖关系从代码中解耦出来,由Spring容器负责管理和创建对象。这里,我们使用`WebApplicationContextUtils`类来从Servlet上下文中获取Spring的WebApplicationContext,然后...

    web service+spring集成

    Spring Boot还支持自动配置Tomcat或Jetty等Servlet容器,用于运行SOAP服务。 **4. Spring集成Web服务的步骤** - **定义WSDL**:首先,根据业务需求定义WSDL文件,描述服务的接口和消息格式。 - **生成服务接口**:...

    Servlet框架基本源码

    初始化阶段,Servlet调用`init()`方法进行初始化。当接收到请求时,Servlet容器调用`service()`方法来处理请求。应用关闭或服务器重启时,Servlet会被销毁,调用`destroy()`方法清理资源。 2. **Servlet的注册与...

Global site tag (gtag.js) - Google Analytics