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>
分享到:
相关推荐
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...
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 ...
学习对象:熟悉JavaScript, 了解JSTL, servlet/JSP, Struts 1.2, Hibernate, Spring, Ajax技术。 该示例使用MyEclipse 5.5 IDE用来整合四个技术(Struts 1.2, Spring 2.0, Hibernate 3.2和Ajax技术)的轻量级的...
HTTP代理对于AJAX应用程序与托管Web应用程序以外的主机上的Web可访问服务进行通信很有用。 它是反向代理,实际上不是转发代理,尽管Servlet的模板形式可能会使这条线模糊。 这几乎不是第一个代理,为什么我要编写...
一个轻量级框架,可以将 RestController 和 servlet 作为无服务器云功能执行,无需 springboot、嵌入式 tomcat 或完整 tomcat。
原创作品手录 前言:本讲是在【第二讲:WEB项目-集成Flex3+BlazeDS3.2】的基础上添加Spring功能; 集成方式一:直接采用servlet配置模式,...目标:集成Spring,托管Flex的message请求,使Flex便利使用Spring容器Bean
Google不提供对easilly的API访问,以方便地检索Android应用程序的有用数据,例如将实际发布的版本与设备上安装的版本进行比较并最终提示进行更新。 完成此任务的常用方法是提供一种服务或一个网页,用于在其中...
后台系统普通用户:登录后台管理系统,对菜品、套餐、订单等进行管理 项目亮点 亮点技术:Redis缓存、Git托管代码、Nginx部署静态资源并反向代理、MySQL事务、SpringBoot和MyBatisPlus使用、阿里云短信服务 项目收获...
条形码扫描仪 Spring Boot-Angular / Code128-QR代码阅读器 这是一个QR码阅读器/编写器和Code128阅读器Web应用程序。... Spring boot .jar应用程序托管webapp。 要运行它,请执行mvn spring-boot:run
《JavaServer Faces 2.0完全参考手册》对所有jsf功能都进行了解释,包括请求处理生命周期、托管bean、页面导航、组件开发、ajax、验证器、国际化和安全。贯穿全书的专家组意见提供了关于jsf设计的内部信息。 推荐...
《JavaServer Faces 2.0完全参考手册》对所有jsf功能都进行了解释,包括请求处理生命周期、托管bean、页面导航、组件开发、ajax、验证器、国际化和安全。贯穿全书的专家组意见提供了关于jsf设计的内部信息。 推荐...
将spring托管的bean注入到easyweborm: 提供基于nutz的ORM框架,和Easyweb web无缝集成apps: 提供的demo等appdocs: 相关设计说明文档快速入门初始化Easyweb.initialize()常见初始化时机:如果使用了spring模块,则...
HTTP代理对于AJAX应用程序与托管Web应用程序以外的主机上的Web可访问服务进行通信很有用。 它是反向代理,实际上不是转发代理,尽管Servlet的模板形式可能会使这条线模糊。 这几乎不是第一个代理,为什么我要编写...
1.2.1 JSP、Servlet和JavaBean及 替代技术 14 1.2.2 JSF及替代技术 15 1.2.3 EJB组件技术简介 15 1.3 JBoss的下载和安装 15 1.3.1 下载和安装JBoss服务器 16 1.3.2 配置JBoss的服务端口 18 1.3.3 进入控制台 19 ...
该存储库托管使用Spring和Hibernate在Java中实现的后端。 软件需求 需要JDK 1.8+和Maven来构建项目,并且需要运行MySQL 5.5+和支持Servlet 3.1规范(例如Tomcat 8.5+)的Java EE应用服务器。 使用Eclipse进行开发 ...
它使用连接到内存数据库中H2的Spring Boot后端来维护某些状态,提供了一个简单的Bootstrap / JQuery UI,该UI直接托管在tomcat servlet上。 运行应用程序 使用Docker Compose 先决条件:Docker #docker-compose up...