【问题标题】:HTTP Status 500 - java.lang.NullPointerExceptionHTTP 状态 500 - java.lang.NullPointerException
【发布时间】:2015-05-22 07:02:38
【问题描述】:

我是 java、jsp 的新手,我正在尝试使用 index.jsp 从 Mysql 数据库中打印一些数据。正如标题所说,我遇到了一个例外。我已经检查了很多这个异常。我在 Stackoverflow 上看到了一些相同的帖子,但它们对我没有帮助。这是我的代码:

index.jsp:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<form action ="New_printer.jsp" method="get">
    <input type ="submit" value="Proceed">
</form>

</body>
</html>

New_printer.jsp:

<%@page import="java.util.ArrayList"%>
<%@page import="java.sql.ResultSet"%>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<%@ page import="com.results.Printer" %>

<%
int i;
ArrayList Rows = new ArrayList();

Rows = (ArrayList) request.getAttribute("data");

for(i=1; i<Rows.size(); i++)
{
    ArrayList row = new ArrayList();

    row = (ArrayList) Rows.get(i);
    for(int j=1; j<4; j++)
    {
        String word =(String) row.get(j);
        out.print(word + " ");
    }
    out.println();  
}

%>

</body>
</html>

Printer.java:

package com.results;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Printer extends HttpServlet{

    private static Connection con = null;
    ResultSet rs;



    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        resp.setContentType("text/jsp");

        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection("jdbc:mysql://localhost:3306/tst","root","1234");
            Statement stmt = con.createStatement();
            rs = stmt.executeQuery("select * from test_db.person");

            ArrayList Rows = new ArrayList();

            while(rs.next())
            {
                ArrayList row =new ArrayList();
                for(int i=1; i<4; i++)
                {
                    row.add(rs.getString(i));
                }
                Rows.add(row);
            }

            req.setAttribute("data", Rows);
            RequestDispatcher rqdp = getServletContext().getRequestDispatcher("/New_printer.jsp");
            rqdp.forward(req, resp);

        }

        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>Simple_Print</display-name>
  <!-- 
  <servlet>
    <servlet-name>printer</servlet-name>
    <servlet-class>com.results.Printer</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>printer</servlet-name>
    <url-pattern>/index.jsp</url-pattern>
  </servlet-mapping> -->

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

例外

HTTP Status 500 - java.lang.NullPointerException

type Exception report

message java.lang.NullPointerException

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: java.lang.NullPointerException
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:548)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:469)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.NullPointerException
    org.apache.jsp.New_005fprinter_jsp._jspService(New_005fprinter_jsp.java:123)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:431)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

note The full stack trace of the root cause is available in the Apache Tomcat/8.0.20 logs.

你能帮忙吗?请我在这里堆几天。

【问题讨论】:

  • @Jens 不,它与您的链接不重复。这是 NPE 的服务器代码错误。
  • 状态码 500 表示内部服务器错误,错误如您所说 NullPointerException 。您可以发布错误日志吗?你搞好连接管理器了吗?
  • 我使用在 localhost 中运行的 tomcat-apache 8.0。我可以进入我的 index.jsp,但是当我单击提交按钮时,它会显示异常。

标签: java mysql jsp exception


【解决方案1】:

问题是您将表单从index.jsp 提交到New_printer.jsp,但您还没有传递data 属性,所以request.getAttribute("data"); 会给您空指针。

你在做什么:

index.jsp----->New_printer.jsp

你应该做什么:

index.jsp----->Printer.java------->New_printer.jsp

【讨论】:

  • 我明白你的意思。我有 "req.setAttribute("data", Rows);"在.java中。我如何联系他们?我的意思是 .jsp 和 . java.
  • @ΝίκοςΔιαμαντόγιαννης 将 index.jsp 中的表单操作更改为 servlet url
  • 我的 servlet-url 是 index.jsp。
  • @ΝίκοςΔιαμαντόγιαννης 不,它不能(相同的 url 不同的页面)在 web.xml 中创建 servlet 映射
  • 感谢您的帮助!我会根据你的建议做一些改变。我现在明白我的错误了。我会标记你的答案。当我解决它时,我将重写代码。
猜你喜欢
  • 1970-01-01
  • 2014-12-24
  • 2014-03-21
  • 2011-01-01
  • 2014-01-08
  • 2012-12-04
  • 2017-11-01
  • 2016-05-29
  • 1970-01-01
相关资源
最近更新 更多