web这个问题怎么解决

这个问题怎么处理呀


类型 异常报告

消息 在 [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就会抛空指针异常

  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/7509065
  • 这篇博客你也可以参考下:Web项目控制台出现中文乱码问题的几种解决方式
  • 除此之外, 这篇博客: 基于Web的疫情防控管理系统中的 概念模型结构设计 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 本疫情防控管理系统的功能设计模块是根据用户的需求所设置,系统概念模型的设置其实质是搭建目标结构,这成为构建数据库的重要一步。

    (1)将数据模型加以呈现和反馈,在处理数据的时候,能够满足用户的基本需求,同时呈现出事物一定的关联性[8]。

    (2)便于掌握。用户在使用疫情防控管理系统的时候需要容易操作系统,只有这样,数据库设计才较为正确。

    (3)一旦疫情防控管理系统的需求发生改变的时候,疫情防控管理系统能够快速调整和改变模型结构。

    E-R图能够用来描述概念模型,在已经获取相关数据模型的情况下,可以根据用户的需求,设计出与之相匹配的实体。

    居民

    打卡提醒

    健康打卡

    N

    1

    1

    N

    包含

    包含

    图4.5 数据库E-R图

  • 您还可以看一下 刘超老师的web自动化-电商项目实战课程中的 商品搜索模块完成小节, 巩固相关知识点