有口碑的模板网站建设,使用vue路由做网站,零基础怎么自学动画制作,一般网站建设需要多少钱1. ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的#xff0c;但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) #xff0c;这样的弊端是配置文件加载多…1. ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext(spring配置文件) 方式获取的但是每次从容器中获得Bean时都要编写new ClasspathXmlApplicationContext(spring配置文件) 这样的弊端是配置文件加载多次应用上下文对象创建多次。 在Web项目中可以使用ServletContextListener监听Web应用的启动我们可以在Web应用启动时就加载Spring的配置文件创建应用上下文对象ApplicationContext在将其存储到最大的域servletContext域中这样就可以在任意位置从域中获得应用上下文ApplicationContext对象了。 web.xml配置全局初始化参数 !--全局初始化参数--context-paramparam-namecontextConfigLocation/param-nameparam-valueapplicationContext.xml/param-value/context-paramlistenerlistener-classcom.zhxd.listener.ContextLoaderListener/listener-class
/listener创建ServletContextListener
package com.zhxd.listener;import org.springframework.context.support.ClassPathXmlApplicationContext;import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;public class ContextLoaderListener implements ServletContextListener {public void contextInitialized(ServletContextEvent servletContextEvent) {ServletContext servletContext servletContextEvent.getServletContext();//ClassPathXmlApplicationContext app new ClassPathXmlApplicationContext(applicationContext.xml);//隐藏Spring配置文件String contextConfigLocation servletContext.getInitParameter(contextConfigLocation);ClassPathXmlApplicationContext app new ClassPathXmlApplicationContext(contextConfigLocation);servletContext.setAttribute(app,app);System.out.println(容器创建完毕...);}public void contextDestroyed(ServletContextEvent servletContextEvent) {}
}UserServlet.java
public class UserServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext servletContext req.getServletContext();ApplicationContext app (ApplicationContext)servletContext.getAttribute(app);UserService userService app.getBean(UserService.class);userService.save();}
}优化上述程序把上下文变量名字app隐藏
定义获取上下文对象工具类
package com.zhxd.listener;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import javax.servlet.ServletContext;
import javax.servlet.ServletContextListener;public class WebApplicationContextUtils {public static ApplicationContext getApp(ServletContext servletContext) {return (ApplicationContext) servletContext.getAttribute(app);}
}修改UserServlet.java
public class UserServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext servletContext req.getServletContext();ApplicationContext app WebApplicationContextUtils.getApp(servletContext);UserService userService app.getBean(UserService.class);userService.save();}
}2.Spring提供获取应用上下文的工具 上面的分析不用手动实现Spring提供了一个监听器ContextLoaderListener就是对上述功能的封装该监听器内部加载Spring配置文件创建应用上下文对象并存储到ServletContext域中提供了一个客户端工具WebApplicationContextUtils供使用者获得应用上下文对象。 所以我们需要做的只有两件事 ① 在web.xml中配置ContextLoaderListener监听器导入spring-web坐标
dependencygroupIdorg.springframework/groupIdartifactIdspring-web/artifactIdversion5.0.5.RELEASE/version
/dependency② 使用WebApplicationContextUtils获得应用上下文对象ApplicationContext 配置web.xml context-paramparam-namecontextConfigLocation/param-nameparam-valueclasspath:applicationContext.xml/param-value/context-paramlistenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listenerpackage com.zhxd.web;import com.zhxd.service.UserService;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;public class UserServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext servletContext req.getServletContext();WebApplicationContext app WebApplicationContextUtils.getWebApplicationContext(servletContext);UserService userService app.getBean(UserService.class);userService.save();}
}