运行老师代码出现500错误
02-Dec-2018 14:46:39.621 严重 [http-nio-8080-exec-5] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [MessageListServlet] in context with path [] threw exception
java.lang.NullPointerException
at com.imooc.jdbc.dao.MessageDAO.getMessages(MessageDAO.java:61)
at com.imooc.jdbc.service.MessageService.getMessages(MessageService.java:34)
at com.imooc.jdbc.servlet.MessageListServlet.service(MessageListServlet.java:41)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.imooc.jdbc.filter.UserFilter.doFilter(UserFilter.java:30)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at com.imooc.jdbc.filter.CharsetEncodingFilter.doFilter(CharsetEncodingFilter.java:28)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:791)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
我mysql 版本较高 所以java Connector包为8.0版本
正在回答 回答被采纳积分+1
package com.imooc.jdbc.dao;
import com.imooc.jdbc.bean.Message;
import com.imooc.jdbc.common.ConnectionUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
/**
* 消息DAO
*
* @version 1.0
*/
public class MessageDAO {
/**
* 保存留言信息
* @param message
* @return
*/
public boolean save(Message message) {
Connection conn = ConnectionUtil.getConnection();
String sql = "insert into message(user_id, username, title, content, create_time) values (?, ?, ?, ?, ?)";
PreparedStatement stmt = null;
try {
stmt = conn.prepareStatement(sql);
stmt.setLong(1, message.getUserId());
stmt.setString(2, message.getUsername());
stmt.setString(3, message.getTitle());
stmt.setString(4, message.getContent());
stmt.setTimestamp(5, new Timestamp(message.getCreateTime().getTime()));
stmt.execute();
} catch (SQLException e) {
System.out.println("保存留言信息失败。");
e.printStackTrace();
return false;
} finally {
ConnectionUtil.release(null, stmt, conn);
}
return true;
}
/**
* 分页查询全部留言
* @param page 当前页码
* @param pageSize 每页记录数
* @return
*/
public List<Message> getMessages(int page, int pageSize) {
System.out.println("wtf");
Connection conn = ConnectionUtil.getConnection();
String sql = "select * from message order by create_time desc limit ?, ?";//limit m, n:从第m条开始,取出总共n条记录
PreparedStatement stmt = null;
ResultSet rs = null;
List<Message> messages = new ArrayList<>();
try {
stmt = conn.prepareStatement(sql);
stmt.setInt(1, (page - 1) * pageSize);
stmt.setInt(2, pageSize);
rs = stmt.executeQuery();
while (rs.next()) {
messages.add(new Message(rs.getLong("id"),
rs.getLong("user_id"),
rs.getString("username"),
rs.getString("title"),
rs.getString("content"),
rs.getTimestamp("create_time")));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnectionUtil.release(rs, stmt, conn);
}
return messages;
}
/**
* 计算所有留言数量
* @return
*/
public int countMessages() {
Connection conn = ConnectionUtil.getConnection();
String sql = "select count(*) total from message";
PreparedStatement stmt = null;
ResultSet rs = null;
try {
stmt = conn.prepareStatement(sql);
rs = stmt.executeQuery();
while (rs.next()) {
return rs.getInt("total");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
ConnectionUtil.release(rs, stmt, conn);
}
return 0;
}
}
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 277 份
- 解答问题 4297 个
Java数据库开发的必备技能,从流行的MySQL数据库开始,到Java原生的数据库管理接口JDBC的使用,再到常用的数据持久化框架MyBatis,让你向Java工程师的目标又迈进了一步!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星