spring怎么和web项目集成
在maven项目里面导入依赖核心包在pom.xml
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.10.RELEASE</version>
</dependency>
- web项目如何读取spring上下文,创建SpringWebUtil类(为了将spring上下文整合进tomcat容器)
public class SpringWebUtil {
public static final String SPRING_WEB_KEY = "spring_web_key";
/**
*
* @param applicationContext spring上下文
* @param servletContext tomcat容器
*/
public static void setApplicationContext(ApplicationContext applicationContext, ServletContext servletContext) {
servletContext.setAttribute(SPRING_WEB_KEY, applicationContext);
}
public static ApplicationContext getApplicationContext(ServletContext servletContext) {
return (ApplicationContext) servletContext.getAttribute(SPRING_WEB_KEY);
}
}
- 通过监听器实现ServletContextListener,创建ServletContextListenner类,重写init方法将spring进行建模
获取所有spring上下文所管理的javaBean类
public class ServletContextListener implements javax.servlet.ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent sce) {
System.out.println("contextInitialized初始化...");
System.out.println("加载spring上下文所有管理的javabean类");
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring-context.xml");
ServletContext servletContext = sce.getServletContext();
SpringWebUtil.setApplicationContext(applicationContext, servletContext);
}
}
- servlet获取spring上下文
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = -2272673089277108664L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("do someThings");
ApplicationContext applicationContext = SpringWebUtil.getApplicationContext(req.getServletContext());
UserAction userAction = (UserAction) applicationContext.getBean("userAction");
userAction.upload();
}
}
- web.xml文件的配置
<!-- 配置监听器-->
<listener>
<listener-class>com.zking.services.listener.ServletContextListener</listener-class>
</listener>
<!-- 配置servlet -->
<servlet>
<servlet-name>userServlet</servlet-name>
<servlet-class>com.zking.services.servlet.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>userServlet</servlet-name>
<url-pattern>/userServlet</url-pattern>
</servlet-mapping>