Java 处理JSP页面、数组列表时发生异常
我想不出这个问题 我的错误: org.apache.jasper.jaspereException:处理时发生异常 第28行的JSP页面/index.JSPJava 处理JSP页面、数组列表时发生异常,java,jsp,Java,Jsp,我想不出这个问题 我的错误: org.apache.jasper.jaspereException:处理时发生异常 第28行的JSP页面/index.JSP 第28行: java类: public class DataBean implements Serializable, ServletContextListener { private static final String nameOfLogger = DataBean.class.getName(); privat
第28行:
java类:
public class DataBean implements Serializable, ServletContextListener {
private static final String nameOfLogger = DataBean.class.getName();
private static final Logger logger = Logger.getLogger(nameOfLogger);
public class Visit {
public Visit(String dateOfTheVisit, String category, String idClient, String idInsrurer, String idDoctor, String idVisit,String accepted) {
this.dateOfTheVisit = dateOfTheVisit;
this.category = category;
this.idClient = idClient;
this.idInsrurer = idInsrurer;
this.idDoctor = idDoctor;
this.idVisit = idVisit;
this.accepted = accepted;
}
public String getIdVisit() {
return idVisit;
}
public void setIdVisit(String idVisit) {
this.idVisit = idVisit;
}
public String getDateOfTheVisit() {
return dateOfTheVisit;
}
public void setDateOfTheVisit(String dateOfTheVisit) {
this.dateOfTheVisit = dateOfTheVisit;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getIdClient() {
return idClient;
}
public void setIdClient(String idClient) {
this.idClient = idClient;
}
public String getIdInsrurer() {
return idInsrurer;
}
public void setIdInsrurer(String idInsrurer) {
this.idInsrurer = idInsrurer;
}
public String getIdDoctor() {
return idDoctor;
}
public void setIdDoctor(String idDoctor) {
this.idDoctor = idDoctor;
}
String idVisit;
String dateOfTheVisit;
String category;
String idClient;
String idInsrurer;
String idDoctor;
String accepted;
public String getAccepted() {
return accepted;
}
public void setAccepted(String accepted) {
this.accepted = accepted;
}
}
public class Insurer {
public Insurer(String idInsurer, String name) {
this.idInsurer = idInsurer;
this.name = name;
}
public String getIdInsurer() {
return idInsurer;
}
public void setIdInsurer(String idInsurer) {
this.idInsurer = idInsurer;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
String idInsurer;
String name;
}
//public List<Visit> visitArray = new ArrayList<>();
public List<Insurer> insurerArray = new ArrayList<>();
private java.sql.Connection psqlCon = null;
private boolean psqlConnectionCreated = false;
synchronized public ArrayList<Visit> getVisit() throws ClassNotFoundException, SQLException {
Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres", "postgres", "password");
Statement stm;
stm = conn.createStatement();
String sql = "Select * From Customer";
ResultSet rst;
rst = stm.executeQuery(sql);
ArrayList<Visit> visitArray = new ArrayList<>();
while (rst.next()) {
Visit visit = new Visit(rst.getString("dateOfTheVisit"), rst.getString("category"), rst.getString("idClient"), rst.getString("idInsurer"), rst.getString("idDoctor"), rst.getString("idVisit"),rst.getString("accepted"));
visitArray.add(visit);
}
return visitArray;
}
@Override
public void contextInitialized(ServletContextEvent sce) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
}
}
公共类数据库实现了可序列化的ServletContextListener{
私有静态最终字符串nameOfLogger=DataBean.class.getName();
私有静态最终记录器=Logger.getLogger(记录器名称);
公开课堂参观{
公开访问(字符串访问日期、字符串类别、字符串idClient、字符串idisruler、字符串idDoctor、字符串idVisit、字符串accepted){
this.dateof vision=访问日期;
this.category=类别;
this.idClient=idClient;
this.idInsrurer=idInsrurer;
this.idDoctor=idDoctor;
this.idVisit=idVisit;
这是接受的;
}
公共字符串getIdVisit(){
回访;
}
公共void setIdVisit(字符串idVisit){
this.idVisit=idVisit;
}
公共字符串getDateOfVisite(){
回访日期;
}
public void设置就诊日期(字符串就诊日期){
this.dateof vision=访问日期;
}
公共字符串getCategory(){
退货类别;
}
公共无效集合类别(字符串类别){
this.category=类别;
}
公共字符串getIdClient(){
返回idClient;
}
public void setIdClient(字符串idClient){
this.idClient=idClient;
}
公共字符串getIDisruler(){
回程器;
}
public void setIDisruler(字符串IDisruler){
this.idInsrurer=idInsrurer;
}
公共字符串getIdDoctor(){
返回idDoctor;
}
公共void setIdDoctor(字符串idDoctor){
this.idDoctor=idDoctor;
}
字符串访问;
访问日期;
字符串类别;
字符串idClient;
字符串标识符;
医生;
接受字符串;
公共字符串getAccepted(){
接受退货;
}
接受公共void集合(接受字符串){
这是接受的;
}
}
公营保险公司{
公共保险人(字符串保险人,字符串名称){
this.idInsurer=idInsurer;
this.name=名称;
}
公共字符串getIdInsurer(){
返回保险人;
}
公共无效设置idInsurer(字符串idInsurer){
this.idInsurer=idInsurer;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
线绳固定器;
字符串名;
}
//public List visitArray=new ArrayList();
public List insurerary=new ArrayList();
private java.sql.Connection psqlCon=null;
私有布尔值psqlConnectionCreated=false;
同步的公共ArrayList getVisit()抛出ClassNotFoundException、SQLException{
Connection conn=DriverManager.getConnection(“jdbc:postgresql://localhost:5432/postgres“,”postgres“,”密码“);
报表stm;
stm=conn.createStatement();
String sql=“选择*来自客户”;
结果集rst;
rst=stm.executeQuery(sql);
ArrayList visitArray=新的ArrayList();
while(rst.next()){
就诊=新就诊(rst.getString(“就诊日期”)、rst.getString(“类别”)、rst.getString(“idClient”)、rst.getString(“idsurer”)、rst.getString(“idDoctor”)、rst.getString(“idVisit”)、rst.getString(“接受”);
visitArray.add(访问);
}
返回visitArray;
}
@凌驾
public void contextInitialized(ServletContextEvent sce){
抛出新的UnsupportedOperationException(“尚未受支持”);//若要更改生成的方法体,请选择“工具”“模板”。
}
@凌驾
公共无效上下文已销毁(ServletContextEvent sce){
抛出新的UnsupportedOperationException(“尚未受支持”);//若要更改生成的方法体,请选择“工具”“模板”。
}
}
jsp:
tableName数据库表
日期
类别
IdClient
保险人
医生
认可的
身份证件
我不确定我做错了什么,但我认为这与bean的定义有关
我感谢你的每一次帮助 您的代码相当棘手 1) 谁是getVisite()方法的调用方? 2) 为什么要创建一个内部声明有内部类的数据库类? 3) 您返回的是ArrayList visitArray=new ArrayList(),而不是数据库 因此,首先,DataBean类是无用的 其次,在Visit类中,不要只使用Insrured id,还要使用Insurer的实例。 以下是代码示例:
public class Visit {
public Visit(String dateOfTheVisit, String category, String idClient, Insurer insurer, String idDoctor, String idVisit,String accepted) {
this.dateOfTheVisit = dateOfTheVisit;
this.category = category;
this.idClient = idClient;
this.insurer = insurer;
this.idDoctor = idDoctor;
this.idVisit = idVisit;
this.accepted = accepted;
}
public String getIdVisit() {
return idVisit;
}
public void setIdVisit(String idVisit) {
this.idVisit = idVisit;
}
public String getDateOfTheVisit() {
return dateOfTheVisit;
}
public void setDateOfTheVisit(String dateOfTheVisit) {
this.dateOfTheVisit = dateOfTheVisit;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getIdClient() {
return idClient;
}
public void setIdClient(String idClient) {
this.idClient = idClient;
}
public String getIdDoctor() {
return idDoctor;
}
public void setIdDoctor(String idDoctor) {
this.idDoctor = idDoctor;
}
String idVisit;
String dateOfTheVisit;
String category;
String idClient;
String idInsrurer;
String idDoctor;
String accepted;
Insurer insurer;
public String getAccepted() {
return accepted;
}
public void setAccepted(String accepted) {
this.accepted = accepted;
}
}
公营保险公司{
public Insurer(String idInsurer, String name) {
this.idInsurer = idInsurer;
this.name = name;
}
public String getIdInsurer() {
return idInsurer;
}
public void setIdInsurer(String idInsurer) {
this.idInsurer = idInsurer;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
String idInsurer;
String name;
}
现在您应该创建一个servlet来显示数据,请查看本教程:
注意,在ServletDemo1类中,方法名必须是doGet(而不是doGe,这是一个简单的数字错误)
因此,在ServletDemo1中的doGet方法中,必须执行与getVisit()相同的逻辑,然后在返回之前,必须添加以下内容:
request.setAttribute("visitList",visitArray);
而不是返回列表,将其发送到jsp路径,如下所示:
request.getRequestDispatcher("/index.jsp").forward(request, response);
<c:forEach items="${visitList}" var="visit">
现在,在jsp中删除
<jsp:useBean id="data" class="sevenet.DataBean" scope="application"/>
并按如下方式对每一项进行更正:
request.getRequestDispatcher("/index.jsp").forward(request, response);
<c:forEach items="${visitList}" var="visit">
<c:forEach items="${visitList}" var="visit">
<td><c:out value="${visit.idInsrurer}"/></td>
<td><c:out value="${visit.insrurer.idInsurer}"/></td>
public class VisitListVariables{
private String dateOfTheVisit;
private String category;
private String idClient;
private String idInsrurer;
private String idDoctor;
private String idVisit;
private String accepted;
public String getDateOfTheVisit(){
return dateOfTheVisit;
}
public void setDateOfTheVisit(String dateOfTheVisit){
this.dateOfTheVisit = dateOfTheVisit;
}
...(More Getter and Setters)...
}
public class Visit{
public static List<VisitListVariables> BuildVisitList(String dateOfTheVisit, String category, String idClient, String idInsrurer, String idDoctor, String idVisit,String accepted) {
List<VisitListVariables> BuildVisitList = new ArrayList<>();
//database connection here
VisitListVariables buildList = new VisitListVariables();
while(rs.next()){
String visitDate = rs.getString("visitDate"); //gets variable from database
buildList.setDateOfTheVisit(visitDate);
BuildVisitList.add(buildList);
}
return BuildVisitList;
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
visit = Visit.BuildVisitList(dateOfTheVisit,category,idClient, idInsrurer,idDoctor,idVisit,accepted);
request.setAttribute("visitParam", visit); // Will be available as ${visitParam} in JSP
request.getRequestDispatcher("/PageName.jsp").forward(request, response);
}
<c:forEach items="${visitParam}" var="visit">
<tr>
<td><c:out value="${visit.dateOfTheVisit}"/></td>
<td><c:out value="${visit.category}"/></td>
<td><c:out value="${visit.idClient}"/></td>
<td><c:out value="${visit.idInsrurer}"/></td>
<td><c:out value="${visit.idDoctor}"/></td>
<td><c:out value="${visit.idVisit}"/></td>
<td><c:out value="${visit.accepted}"/></td>
</tr>
</c:forEach>
public class DataBean{
private static final String nameOfLogger = DataBean.class.getName();
private static final Logger logger = Logger.getLogger(nameOfLogger);
public class VisitListVariables{
private String dateOfTheVisit;
private String category;
private String idClient;
private String idInsrurer;
private String idDoctor;
private String idVisit;
private String accepted;
public String getDateOfTheVisit() {
return dateOfTheVisit;
}
public void setDateOfTheVisit(String dateOfTheVisit) {
this.dateOfTheVisit = dateOfTheVisit;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getIdClient() {
return idClient;
}
public void setIdClient(String idClient) {
this.idClient = idClient;
}
public String getIdInsrurer() {
return idInsrurer;
}
public void setIdInsrurer(String idInsrurer) {
this.idInsrurer = idInsrurer;
}
public String getIdDoctor() {
return idDoctor;
}
public void setIdDoctor(String idDoctor) {
this.idDoctor = idDoctor;
}
public String getIdVisit() {
return idVisit;
}
public void setIdVisit(String idVisit) {
this.idVisit = idVisit;
}
public String getAccepted() {
return accepted;
}
public void setAccepted(String accepted) {
this.accepted = accepted;
}
}
private java.sql.Connection psqlCon = null;
private boolean psqlConnectionCreated = false;
public static class Visit{
public static List<VisitListVariables> BuildVisitList(String dateOfTheVisit, String category, String idClient, String idInsrurer, String idDoctor, String idVisit,String accepted) throws SQLException {
List<VisitListVariables> BuildVisitList = new ArrayList<>();
Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres", "postgres", "password");
Statement stm;
stm = conn.createStatement();
String sql = "Select * From Customer";
ResultSet rs;
rs = stm.executeQuery(sql);
ArrayList<Visit> visitArray = new ArrayList<>();
BuildSearch buildList = new BuildSearch();
while(rs.next()){
String visitDate = rs.getString("visitDate"); //gets variable from database
buildList.setDateOfTheVisit(visitDate);
BuildVisitList.add(buildList);
}
return BuildVisitList;
}
public class Insurer {
public Insurer(String idInsurer, String name) {
this.idInsurer = idInsurer;
this.name = name;
}
public String getIdInsurer() {
return idInsurer;
}
public void setIdInsurer(String idInsurer) {
this.idInsurer = idInsurer;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
String idInsurer;
String name;
}
}
}
public class Servlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
visit = Visit.BuildVisitList(dateOfTheVisit, category, idClient, idInsrurer, idDoctor, idVisit, accepted);
request.setAttribute("visitParam", visit); // Will be available as ${visitParam} in JSP
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
<HTML>
<HEAD>
<TITLE>The tableName Database Table </TITLE>
</HEAD>
<BODY>
<jsp:useBean id="data" class="sevenet.DataBean" scope="application"/>
<H1>The tableName Database Table </H1>
<TABLE BORDER="1">
<TR>
<TH>Date</TH>
<TH>Category</TH>
<TH>IdClient</TH>
<TH>IdInsurer</TH>
<TH>IdDoctor</TH>
<TH>Accepted</TH>
<TH>ID</TH>
</TR>
<tbody>
<c:forEach items="${visitParam}" var="visit">
<tr>
<td><c:out value="${visit.dateOfTheVisit}"/></td>
<td><c:out value="${visit.category}"/></td>
<td><c:out value="${visit.idClient}"/></td>
<td><c:out value="${visit.idInsrurer}"/></td>
<td><c:out value="${visit.idDoctor}"/></td>
<td><c:out value="${visit.idVisit}"/></td>
<td><c:out value="${visit.accepted}"/></td>
</tr>
</c:forEach>
</tbody>
</TABLE>
</BODY>
package lists;
import java.util.ArrayList;
import java.util.List;
public class Visit{
public static List<VisitListVariables> BuildVisitList(){
List<VisitListVariables> BuildVisitList = new ArrayList<>(); //creates List to return
try{
//Database connection variables
//Connection conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres", "postgres", "password");
//Statement stm;
//stm = conn.createStatement();
//String sql = "Select * From Customer";
//ResultSet rs;
//rs = stm.executeQuery(sql);
//while(rs.next()){
VisitListVariables buildList = new VisitListVariables(); //Gets variables needed for list
//String visitDate = rs.getString("visitDate");
String dateOfTheVisit = "today";
buildList.setDateOfTheVisit(dateOfTheVisit);
buildList.setCategory("Doctor Visit");
buildList.setIdClient("666");
buildList.setIdInsrurer("999");
buildList.setIdDoctor("1001");
buildList.setIdVisit("001");
buildList.setAccepted("yes");
BuildVisitList.add(buildList);
//}
//rs.close();stm.close();conn.close();
}catch(Exception e){}
return BuildVisitList;
}
}
package lists;
public class VisitListVariables {
private String dateOfTheVisit;
private String category;
private String idClient;
private String idInsrurer;
private String idDoctor;
private String idVisit;
private String accepted;
public String getDateOfTheVisit() {
return dateOfTheVisit;
}
public void setDateOfTheVisit(String dateOfTheVisit) {
this.dateOfTheVisit = dateOfTheVisit;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getIdClient() {
return idClient;
}
public void setIdClient(String idClient) {
this.idClient = idClient;
}
public String getIdInsrurer() {
return idInsrurer;
}
public void setIdInsrurer(String idInsrurer) {
this.idInsrurer = idInsrurer;
}
public String getIdDoctor() {
return idDoctor;
}
public void setIdDoctor(String idDoctor) {
this.idDoctor = idDoctor;
}
public String getIdVisit() {
return idVisit;
}
public void setIdVisit(String idVisit) {
this.idVisit = idVisit;
}
public String getAccepted() {
return accepted;
}
public void setAccepted(String accepted) {
this.accepted = accepted;
}
}
package Servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import lists.Visit;
import lists.VisitListVariables;
public class Servlet extends HttpServlet {
/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code>
* methods.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<VisitListVariables> visit = Visit.BuildVisitList();
request.setAttribute("visitParam", visit); // Will be available as ${visitParam} in JSP
request.getRequestDispatcher("/test.jsp").forward(request, response);
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
*
* @param request servlet request
* @param response servlet response
* @throws ServletException if a servlet-specific error occurs
* @throws IOException if an I/O error occurs
*/
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*
* @return a String containing servlet description
*/
@Override
public String getServletInfo() {
return "Short description";
}// </editor-fold>
}
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<TITLE>The tableName Database Table </TITLE>
</head>
<body>
<H1>The tableName Database Table </H1>
<table BORDER="1">
<tr>
<th>Date</th>
<th>Category</th>
<th>IdClient</th>
<th>IdInsurer</th>
<th>IdDoctor</th>
<th>Accepted</th>
<th>ID</th>
</tr>
<tbody>
<c:forEach items="${visitParam}" var="visit">
<tr>
<td><c:out value="${visit.dateOfTheVisit}"/></td>
<td><c:out value="${visit.category}"/></td>
<td><c:out value="${visit.idClient}"/></td>
<td><c:out value="${visit.idInsrurer}"/></td>
<td><c:out value="${visit.idDoctor}"/></td>
<td><c:out value="${visit.idVisit}"/></td>
<td><c:out value="${visit.accepted}"/></td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<servlet>
<servlet-name>Servlet</servlet-name>
<servlet-class>Servlet.Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Servlet</servlet-name>
<url-pattern>/Servlet</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>Servlet</welcome-file>
</welcome-file-list>
</web-app>