自定义(继承自 javax.servlet.http.HttpServlet)的 Servlet 如何像 Struts1/2 中那样调用 Spring 容器的 service 呢?
如同 Struts1/2 的配置一样,Spring 在 web.xml 中的配置及其 application*.xml 配置不变:
web.xml 中:
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>/WEB-INF/applicationContext*.xml</param-value>
- </context-param>
applicationContext-service.xml 中:
- <beanid="operationService"
- class="com.defonds.cds.service.operation.impl.OperationServiceImpl"scope="singleton">
- </bean>
如同一般的 Servlet 的配置一样,Servlet 在 web.xml 中的配置不变:
- <servlet>
- <servlet-name>downloadServlet</servlet-name>
- <servlet-class>com.defonds.cds.common.ArcSyncDownloadServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>downloadServlet</servlet-name>
- <url-pattern>/file</url-pattern>
- </servlet-mapping>
如同一般的 Struts1/2 的 action 一样注入 service:
- privateOperationServiceoperationService=null;
- publicOperationServicegetOperationService(){
- returnoperationService;
- }
- publicvoidsetOperationService(OperationServiceoperationService){
- this.operationService=operationService;
- }
在 Servlet 中如同一般的Struts1/2 的 action 一样调用 service:
- FileInfofileInfo=this.getOperationService().getFileByFidAndSecret(Long.parseLong(fileId),secret);
唯一需要修改的是 Servlet 的 init 方法:
- publicvoidinit(ServletConfigconfig)throwsServletException{
- super.init(config);
- ServletContextservletContext=this.getServletContext();
- WebApplicationContextwac=null;
- wac=WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
- this.setOperationService((OperationService)wac.getBean("operationService"));
- }
分享到:
相关推荐
然而,Spring MVC的性能通常被认为略逊于原生Servlet,因为框架本身引入了额外的开销,如对象创建、方法调用和拦截器链。 性能比较: 1. **初始化时间**:原生Servlet通常比Spring Controller更快地完成初始化,...
Struts作为MVC框架处理用户请求,JSP作为视图展示结果,Servlet在底层提供HTTP请求的处理,Hibernate负责数据持久化,而Spring则扮演容器角色,管理和协调各个组件的交互。这种架构提高了代码的可维护性和可扩展性,...
`SimpleServletHandlerAdapter`是Spring MVC中一个关键组件,它为非Spring MVC注解驱动的Servlet提供了一种简单的方式来与Spring容器进行集成。这篇文章将深入探讨`SimpleServletHandlerAdapter`的工作原理及其在...
在实际应用中,首先我们需要在服务器端创建一个服务接口和其实现类,然后使用Spring4的`@Service`注解标记这个实现类,让Spring管理它。接着,我们需要在服务器端暴露这个服务,这通常通过实现`HessianServlet`并将...
当我们在Servlet中调用Spring管理的DAO时,会遇到一个问题:Servlet并不是由Spring容器直接管理的,因此在Servlet中不能直接使用依赖注入的方式来获取DAO的实例。为了解决这一问题,可以采用以下技术方案。 首先,...
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <param-name>contextConfigLocation <param-value>/WEB-INF/spring-context.xml </servlet> <servlet-mapping> ...
- 接着,我们需要配置XFire的servlet,这里使用的是`XFireSpringServlet`,这是专门为Spring设计的Servlet,能够与Spring容器协同工作,发布在Spring中的Web Service。 - 最后,配置servlet-mapping,将`.ws`后缀...
当用户发送一个HTTP请求到服务器时,Servlet容器(如Tomcat)会根据`web.xml`配置文件中的映射规则,调用相应的Servlet实例来处理请求。Servlet的主要方法有`init()`、`service()`和`destroy()`,分别用于初始化、...
- 服务:每当服务器接收到对Servlet的新请求,都会调用`service()`方法来处理请求和响应。 - 销毁:当Servlet不再使用或者Web应用停止时,调用`destroy()`方法释放资源。 3. **Servlet API的主要接口和类**: - ...
Spring通过IoC(Inversion of Control,控制反转)容器管理对象的生命周期和依赖关系,这使得代码更加松耦合,易于测试和维护。此外,Spring MVC是Spring框架的一部分,它为Web应用提供了一种组织代码的方式,允许...
- Spring框架的库:如spring-context、spring-web等,用于Spring的容器管理和Web支持。 - 数据库驱动:如mysql-connector-java,用于数据库操作。 - 其他可能的依赖:如log4j用于日志记录,Struts2用于MVC框架(在本...
当第一次请求到达时,Web容器会加载并初始化Servlet,然后在每次请求时调用`service()`方法,最后在容器关闭或Servlet不再需要时销毁Servlet。 3. **Servlet的基本方法** - `init()`: 初始化方法,用于设置Servlet...
默认情况下,Servlet容器会调用Servlet的`service()`方法,该方法会根据请求类型(GET、POST等)选择适当的`doGet()`或`doPost()`方法。 三、Servlet生命周期 1. **加载与实例化**:当Servlet容器首次接收到对...
结合MVC框架如Spring MVC,Servlet可以更好地组织代码,提高代码复用性和可维护性。 通过阅读《Servlet基础.ppt》文件,你可以更深入地了解Servlet的基础知识和实践技巧。记住,理论知识结合实践才能真正掌握...
这个服务类将用于调用Spring容器中的Bean方法。通过设置`endpoint`属性,我们可以指定BlazeDS的URL,`destination`属性则用于指定与Spring中哪个服务代理匹配。 在Flex客户端,我们可以通过`SpringService`实例调用...
Servlet容器调用Servlet的`service()`方法,此方法会自动选择适当的`doXXX()`方法处理请求。处理完成后,Servlet将响应写入到`ServletResponse`对象,最后由容器发送回客户端。 5. **Servlet的部署与配置**: 在`...
在接收到请求时,Servlet调用`service()`方法处理。当Web应用停止或Servlet不再需要时,容器会调用`destroy()`方法进行清理工作。 2. **Servlet配置**:Servlet可以通过在Web应用的web.xml文件中定义servlet元素...
DI允许我们在不直接创建对象的情况下,将依赖关系从代码中解耦出来,由Spring容器负责管理和创建对象。这里,我们使用`WebApplicationContextUtils`类来从Servlet上下文中获取Spring的WebApplicationContext,然后...
Spring Boot还支持自动配置Tomcat或Jetty等Servlet容器,用于运行SOAP服务。 **4. Spring集成Web服务的步骤** - **定义WSDL**:首先,根据业务需求定义WSDL文件,描述服务的接口和消息格式。 - **生成服务接口**:...
初始化阶段,Servlet调用`init()`方法进行初始化。当接收到请求时,Servlet容器调用`service()`方法来处理请求。应用关闭或服务器重启时,Servlet会被销毁,调用`destroy()`方法清理资源。 2. **Servlet的注册与...