Java 运行以下代码时获取空指针异常
我有一个servlet,它将映射对象从servlet传递到jsp,在jsp中,我将迭代映射并显示值。但是当我在setattribute方法中传递map对象时,我得到了null指针异常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
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>