帮助类
/**
* @program: Maven
* @description: spring整合进tomcat
* @author: hw
* @create: 2018-12-04 15:18
**/
public class SpringWebUtil {
private static final String SPRING_CONTEXT_KEY = "spring_context_key";
/**
* spring放入tomcat容器中
*
* @Description:已经建模好的spring的上下文
* @Param: [context, servletContext]
* @return: void
* @Author: hw
* @Date: 2018/12/4
*/
public static void setApplicationContext(ApplicationContext context, ServletContext servletContext) {
servletContext.setAttribute(SPRING_CONTEXT_KEY, context);
}
/**
* @Description: 获取
* @Param: [servletContext]
* @return: org.springframework.context.ApplicationContext
* @Author: hw
* @Date: 2018/12/4
*/
public static ApplicationContext getApplicationContext(ServletContext servletContext) {
return (ApplicationContext) servletContext.getAttribute(SPRING_CONTEXT_KEY);
}
监听类
/**
* @program: Maven
* @description: ..
* @author: hw
* @create: 2018-12-04 15:47
**/
public class SpringLoaderListener implements ServletContextListener {
//默认配置名
private String configLocation="xxx";
/**
* @Description: 启动执行
* @Param: [servletContextEvent]
* @return: void
* @Author: hw
* @Date: 2018/12/4
*/
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
//获取tomcat上下文
ServletContext servletcont = servletContextEvent.getServletContext();
//默认名
String spingXml="spring-context.xml";
String Path = servletcont.getInitParameter(configLocation);
//如果没配置则用默认的
if(!(null==Path||"".equals(Path))){
spingXml=Path;
}
System.out.println(spingXml);
//建模
ApplicationContext context = new ClassPathXmlApplicationContext("spring-context.xml");
//放入tomcat
SpringWebUtil.setApplicationContext(context, servletcont);
}
/**
* @Description: 关闭执行
* @Param: [servletContextEvent]
* @return: void
* @Author: hw
* @Date: 2018/12/4
*/
@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {
}
web.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<display-name>Archetype Created Web Application</display-name>
<listener>
<listener-class>com.hw.one.util.SpringLoaderListener</listener-class>
</listener>
<!--设置spring的配置文件名-->
<context-param>
<param-name>xxx</param-name>
<param-value>spring-context.xml</param-value>
</context-param>
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>com.hw.one.action.UserServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>UserServlet</servlet-name>
<url-pattern>/userServlet</url-pattern>
</servlet-mapping>
</web-app>
测试类
public class UserServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("xxx");
//获取spring的上下文
ApplicationContext applicationContext = SpringWebUtil.getApplicationContext(req.getServletContext());
StudentAction studentAction = (StudentAction) applicationContext.getBean("studentAction");
System.out.println(studentAction.toString());
}
}
Spring的配置文件
<!--ioc注入的类型和方式-->
<bean class="com.hw.one.action.StudentAction" id="studentAction">
<!--set方法注入-->
<property name="sid" value="123"></property>
<property name="sname" value="盖伦"></property>
<!--集合-->
<property name="list">
<list>
<value>吃</value>
<value>喝</value>
<value>玩</value>
<value>乐</value>
</list>
</property>
<!--构造器注入-->
<constructor-arg name="sid" value="123"></constructor-arg>
<constructor-arg name="sname" value="盖伦"></constructor-arg>
<!--<property name="list">-->
<!--<list>-->
<!--<value>吃</value>-->
<!--<value>喝</value>-->
<!--<value>玩</value>-->
<!--<value>乐</value>-->
<!--</list>-->
<!--</property>-->
</bean>