Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.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 处理JSP页面、数组列表时发生异常_Java_Jsp - Fatal编程技术网

Java 处理JSP页面、数组列表时发生异常

Java 处理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

我想不出这个问题

我的错误:

org.apache.jasper.jaspereException:处理时发生异常 第28行的JSP页面/index.JSP

第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>