SMM整合页面初始化加载
web.xml需要配置
<!-- 添加获取博主信息的监听器 -->
<listener>
<listener-class>com.lyj.listener.InitBloggerData</listener-class>
</listener>
applicationContext.xml需要配置
<!-- 自动扫描包中的bean -->
<context:component-scan base-package="com.lyj.dao" />
<context:component-scan base-package="com.lyj.service" />
spring-mvc.xml需要配置
<!-- 扫描所有com.lyj.controller包下面的所有controller -->
<context:component-scan base-package="com.lyj.controller" />
重点是Listener的代码
package com.lyj.listener;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;
import com.lyj.entity.Blogger;
import com.lyj.service.BloggerService;
@Component //注意这个一定要
public class InitBloggerData implements ServletContextListener,ApplicationContextAware {
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
InitBloggerData.applicationContext=applicationContext;
}
private static ApplicationContext applicationContext;
public void contextInitialized(ServletContextEvent sce) {
System.out.println(applicationContext);
//先获取servlet上下文
ServletContext application=sce.getServletContext();
//根据spring的上下文获取bloggerService这个bean
BloggerService bloggerService=(BloggerService) applicationContext.getBean("bloggerService");
//获取博主信息
Blogger blogger=bloggerService.getBloggerData();
//由于密码也获取到了,比较敏感,我们也不需要这个,所以把密码清空掉
blogger.setPassword(null);
//将博主信息存入application域中
application.setAttribute("blogger", blogger);
}
public void contextDestroyed(ServletContextEvent sce) {
}
}
这四个重点缺一个都会报错
常见的错误是
严重: Exception sending context initialized event to listener instance of class com.lyj.listener.InitBloggerData
java.lang.NullPointerException
意思就是说初始化事件的时候出现了异常了
一般情况下是因为缺少了某一个包导致的,我猜你现在是缺少了common-pool.jar这个jar包,如果你项目里面有这个包了,看看版本对不对,版本不对也会导致这样的问题。
异常处理一般按这样的流程去处理(呵呵,这个是我自己的流程,反正我是这样来处理的)
1,先检查是否导入了项目所需要的全部Jar包
2,检查导入的jar包的版本对不对
3,检查路径是否正确,有些时候applicationContext.xml 这个文件找不到,只要先放到classes下面先就能找到了
4,如果都没问题,那就一步一步debug,看看到底到了哪里的时候抛出异常了