现在的位置: 主页 > 主打产品 > 文章列表

spring web.xml配置有话说

作者:北京财贸天阶投资顾问有限公司 来源:www.usasheng.com 发布时间:2017-09-05 12:30:02
 

spring web.xml配置有话说

最近接触了单点登录,期间自己想做一个小demo出来,就想这个demo越简单越好,越简单越能说明问题,站群,但所引用的几个jar包里面,是使用spring的配置文件管理的,jar包里面有一个配置文件,当然了,想要把对象一个个new出来也不是不可以,但真的不愿意再去花大量时间研究jar里面的类之间的关系了。没法子,只能继承spring了,于是采取了第一种继承方式:

context org.springframework.web.context.ContextLoaderServlet 1
这样的话,spring会去WEB-INF中查找applicationContext.xml这个配置文件,但jar包里的配置文件不叫这个名字,也不在这个位置,而是在jar包的根目录,那么我该如何查找该路径呢?

求助google老师(请原谅我这方面的无知),需要添加一个标签,标注配置文件的路径:

contextConfigLocation classpath:applicationContext-****.xml
只需如此,classpath表示的时/WEB-INF/classes路径(当然这是默认情况下),也就是classes所在的根目录,那么也就是说,无论是src里面的java文件编译之后,还是jar包里面的class文件饮用后,都会到classes路径下运行。

问题一:如何在servlet中获取spring的bean?

/** * 初始化方法 */ @Override public void init() throws ServletException { super.init(); ServletContext servletContext = this.getServletContext(); WebApplicationContext ctx = WebApplicationContextUtils .getWebApplicationContext(servletContext); //认证对象,从spring配置文件中获取 httpAuthenticator = (HttpAuthenticator) ctx.getBean("httpAuthenticator"); }
通过servlet上下文获取WebApplicationContext 这个对象,获取之后,就可以直接通过getBean的方式获取spring的bean对象了。

问题二:如何在Filter中获取Spring的bean?

难道也是跟spring一样?

public void init(FilterConfig filterConfig) throws ServletException { ServletContext servletContext = filterConfig.getServletContext(); WebApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext); //(WebApplicationContext) servletContext.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE); //认证对象,专题,从spring配置文件中获取 httpAuthenticator = (HttpAuthenticator) ctx.getBean("httpAuthenticator"); }
事实证明这样不可以,根本不能获取ctx,一直报空指针异常。于是试了试别的spring配置:

org.springframework.web.context.ContextLoaderListener
这样就没问题了,顺利通过,可以实现所有功能。那么这是为什么呢?二者配置上有什么区别呢?

第一种方式配置ContextLoaderServlet,这这种方式在spring3.0以后就不在支持了,可以确认的是,这种方式获取的WebApplicationContext是在servlet出之后之前、Filter初始化之后,因此servlet中获取没问题,但filter中却是获取不到。

第二种方式配置ContextLoaderListener,这种方式是现今推荐的方式,既能解决filter中初始化问题,也对高版本的spring支持良好,因此以后再配置spring,就采用这个方式了。

第三种方式需要引入struts的一个jar包


但在struts2.0以后,这种方式也不再被支持了。因此,推荐第二种。

企业建站2800元起,携手武汉肥猫科技,做一个有见地的颜值派!更多优惠请戳:武汉网页制作 http://www.feimao666.com

  • 上一篇:卡汀财经分享—CFA考试拥有超常记忆力的小习惯
  • 下一篇:最后一页
  •