问题描述
我已经为所有sql语句完成了JUnit测试,并且可以正常工作,但是现在我试图从html表中的表中列出数据,并且出现HTTP Status 500 – Internal Server Error。另外,当我在MainController.java文件中执行main方法时,我可以打印出数据列表。
MainController.java
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.student.bean.Student;
import com.student.dao.StudentDAO;
@Controller
public class MainController {
@Autowired
private StudentDAO studentDAO;
@RequestMapping(value="/")
public ModelAndView listStudent(ModelAndView model){
List<Student> listStudent = studentDAO.list();// line 24
model.addobject("listStudent",listStudent);
model.setViewName("index");
return model;
}
}
StudentDAOImpl.java
package com.student.dao;
import java.sql.ResultSet;
import java.sql.sqlException;
import java.util.List;
import javax.sql.DataSource;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.jdbc.core.RowMapper;
import com.student.bean.Student;
public class StudentDAOImpl implements StudentDAO {
private JdbcTemplate jdbcTemplate;
public StudentDAOImpl(DataSource dataSource) {
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
public static final String TABLE = "students";
@Override
public int save(Student obj) {
String qry = "insert into " + TABLE + "(id,first_name,last_name,gpa,major) values (?,?,?)";
return jdbcTemplate.update(qry,obj.getId(),obj.getFirstName(),obj.getLastName(),obj.getGpa(),obj.getMajor());
}
@Override
public int update(Student obj) {
String qry = "update " + TABLE + " set first_name = ?,last_name = ?,gpa = ?,major = ? where id = ?";
return jdbcTemplate.update(qry,obj.getMajor(),obj.getId());
}
@Override
public Student get(Integer id) {
String qry = "select * from " + TABLE + " where id =" + id;
ResultSetExtractor<Student> extractor = new ResultSetExtractor<Student>() {
public Student extractData(ResultSet rs) throws sqlException,DataAccessException {
if (rs.next()) {
int studentId = rs.getInt("id");
String firstName = rs.getString("first_name");
String lastName = rs.getString("last_name");
double gpa = rs.getDouble("gpa");
String major = rs.getString("major");
return new Student(studentId,firstName,lastName,major);
}
return null;
}
};
return jdbcTemplate.query(qry,extractor);
}
@Override
public int delete(Integer id) {
String qry = "delete from " + TABLE + " where id =" + id;
return jdbcTemplate.update(qry);
}
@Override
public List<Student> list() {
String qry = "select * from " + TABLE;
RowMapper<Student> rowMapper = new RowMapper<Student>() {
public Student mapRow(ResultSet rs,int rowNum) throws sqlException {
int studentId = rs.getInt("id");
String firstName = rs.getString("first_name");
String lastName = rs.getString("last_name");
double gpa = rs.getDouble("gpa");
String major = rs.getString("major");
return new Student(studentId,major);
}
};
return jdbcTemplate.query(qry,rowMapper);//line 84
}
}
org.sqlite.sqliteException: [sqlITE_ERROR] sql error or missing database (no such table: students)
at org.sqlite.core.DB.newsqlException(DB.java:1010)
at org.sqlite.core.DB.newsqlException(DB.java:1022)
at org.sqlite.core.DB.throwex(DB.java:987)
at org.sqlite.core.NativeDB.prepare_utf8(Native Method)
at org.sqlite.core.NativeDB.prepare(NativeDB.java:134)
at org.sqlite.core.DB.prepare(DB.java:264)
at org.sqlite.jdbc3.JDBC3Statement.executeQuery(JDBC3Statement.java:73)
at org.springframework.jdbc.core.JdbcTemplate$1QueryStatementCallback.doInStatement(JdbcTemplate.java:438)
at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:375)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:451)
at org.springframework.jdbc.core.JdbcTemplate.query(JdbcTemplate.java:461)
at com.student.dao.StudentDAOImpl.list(StudentDAOImpl.java:84)
at com.student.controller.MainController.listStudent(MainController.java:24)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.web.method.support.invocableHandlerMethod.doInvoke(invocableHandlerMethod.java:190)
at org.springframework.web.method.support.invocableHandlerMethod.invokeForRequest(invocableHandlerMethod.java:138)
at org.springframework.web.servlet.mvc.method.annotation.ServletinvocableHandlerMethod.invokeAndHandle(ServletinvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:892)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.dispatcherServlet.dodispatch(dispatcherServlet.java:1039)
at org.springframework.web.servlet.dispatcherServlet.doService(dispatcherServlet.java:942)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
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 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
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)```
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)