HTTP状态 500 - 内部服务器错误
类型 异常报告
消息 在 [23] 行处理 [/index.jsp] 时发生异常
描述 服务器遇到一个意外的情况,阻止它完成请求。
例外情况
org.apache.jasper.JasperException: 在 [23] 行处理 [/index.jsp] 时发生异常
20:
21: <%
22: List list = (List)request.getAttribute("ResultSet");
23: for(DepartmentBean item:list){
24: out.println(item.getDepartmentld()+" "+ item.getDepartmentName());
25: }
26: %>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:611)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:500)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
servlet.GetDeptListServlet.doGet(GetDeptListServlet.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
根本原因。
java.lang.NullPointerException: Cannot invoke "java.util.List.iterator()" because "list" is null
org.apache.jsp.index_jsp._jspService(index_jsp.java:146)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:467)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:378)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:326)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
servlet.GetDeptListServlet.doGet(GetDeptListServlet.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:626)
javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
Cannot invoke "java.util.List.iterator()" because "list" is null
空指针异常
List list = (List)request.getAttribute("ResultSet");
for(DepartmentBean item:list){
out.println(item.getDepartmentld()+" "+ item.getDepartmentName());
}
修改为:
List list = (List)request.getAttribute("ResultSet");
if (list != null) for(DepartmentBean item:list) {
out.println(item.getDepartmentld()+" "+ item.getDepartmentName());
}
package servlet;
import java.io.IOException;
import java.sql.;
import java.util.;
import bean.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
Servlet implementation class GetDeptListServlet
/
@WebServlet("/GetDeptListServlet")
public class GetDeptListServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
/**
@see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
String url = "jdbc:mysql://localhost:3306/CRM";
String user= "root";
String pwd ="123456";
Connection conn = DriverManager.getConnection(url,user,pwd);
String sql = "SELECT * FROM Department;";
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
List list = new ArrayList();
while(rs.next()) {
DepartmentBean model = new DepartmentBean();
model.setDepartmentld(rs.getString("Departmentld"));
model.setDepartmentName(rs.getString("DepartmentName"));
list.add(model);
}
request.setAttribute("ResultSet",list);
rs.close();
stmt.close();
conn.close();
}
catch(Exception ex) {
}
request.getRequestDispatcher("index.jsp").forward(request, response);
//rs.close();
//stmt.close();
//conn.close();
}
/**
<%@ page language="java" contentType="texthtml; charset=UTF-8"
import="java.util.*,java.sql.*,bean.*"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
List list = (List)request.getAttribute("ResultSet");
for(DepartmentBean item:list){
out.println(item.getDepartmentld()+" "+ item.getDepartmentName());
}
%>
package bean;
public class DepartmentBean {
private String departmentld;
private String departmentName;
public String getDepartmentld() {
return departmentld;
}
public void setDepartmentld(String departmentld) {
this.departmentld = departmentld;
}
public String getDepartmentName() {
return departmentName;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
}
先判断是否为空 ,如果为空 然后new ArrayList即可解决,如果是查询问题则修改底层控制层代码即可
前面已经提到了,就是空指针异常。即你后端查询的数据没有结果,导致变量为null传到jsp,遍历失败!
空指针异常
List list = (List)request.getAttribute("ResultSet");
这个地方list 是null,检查下“ResultSet”这个key.