Servlet托管Spring时,
1、重写servlet中的init()方法,在servlet中使用WebApplicationContext 获取bean对象:
如下:
ArrivingShipsImpl asi;
public void init() throws ServletException {
super.init();
ServletContext servletContext = this.getServletContext();
WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
asi = (ArrivingShipsImpl)ctx.getBean("arrivingShipsImpl");
}
2、实现ApplicationContextAware接口的SpringConetextUtil类,利用回调方法,设置上下文对象,通过上下文对象获取bean对象
@Component
public class SpringContextUtil implements ApplicationContextAware{
private static ApplicationContext applicationContext;
/**
* 实现ApplicationContextAware接口的回调方法,设置上下文环境
*/
public void setApplicationContext(ApplicationContext applicationContext){
SpringContextUtil.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext(){
return applicationContext;
}
/**
* 获取对象
*/
public static Object getBean(String name) throws BeansException{
return applicationContext.getBean(name);
}
}
3、动态代理形式的:
http://blog.csdn.net/yaerfeng/article/details/7368541
思路:把servlet配置为spring的bean,就可以实现其他bean的注入,然后使用代理servlet来辅助配置和运行:
一、代理servlet的写法:
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
/**
* HttpServlet 代理
* @author lwei
* @since 2011-03-17
* @version 1.0
*/
public class HttpServletProxy extends HttpServlet {
/**
* random serialVersionUID
*/
private static final long serialVersionUID = -7208519469035631940L;
Log logger = LogFactory.getLog(HttpServletProxy.class);
private String targetServlet;
private HttpServlet proxy;
public void init() throws ServletException {
this.targetServlet = getInitParameter("targetServlet");
getServletBean();
proxy.init(getServletConfig());
logger.info(targetServlet + " was inited by HttpServletProxy successfully......");
}
private void getServletBean() {
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(getServletContext());
this.proxy = (HttpServlet) wac.getBean(targetServlet);
}
@Override
public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, RuntimeException {
proxy.service(request, response);
}
}
二、业务servlet的写法:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author lwei
*/
public class UserCheckServlet extends HttpServlet {
/**
* random serialVersionUID
*/
private static final long serialVersionUID = 3075635113536622929L;
private UserService userService;(UserService 是spring托管的bean,通过set方法注入)
public void setUserService (UserService userService) {
this.userService = userService;
}
public UserCheckServlet() {
super();
}
public void init() throws ServletException {
super.init();
}
@Override
public void service(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
throws ServletException, IOException, RuntimeException {
....
....
userService.getUserByCode();(注入后bean的使用)
....
....
}
}
三、业务serlvet配置为spring的bean:
<bean id="userCheckServlet" class="com.XXX.xxxxx.web.UserCheckServlet " />
四、web.xml中业务servlet的配置:
<servlet>
<servlet-name>UserCheckProxy</servlet-name>
<servlet-class>com.XXX.xxxx.web.HttpServletProxy</servlet-class>
<init-param>
<param-name>targetServlet</param-name>
<param-value>userCheckServlet</param-value>(业务servlet配置为spring的bean时的名字)
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>UserCheckProxy</servlet-name>
<url-pattern>/UserCheck</url-pattern>
</servlet-mapping>
分享到:
相关推荐
Spring的源代码托管在GitHub上,你可以访问Spring官方网站(https://spring.io/)找到链接,或者直接前往GitHub(https://github.com/spring-projects/spring-framework)进行下载。下载时,选择合适的分支,如主...
1. **Spring Cloud**:系统采用Spring Cloud构建,这意味着它使用了Eureka进行服务注册与发现,Hystrix作为断路器以防止服务雪崩,Zuul或Gateway作为API网关,以及Spring Cloud Config进行配置管理。 2. **微服务...
3. **创建JSF Managed Beans**:JSF中的Managed Beans可以被Spring管理。在`faces-config.xml`中声明Managed Bean,并在`applicationContext.xml`中定义对应的Spring Bean。 4. **数据绑定和事件处理**:JSF的EL...
总的来说,这个【Spring+CXF小Demo】是一个很好的起点,可以帮助开发者了解如何在Spring环境中使用CXF构建Web服务,并进行客户端调用。它涉及到的技能包括XML配置、注解驱动编程、服务暴露与消费等,对于理解分布式...
3. 使用`@Component`和`@Path`注解:将Spring的Bean与Jersey的资源类关联,允许Spring管理资源类的生命周期。 4. 配置Jersey-Spring桥接:通过`ResourceConfig`注册Spring应用上下文,使Spring能够处理依赖注入。 ...
Spring Boot的核心特性包括:内嵌Servlet容器(如Tomcat或Jetty),默认配置,starter POMs,健康检查,外部化配置等。 【Git】 Git是一款分布式版本控制系统,用于追踪对文件的修改,便于多人协作开发。Git的强大...
这些实现可以是Spring管理的bean,这样可以利用Spring的依赖注入和其他特性。 4. **使用JAX-RS注解**:在接口和实现类的方法上添加JAX-RS注解,如`@Path`、`@GET`、`@POST`、`@PathParam`等,来指定资源路径和HTTP...
- 创建 Spring 的配置文件,定义需要托管的 Bean,包括Action、Service、DAO等,可以利用@Autowired注解自动注入依赖。 - 用户登录和注册功能的实现,通常涉及到Action处理请求,Service处理业务逻辑,以及...
通常,我们需要一个OSGI兼容的Servlet容器,如Pax Web,来托管Spring MVC的应用。同时,Spring MVC的配置也需要适应OSGI环境,比如Controller类需要作为OSGI服务注册,以便于路由请求。 在本案例的"OSGI教程"中,你...
Servlet由Web服务器或应用服务器托管,并在其内部运行。它们的主要特点包括: 1. **动态内容生成**:Servlet能够根据用户的请求动态生成内容,这对于创建交互式的Web应用程序至关重要。 2. **容器管理**:Servlet的...
这种整合能够实现强大的功能,例如通过Spring的AOP进行事务管理,利用Hibernate简化数据库操作,以及通过IceFaces提供丰富的用户体验。在实际项目中,这样的架构能够提高开发效率,同时保证系统的可维护性和扩展性。
要实现Web服务,Spring需要配置一个Servlet容器(如Tomcat)来托管应用。然后,定义一个服务接口和实现,使用Spring的`@WebService`注解标记接口,`@Endpoint`注解标记服务实现类。同时,配置WSDL文件生成和发布,...
- GitHub:Spring Boot 的源代码托管在 GitHub 上,可以直接提交 issue 或者参与贡献。 - 邮件列表:加入 Spring Boot 的邮件列表,与其他开发者交流经验和心得。 #### 第一步骤 开始使用 Spring Boot 前,需要了解...
Apache CXF处理服务的创建和交互,Spring管理应用的依赖和生命周期,而Jetty则作为一个轻量级的服务器承载这些服务。通过理解这三个组件的功能和它们之间的协同工作,开发者能够快速搭建和维护Web服务。在实际操作时...
1. **自动装配**:该插件可以自动将Spring管理的Action实例注入到Struts2的ActionContext中,无需手动配置Action类的实例化过程。 2. **减少样板代码**:通过插件,开发者不再需要在Action类中编写getter和setter...
15.5.1. 注入 Spring 托管的 beans 15.6. WebWork 15.7. 更多资源 16. Portlet MVC框架 16.1. 介绍 16.1.1. 控制器 - MVC中的C 16.1.2. 视图 - MVC中的V 16.1.3. Web作用范围的Bean 16.2. DispatcherPortlet...
通过Struts处理用户请求,Spring管理业务逻辑和服务,Hibernate负责数据持久化,可以大大提高开发效率和应用的质量。在实际项目中,通常会结合使用Spring的AOP特性进行事务管理和权限控制,以及Struts的拦截器进行...
- **状态管理**:掌握 Spring Web Flow 中的状态管理和过渡机制。 ##### 7. 利用 Spring Web Flow 构建应用 - **多页面案例**:解决复杂多步骤表单的问题。 - **不同消费者视图**:为不同类型的用户提供定制化的...
在这个myEclipse项目中,我们看到的是一个基于SSH(Spring、SpringMVC、Hibernate)的整合应用,同时利用了Maven进行依赖管理和构建,以及Tomcat7作为应用服务器。现在,让我们详细探讨一下这些技术: 1. **Spring*...
15.5.1. 注入 Spring 托管的 beans 15.6. WebWork 15.7. 更多资源 16. Portlet MVC框架 16.1. 介绍 16.1.1. 控制器 - MVC中的C 16.1.2. 视图 - MVC中的V 16.1.3. Web作用范围的Bean 16.2. DispatcherPortlet ...