Anzeigen der Daten von Datenbank in jsp - MVC

Ich versuche zu kommen mit einem code, entspricht der mvc-Architektur und Darstellung des Inhalts einer Datenbank, in die jsp-Seite.. Die Verbindung und Verarbeitung von Daten im java-Dateien und nur die Anzeige der Daten in die jsp-Seite.

Ich verwende tomcat-server. Ich habe ojdbc6.jar und jstl-1.2.jar auf meiner WEB-INF/lib-Ordner.

(Update) Nach dem ändern mein web.xml zu Punkt-zu-index-ich habe java.lang.StackOverflowError Fehler.

Gibt es etwas, was fehlt/falsch mit dem code? Auch wenn ich nicht mit der Einhaltung des MVC-design, lassen Sie es mich wissen.
Jede Idee wäre willkommen.
Danke.

Hier ist der code, den ich versuche zu laufen.

DBConn.java

    public class DBConn extends HttpServlet{
      @Override
      public void doGet(HttpServletRequest request, 
                        HttpServletResponse response) 
                           throws IOException, ServletException {
        Connection connection = null;
        Statement stmt=null;
        ResultSet rs=null;
        List<Employee> dataList = new ArrayList<Employee>();
        try {
            //Load the JDBC driver
            String driverName = "oracle.jdbc.driver.OracleDriver";
            Class.forName(driverName);

            //Create a connection to the database
            String serverName = "localhost";
            String portNumber = "1521";
            String sid = "xe";
            String url = "jdbc:oracle:thin:@" + serverName + ":" + portNumber + ":" + sid;
            String username = "hr";
            String password = "hr";
            connection = DriverManager.getConnection(url, username, password);

            stmt = connection.createStatement();
            rs = stmt.executeQuery("select employee_id, first_name from employees");
            while (rs.next()) {
                dataList.add(new Employee(rs.getInt("employee_id"),
                                          rs.getString("first_name")));
            }
        } catch (ClassNotFoundException e) {
            //Could not find the database driver
            e.printStackTrace();
        } catch (SQLException e) {
            //Could not connect to the database
            e.printStackTrace();
        } finally{
            if(rs!=null){
                try{ 
                  rs.close();
                }catch(Exception ex) { /* */ ex.printStackTrace();}
            }
            if(stmt!=null){
                try{ 
                  stmt.close();
                }catch(Exception ex) { /* */ ex.printStackTrace();}
            }
            if(connection !=null){
                try{ 
                  connection.close();
                }catch(Exception ex) { /* */ ex.printStackTrace();}
            }
         }

         request.setAttribute("data", dataList);
         String strViewPage = "index.jsp";
         RequestDispatcher dispatcher = request.getRequestDispatcher(strViewPage);
          if (dispatcher != null) {
             dispatcher.forward(request, response);
          }
       }
    }

Employee.java

public class Employee {

    private Integer id;
    private String name;
    //public constructors and
    //setter/getter

    public Employee(Integer id, String name) {
        this.id = id;
        this.name = name;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

index.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <table border="1" width="303">
            <tr>
                <td width="119"><b>Emp ID</b></td>
                <td width="168"><b>First Name</b></td>
            <tr
        <form action="post">
            <c:forEach var="employee" items="${data}">
                <br/> ${employee.id}  ${employee.name}
            </c:forEach>
        </form>
        </tr>    
    </table>
</body>
</html>

web.xml

<servlet>
    <servlet-name>DBConn</servlet-name>
    <servlet-class>DB.DBConn</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>DBConn</servlet-name>
    <url-pattern>/index</url-pattern>
</servlet-mapping>

Fehler

    09 6, 12 10:09:00 AM org.apache.catalina.core.ApplicationDispatcher invoke
    SEVERE: Servlet.service() for servlet DBConn threw exception
    java.lang.StackOverflowError
        at java.util.HashMap$KeySet.<init>(HashMap.java:872)
        at java.util.HashMap$KeySet.<init>(HashMap.java:872)
        at java.util.HashMap.keySet(HashMap.java:869)
        at java.util.HashSet.iterator(HashSet.java:153)
        at java.util.Collections$1.<init>(Collections.java:3382)
        at java.util.Collections.enumeration(Collections.java:3381)
        at org.apache.catalina.connector.Request.getAttributeNames(Request.java:1027)
        at org.apache.catalina.connector.RequestFacade.getAttributeNames(RequestFacade.java:300)
        at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.<init>(ApplicationHttpRequest.java:927)
        at org.apache.catalina.core.ApplicationHttpRequest.getAttributeNames(ApplicationHttpRequest.java:243)
        at org.apache.catalina.core.ApplicationHttpRequest$AttributeNamesEnumerator.<init>(ApplicationHttpRequest.java:927)
        at org.apache.catalina.core.ApplicationHttpRequest.getAttributeNames(ApplicationHttpRequest.java:243)
  • Haben Sie versucht, Druck der Größe der Daten-Liste in der Servlet, nur um sicherzustellen, dass Sie werden immer die Daten aus der Datenbank.
  • danke für die Antwort. Ich versuchte, Sie zu haben, aber es scheint, dass alle das System.aus.println("Count-Daten:" + dataList.size()); kann ich in meinem code wird nicht angezeigt. Jetzt bin ich angefangen mich zu Fragen, wenn etwas falsch ist mit meinem setup 🙁
  • Ja, ich würde zuerst sicherstellen Servlet aufgerufen wird, bevor Sie kratzen den Kopf zu viel.
  • sorry Neuling hier. Ist das setup in web.xml?
  • Ich würde anfangen, aus web.xml um herauszufinden, welche url und die servlet zugeordnet ist.
  • Sie sind Recht index.jsp wurde nicht zugeordnet DBConn.. ich es ändern, ich bin jetzt immer diese Fehlermeldung 🙁 SCHWERWIEGEND: Servlet.service() for servlet DBConn warf Ausnahme java.lang.StackOverflowError
  • Bitte aktualisieren Sie Ihre Frage mit vollständiger stacktrace.
  • aktualisiert.. außerdem habe ich meinen web.xml
  • mögliche Duplikate von java jsp für die Anzeige von Daten aus der Datenbank
  • tut mir Leid, dass mein post war ein bisschen verwirrend ist es, das ist, warum ich erstellt eine neue. Ich möchte den alten entfernen aber ich kann nicht. Ich wirklich brauchen, um meine dieser code funktioniert 🙁
  • Legen Sie bereits die ${data} im doGet() Anfrage, ich sehe keinen Grund für die <form /> tag in Ihrem index.jsp. Funktioniert es ohne die <form action="post"> tag?

InformationsquelleAutor mysticfalls | 2012-09-06
Schreibe einen Kommentar