正在回答 回答被采纳积分+1
package com.tc.listener;
import com.tc.utils.SqlSessionFactoryUtils;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
@WebListener
public class InitSqlSessionListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
System.out.println("容器初始化加载中");
}
public void contextDestroyed(ServletContextEvent sce) {
System.out.println("销毁。。。。");
SqlSessionFactoryUtils.close();
}
}package com.tc.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class SqlSessionFactoryUtils {
private static String RESOURCE="mybatis-config.xml";
private static SqlSessionFactory sqlSessionFactory;
private static ThreadLocal<SqlSession> threadLocal=new ThreadLocal<SqlSession>();
/**
* 创建一个初始化SqlSessionFactory
*/
public static void initSqlSessionFactory(){
try {
InputStream is= Resources.getResourceAsStream(RESOURCE);
System.out.println(is.toString());
sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* getSqlSessionFactory的对象
*/
public static SqlSessionFactory getSqlSessionFactory(){
System.out.println("创建sql工厂");
return sqlSessionFactory;
}
/**
* 关闭
*/
public static void close(){
SqlSession session=threadLocal.get();
if (session!=null){
session.close();
threadLocal.set(null);
}
}
}package com.tc.servlet;
import com.tc.dao.UserDao;
import com.tc.entity.User;
import org.junit.Test;
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;
import java.sql.*;
import java.util.List;
@WebServlet("/index")
public class UserFindServlet extends HttpServlet {
private UserDao userdao = new UserDao();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("创建Dao对象成功");
List<User> list = userdao.findAll();
request.setAttribute("UserList", list);
System.out.println("查詢。。。");
for (User user : list) {
System.out.println(list);
}
request.getRequestDispatcher("index.jsp").forward(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}同学你好,首先可以根据以下方式查看启动时定位的地址哦~

我这里是定位到路径为/index的UsersFindServlet中。

其次,同学检查一下在UsersFindServlet中,是否有@WebServlet("/index")的注解呢。
如果有的话,web.xml中是否也配置了该servlet呢?
如果是的话,两种配置需要去掉一种。
如果没有的话,需要加上一种哦~

若是同学还没有解决问题的话,建议贴出UserFindServlet类,SqlSessionFactoryUtils
类,InitSqlSessionListener类的代码,方便老师为同学解决问题哦~
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
HTTP Status 500 – Internal Server Error
Type Exception Report
Message Error instantiating servlet class [com.tc.servlet.UserFindServlet]
Description The server encountered an unexpected condition that prevented it from fulfilling the request.
Exception
javax.servlet.ServletException: Error instantiating servlet class [com.tc.servlet.UserFindServlet]
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)
Root Cause
java.lang.NullPointerException
com.tc.dao.UserDao.<init>(UserDao.java:11)
com.tc.servlet.UserFindServlet.<init>(UserFindServlet.java:18)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
java.lang.reflect.Constructor.newInstance(Constructor.java:423)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:808)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)
Note The full stack trace of the root cause is available in the server logs.
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程










恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星