当前位置:
凯发k8官方网 >
前端技术
> javascript
>内容正文
javascript
模拟spring如何在web中运行 -凯发k8官方网
凯发k8官方网
收集整理的这篇文章主要介绍了
模拟spring如何在web中运行
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
spring在web中配置和普通的java程序中有所区别,总结一下主要表现在以下几个方面:
①jar包不同,需要引入两个web的jar包
②需要考虑ioc容器创建的时间
非 web 应用在 main 方法中直接创建
在web应用中为了保证spring的运行,所以必须在程序刚在容器中启动时就必须创建ioc容器,这样的时间人为不好把握,我们可以通过listener来监听程序的运行,保证在刚开始时就创建,具体采用的是
创建一个实现servletcontextlistener接口的类,并在重写的contextinitialized(servletcontextevent sce)方法中创建ioc容器,创建了如何让其他的组件来访问可以通过把ioc放入servletcontext的一个域属性中,这样其他组件就可以直接通过servlet.getattribute()来取得。具体代码如下:
package com.marry.spring.struts2.listeners; /*** created by administrator on 2016/8/26.*/import org.springframework.context.applicationcontext; import org.springframework.context.support.classpathxmlapplicationcontext;import javax.servlet.servletcontext; import javax.servlet.servletcontextevent; import javax.servlet.servletcontextlistener; import javax.servlet.annotation.weblistener;@weblistener() public class springservletcontextlistener implements servletcontextlistener {// public constructor is required by servlet specpublic springservletcontextlistener() {}// -------------------------------------------------------// servletcontextlistener implementation// -------------------------------------------------------public void contextinitialized(servletcontextevent sce) {// 1获取spring配置文件的名称servletcontext servletcontext = sce.getservletcontext();string config = servletcontext.getinitparameter("configlocation"); //1.创建ioc容器applicationcontext ctx = new classpathxmlapplicationcontext(config); // 2.将ioc容器放入servletcontext一个属性中servletcontext.setattribute("applicationcontext",ctx);}public void contextdestroyed(servletcontextevent sce) {/* this method is invoked when the servlet context(the web application) is undeployed orapplication server shuts down.*/} }相应的需要在web.xml文件中配置
为检验成果,我们可以创建一个类并配置bean
创建一个servlet进行测试
package com.marry.spring.struts2.servlets;import com.marry.spring.struts2.beans.person; import org.springframework.context.applicationcontext;import javax.servlet.servletcontext; import javax.servlet.servletexception; import javax.servlet.annotation.webservlet; import javax.servlet.http.httpservlet; import javax.servlet.http.httpservletrequest; import javax.servlet.http.httpservletresponse; import java.io.ioexception;/*** created by administrator on 2016/8/26.*/ @webservlet(name = "testservlet") public class testservlet extends httpservlet {protected void dopost(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { // 1.从application域对象中获取ioc容器servletcontext servletcontext=getservletcontext();applicationcontext ctx= (applicationcontext) servletcontext.getattribute("applicationcontext"); // 2.从ioc容器中获取需要的beanperson person= (person) ctx.getbean("person");person.hello();}protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception {dopost(request,response);} }转载于:https://blog.51cto.com/malin/1842816
总结
以上是凯发k8官方网为你收集整理的模拟spring如何在web中运行的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: gulp安装说明
- 下一篇: sqlserver出现 '其他会话正在使