Servlet中如何获得ApplicationContext , Spring
applicationContext.xml:
<? xml version="1.0" encoding="UTF-8"?> < beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd" default-lazy-init="false"> <!-- data source --> < bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> < property name="jndiName" value="java:comp/env/jdbc/MyTestProject" /> </ bean > <!-- 配置数据源 供测试用--> < bean id="dataSourceDebug" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> < property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"> </ property > < property name="url" value="jdbc:sqlserver://192.168.0.1\SQLEXPRESS:1433;dataBaseName=Test;loginTimeout=3;"> </ property > < property name="username" value="sa"></ property > < property name="password" value="123"></ property > </ bean > < bean id="abstractDao" abstract="true"> <!-- <property name="dataSource" ref="dataSourceDebug"></property> --> < property name="dataSource" ref="dataSource"></ property > </ bean > < bean id="firstDao" class="com.wcg.FirstDaoImpl" parent="abstractDao"> </ bean > </ beans > |
<? xml version="1.0" encoding="UTF-8"?> < web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- Spring context loader --> < listener > < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class > </ listener > < servlet > < description >测试FirstDao</ description > < display-name >FirstServlet</ display-name > < servlet-name >FirstServlet</ servlet-name > < servlet-class >com.servlet.FirstServlet</ servlet-class > </ servlet > < servlet-mapping > < servlet-name >FirstServlet</ servlet-name > < url-pattern >/servlet/FirstServlet</ url-pattern > </ servlet-mapping > <!-- jdbc resource --> < resource-ref > < res-ref-name >jdbc/MyTestProject</ res-ref-name > < res-type >javax.sql.DataSource</ res-type > < res-auth >Container</ res-auth > </ resource-ref > </ web-app > |
//FirstDao.java package com.wcg; public interface FirstDao { public int Create(String name); } //FirstDaoImpl.java package com.wcg; import java.util.HashMap; import java.util.Map; import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport; public class FirstDaoImpl extends SimpleJdbcDaoSupport implements FirstDao { public int Create(String name) { String sql = "insert into T (Name) values(:Name)"; Map< String , Object> param = new HashMap< String , Object>(); param.put("Name", name); return this.getSimpleJdbcTemplate().update(sql, param); } } //FirstServlet.java //... public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); ServletContext sc = request.getSession().getServletContext(); WebApplicationContext ctx = (WebApplicationContext)sc.getAttribute("org.springframework.web.context.WebApplicationContext.ROOT"); String name = request.getParameter("name"); FirstDao fd = (FirstDao) ctx.getBean("firstDao"); fd.Create(name); out.println("Done"); out.flush(); out.close(); } //... 测试,web容器之外的测试类. //Test.java package com.wcg; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; public class Test { /** * @param args */ public static void main(String[] args) { //ApplicationContext ctx = new ClassPathXmlApplicationContext("..\\applicationContext.xml"); ApplicationContext ctx = new FileSystemXmlApplicationContext("D:\\proj_ja\\java\\TestWeb\\WebRoot\\WEB-INF\\applicationContext.xml"); FirstDao fd = (FirstDao) ctx.getBean("firstDao"); fd.Create("username"); System.out.println("done"); } } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步