这个问题怎么处理呀
类型 异常报告
消息 在 [71] 行处理 [/adminStudent.jsp] 时发生异常
描述 服务器遇到一个意外的情况,阻止它完成请求。
例外情况
org.apache.jasper.JasperException: 在 [71] 行处理 [/adminStudent.jsp] 时发生异常
68: pre.executeUpdate();
69: out.print("<h3>鍒犻櫎鎴愬姛</h3>");
70: }
71: con.close();//杩炴帴鏀惧洖杩炴帴姹犮��
72: }
73: catch(SQLException e) {
74: out.print("<h1>瀛﹀彿涓嶈兘閲嶅");
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:605)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:498)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331)
javax.servlet.http.HttpServlet.service(HttpServlet.java:582)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
根本原因。
java.lang.NullPointerException
org.apache.jsp.adminStudent_jsp._jspService(adminStudent_jsp.java:187)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:582)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:465)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:383)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:331)
javax.servlet.http.HttpServlet.service(HttpServlet.java:582)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看
<%@ page contentType="text/html" %>
<%@ page pageEncoding = "utf-8" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.sql.DataSource" %>
<%@ page import="javax.naming.Context" %>
<%@ page import="javax.naming.InitialContext" %>
<style>
#tom{
font-family:宋体;font-size:28;color:black
}
</style>
<% request.setCharacterEncoding("utf-8");
Connection con=null;
PreparedStatement pre=null; //预处理语句。
ResultSet rs;
Context context =new InitialContext();
Context contextNeeded=(Context)context.lookup("java:comp/env");
DataSource ds=
(DataSource)contextNeeded.lookup("studentConn");//连接池。
try{
con = ds.getConnection();//使用连接池中的连接。
}
catch(Exception exp){ }
String updateSQL =
"update scoreReport set name =?,mathScore=?,englishScore=? where id=?";
String insertSQL ="insert into scoreReport values(?,?,?,?)";
String deleteSQL ="delete from scoreReport where id =?";
String querySQL = "select * from scoreReport where id =?";
String mess = request.getParameter("submit");
if(mess == null) mess ="";
String id = request.getParameter("id");
String name = request.getParameter("name");
String math = request.getParameter("mathScore");
String english = request.getParameter("englishScore");
try{
if(mess.contains("查看")){
pre = con.prepareStatement(querySQL);
pre.setString(1,id);
rs = pre.executeQuery();
if(rs.next()){
id = rs.getString(1);
name = rs.getString(2);
math = rs.getString(3);
english = rs.getString(4);
}
}
else if(mess.contains("更新")){
pre = con.prepareStatement(updateSQL);
pre.setString(1,name);
pre.setInt(2,Integer.parseInt(math));
pre.setInt(3,Integer.parseInt(english));
pre.setString(4,id);
pre.executeUpdate();
out.print("<h3>更新成功</h3>");
}
else if(mess.contains("添加")){
pre = con.prepareStatement(insertSQL);
pre.setString(1,id);
pre.setString(2,name);
pre.setInt(3,Integer.parseInt(math));
pre.setInt(4,Integer.parseInt(english));
pre.executeUpdate();
out.print("<h3>添加成功</h3>");
}
else if(mess.contains("删除")){
pre = con.prepareStatement(deleteSQL);
pre.setString(1,id);
pre.executeUpdate();
out.print("<h3>删除成功</h3>");
}
con.close();//连接放回连接池。
}
catch(SQLException e) {
out.print("<h1>学号不能重复");
try{
con.close();//连接放回连接池。
}
catch(SQLException exp){}
}
%>
<HTML><body bgcolor = #ffccff>
<form action="" id=tom method=post >
输入学号查看或删除(信息):<br>
<input type="text" id=tom name="id" size=10 /><br>
<input type="submit" id=tom name="submit" value="查看"/>
<input type="submit" id=tom name="submit" value="删除"/>
</form>
<form action="" id=tom method=post>
更新(或添加)
<input type="text" id=tom name="id" value =<%=id%> size=9 />
学号的信息:
<br>姓名:
<input type="text" id=tom name="name" value ='<%=name%>'size=11/>
<br>数学成绩:
<input type="text" id=tom name="mathScore" value ='<%=math%>'size=7 />
<br>英语成绩:
<input type="text" id=tom name="englishScore" value ='<%=english%>'size=7/>
<br><input type="submit" id=tom name="submit" value="更新"/>
<input type="submit" id=tom name="submit" value="添加"/>
</form>
</body></HTML>
按异常信息,71行con.close();这里空指针异常了,con这个对象没初始化。获取连接的时候可能异常了,但是没抛出,也没打印异常信息,所以没办法看出来是否有错
根据报错信息可知,71行抛出空指针异常,71行是 con.close();//连接放回连接池,所以应该是没有连接到数据库,在21行连接数据库,23行catch所有异常也没有处理,所以当有异常时con默认就是null,后续使用con就会抛空指针异常
本疫情防控管理系统的功能设计模块是根据用户的需求所设置,系统概念模型的设置其实质是搭建目标结构,这成为构建数据库的重要一步。
(1)将数据模型加以呈现和反馈,在处理数据的时候,能够满足用户的基本需求,同时呈现出事物一定的关联性[8]。
(2)便于掌握。用户在使用疫情防控管理系统的时候需要容易操作系统,只有这样,数据库设计才较为正确。
(3)一旦疫情防控管理系统的需求发生改变的时候,疫情防控管理系统能够快速调整和改变模型结构。
E-R图能够用来描述概念模型,在已经获取相关数据模型的情况下,可以根据用户的需求,设计出与之相匹配的实体。
居民 |
打卡提醒 |
健康打卡 |
N |
1 |
1 |
N |
包含 |
包含 |
图4.5 数据库E-R图