Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行以下代码时获取空指针异常_Java_Jsp_Servlets_Map - Fatal编程技术网

Java 运行以下代码时获取空指针异常

Java 运行以下代码时获取空指针异常,java,jsp,servlets,map,Java,Jsp,Servlets,Map,我有一个servlet,它将映射对象从servlet传递到jsp,在jsp中,我将迭代映射并显示值。但是当我在setattribute方法中传递map对象时,我得到了null指针异常 try { Map<String,String> A=new HashMap<String,String>(); Class.forName("com.mysql.jdbc.Driver"); connect=(Connection) Dri

我有一个servlet,它将映射对象从servlet传递到jsp,在jsp中,我将迭代映射并显示值。但是当我在setattribute方法中传递map对象时,我得到了null指针异常

try
    {

            Map<String,String> A=new HashMap<String,String>();
    Class.forName("com.mysql.jdbc.Driver");
    connect=(Connection) DriverManager.getConnection("Connection");
    statement =(Statement)connect.createStatement();
    result=(ResultSet)statement.executeQuery("query");
    while(result.next())
    {
        A.put(result.getString("Hi"),result.getString("Hello"));
    }

    ServletContext context=getServletContext();

    request.setAttribute("A",A); // when I run i getting nullpointer exception here
    RequestDispatcher rd=context.getRequestDispatcher("/next.jsp");
    rd.forward(request, response);
使用JSP标记:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<c:forEach var="i" items="${A.keySet()}">
   Key <c:out value="${i}"/>
   Value <c:out value="${A.get(i)}"/>
</c:forEach>
</body>
</html>

钥匙
价值

很抱歉,如果出现语法错误,我这里没有用于检查语法的开发环境。但是你应该有一个线索,如何解决你的问题。

在你的案例中,映射即a应该放在响应对象中。
从服务器向客户端发送请求或响应是没有意义的。

我更改了我的问题,请现在解决问题。我解决了以前的问题,现在想解决这个result=(ResultSet)语句。executeQuery(“query”);//查询应该是包含sql查询的某个变量[query=选择Hi作为Hi,Hello作为来自dual的Hello;]如果您不能使用异常stacktrace解决它,那么您希望其他人如何在没有stacktrace的情况下解决它?;-)@海德添加了堆栈跟踪威尔(stack traceWell),这显然是签出的替代方法:
A
NULL
(似乎不可能),
请求
NULL
(不可能从代码片段中估计),或者
A
NULL
项(如果
结果可能)。getString
为“未找到”返回
NULL
)但是请求属性中不允许使用
NULL
s。。。你可以从排除这些开始。你确定这条线,NPE被扔到哪里了吗?尝试在代码周围添加跟踪日志以验证代码流。我回答了他的问题的第一次修订版,其中没有stacktrace。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<c:forEach var="i" items="${A.keySet()}">
   Key <c:out value="${i}"/>
   Value <c:out value="${A.get(i)}"/>
</c:forEach>
</body>
</html>