Announcement

Collapse
No announcement yet.

JSP - import directive

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JSP - import directive

    Hallo,

    ich habe denke ich ein einfaches Problem, aber ich komme dort einfach nicht weiter. Es könnte auch daran liegen das ich im JSP Bereich noch ein Anfänger bin.


    Ich verwende:
    XAMPP 1.8.1
    - Apache Tomcat 7.0.56

    Das Problem:
    Ich habe eine Java Klasse in der die Methode "getTableContent(String table)" ist und die möchte ich in meiner JSP-Datei aufrufen.

    Fehlermeldung:
    An error occurred at line: [14] in the generated java file: [C:\xampp\tomcat\work\Catalina\localhost\_\org\apac he\jsp\jsp_filmliste_002dfilmname_inc_jsp.java]
    The import Videothek cannot be resolved

    Verzeichnisstruktur:
    C:\xampp\tomcat\webapps\ROOT\
    ___- index.jsp
    ___- jsp.filmliste-filmname.inc.jsp
    ___- ...
    ___- assets\
    _______- ...
    ___- WEB-INF\
    _______- web.xml
    _______- classes\
    ___________- Videothek.class
    ___________- jdbc\
    ________________- Connect.class
    ________________- QueryBuilder.class
    ___________- Videothek\
    ________________- FunctionCollection.class
    _______- lib\
    ___________- mysql_connector_java_5.1.35_bin.jar

    CODE:
    FunctionCollection.java
    Code:
    package Videothek;
     
    import jdbc.QueryBuilder;
     
    public class FunctionCollection {
       
        QueryBuilder qb = new QueryBuilder();
     
    //...
             public String getTableContent(String table){
            return qb.getTableContent(new String[]{"*"}, table);
             }
    //...
    }
    jsp.filmliste-filmname.jsp
    HTML Code:
       <%@ page import="Videothek.FunctionCollection" %>
     
       <jsp:useBean id="fc" class="Videothek.FunctionCollection" scope="session"></jsp:useBean>
       <%
           <%-- FunctionCollection fc = new FunctionCollection(); --%>
           fc.getTableContent("film");
       %>

    Hinweis:
    Ich habe die Frage schon im coding-board.de Forum gepostet.
    Ich wollte eigentlich doppelt posting vermeiden, aber ich glaube die Community hier ist größer.
    Antworten könnt ihr mir natürlich auf beiden Seiten.
    Hier der Link dazu: http://www.coding-board.de/threads/j...rwenden.35451/
    Zuletzt editiert von 1337element; 06.08.2015, 05:56.

  • #2
    XAMPP 1.8.1 -> Wozu? Der Apache Webserver ist überflüssig, PHP auch.
    JSP ist veraltete Technik. Arbeite dich lieber in JSF ein.
    Packages werden klein geschrieben
    Variablen in Klassen haben einen Modifizierer (public, private, protected)
    Zuletzt editiert von Christian Marquardt; 06.08.2015, 06:21.
    Christian

    Comment


    • #3
      Erstmal Danke für die schnelle Antwort.

      Ich benutze XAMPP für den Tomcat - Server von Apache.
      Den Apache Server habe ich nicht laufen und php verwende ich auch nicht.

      Ah das Packages klein geschreiben werden wusste ich noch nicht, wieder etwas dazu gelernt.

      Also meine Klasse ist public und die Methode ebenfalls.

      JSF kann ich mir ja mal anschauen, aber ich würde trotzdem gerne wissen wo der Fehler ist.

      Comment


      • #4
        XAMPP ist für Apache-Webserver, PERL,PHP und MYSQL -> MYSQL lässt sich auch alleine installieren. XAMPP hat nix mit dem Tomcat zu tun
        Es geht auch nicht darum, ob die Klasse oder Methode public ist, der Compiler findet sie gar nicht erst. Und die Variable QueryBuilder qb.. solte private sein
        Einen Fehler sehe ich leider nicht
        Zeige mal diese Datei:
        jsp_filmliste_002dfilmname_inc_jsp.java
        Zuletzt editiert von Christian Marquardt; 06.08.2015, 09:41.
        Christian

        Comment


        • #5
          Ah interessant, mir ist gerade aufgefallen, dass eine Java Datei erzeugt wurde. Das ist mir vorher gar nicht aufgefallen, bis Sie mich auf der Datei jsp_filmliste_002dfilmname_inc_jsp.java angesprochen haben.

          Also die Datei habe ich unter "C:\xampp\tomcat\work\Catalina\localhost\_\org\apa che\jsp" gefunden, falls das wichtig sein sollte.

          jsp_filmliste_002dfilmname_inc_jsp.java
          Code:
          /*
           * Generated by the Jasper component of Apache Tomcat
           * Version: Apache Tomcat/7.0.56
           * Generated at: 2015-08-06 23:01:03 UTC
           * Note: The last modified time of this file was set to
           *       the last modified time of the source file after
           *       generation to assist with modification tracking.
           */
          package org.apache.jsp;
          
          import javax.servlet.*;
          import javax.servlet.http.*;
          import javax.servlet.jsp.*;
          import Videothek.FunctionCollection;
          
          public final class jsp_filmliste_002dfilmname_inc_jsp extends org.apache.jasper.runtime.HttpJspBase
              implements org.apache.jasper.runtime.JspSourceDependent {
          
            private static final javax.servlet.jsp.JspFactory _jspxFactory =
                    javax.servlet.jsp.JspFactory.getDefaultFactory();
          
            private static java.util.Map<java.lang.String,java.lang.Long> _jspx_dependants;
          
            private javax.el.ExpressionFactory _el_expressionfactory;
            private org.apache.tomcat.InstanceManager _jsp_instancemanager;
          
            public java.util.Map<java.lang.String,java.lang.Long> getDependants() {
              return _jspx_dependants;
            }
          
            public void _jspInit() {
              _el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();
              _jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());
            }
          
            public void _jspDestroy() {
            }
          
            public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)
                  throws java.io.IOException, javax.servlet.ServletException {
          
              final javax.servlet.jsp.PageContext pageContext;
              javax.servlet.http.HttpSession session = null;
              final javax.servlet.ServletContext application;
              final javax.servlet.ServletConfig config;
              javax.servlet.jsp.JspWriter out = null;
              final java.lang.Object page = this;
              javax.servlet.jsp.JspWriter _jspx_out = null;
              javax.servlet.jsp.PageContext _jspx_page_context = null;
          
          
              try {
                response.setContentType("text/html");
                pageContext = _jspxFactory.getPageContext(this, request, response,
                			null, true, 8192, true);
                _jspx_page_context = pageContext;
                application = pageContext.getServletContext();
                config = pageContext.getServletConfig();
                session = pageContext.getSession();
                out = pageContext.getOut();
                _jspx_out = out;
          
                out.write("\r\n");
                out.write("\r\n");
                out.write('\r');
                out.write('\n');
                out.write("\r\n");
                out.write("\r\n");
                out.write("\r\n");
                Videothek.FunctionCollection fc = null;
                synchronized (session) {
                  fc = (Videothek.FunctionCollection) _jspx_page_context.getAttribute("fc", javax.servlet.jsp.PageContext.SESSION_SCOPE);
                  if (fc == null){
                    fc = new Videothek.FunctionCollection();
                    _jspx_page_context.setAttribute("fc", fc, javax.servlet.jsp.PageContext.SESSION_SCOPE);
                  }
                }
                out.write('\r');
                out.write('\n');
          
             <%-- FunctionCollection fc = new FunctionCollection(); --
                out.write("\r\n");
                out.write("   fc.getTableContent(\"film\");\r\n");
                out.write("%>");
              } catch (java.lang.Throwable t) {
                if (!(t instanceof javax.servlet.jsp.SkipPageException)){
                  out = _jspx_out;
                  if (out != null && out.getBufferSize() != 0)
                    try {
                      if (response.isCommitted()) {
                        out.flush();
                      } else {
                        out.clearBuffer();
                      }
                    } catch (java.io.IOException e) {}
                  if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
                  else throw new ServletException(t);
                }
              } finally {
                _jspxFactory.releasePageContext(_jspx_page_context);
              }
            }
          }

          Comment


          • #6
            import Videothek.FunctionCollection;

            ist fehlerhaft.

            Schreibe das Package klein.

            Prüfe, ob im Verzeichnis classes/videothek wirklich diese Klasse vorhanden ist
            Christian

            Comment


            • #7
              Ich habe das Package jetzt klein geschrieben und es hat tatsächlich etwas gebracht, ich dachte es wäre nur ein Schönheitsfehler.
              Die Datei FunctionCollection.class ist im Ordner classes/videothek vorhanden.

              Aber der nächste Fehler folgt sogleich.

              Code:
              org.apache.jasper.JasperException: org.apache.jasper.JasperException: An exception occurred processing JSP page /jsp.filmliste-filmname.inc.jsp at line 9
              
              6: 
              7: <jsp:useBean id="fc" class="videothek.FunctionCollection" scope="session"></jsp:useBean>
              8: <%
              9:    fc.getTableColNames("film");
              10: %>
              
              
              Stacktrace:
              	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
              	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
              	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
              	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
              	javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
              	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

              Comment


              • #8
                Der Stacktrace sagt nichts aus.
                Musst du mal in den Logs des Tomcat schauen

                Dein bisheriger Code hatte keine Methode getTableColNames
                Christian

                Comment


                • #9
                  Achso ob getTableColNames oder getTableContent, da kommt der selbe Fehler.
                  Ich hab es jetzt wieder nach getTableContent gewechselt.
                  Aber als ich die Logs gelöscht habe, ist der Fehler verschwunden.

                  Jetzt kommt da nur noch ein NullPointerException.

                  Die Fehlermeldung:
                  Code:
                  org.apache.jasper.JasperException: org.apache.jasper.JasperException: java.lang.NullPointerException
                  	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
                  	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
                  	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
                  	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
                  	javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
                  	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)


                  Logs:
                  localhost.2015-08-07.log
                  Code:
                  Aug 07, 2015 11:46:26 PM org.apache.catalina.core.ApplicationContext log
                  INFORMATION: ContextListener: contextInitialized()
                  Aug 07, 2015 11:46:26 PM org.apache.catalina.core.ApplicationContext log
                  INFORMATION: SessionListener: contextInitialized()
                  Aug 07, 2015 11:46:26 PM org.apache.catalina.core.ApplicationContext log
                  INFORMATION: ContextListener: attributeAdded('org.apache.jasper.compiler.TldLocationsCache', 'org.apache.jasper.compiler.TldLocationsCache@4112f37a')
                  Aug 07, 2015 11:46:51 PM org.apache.catalina.core.ApplicationDispatcher invoke
                  SCHWERWIEGEND: Servlet.service() for servlet jsp threw exception
                  java.lang.NullPointerException
                  	at jdbc.QueryBuilder.getTableContent(QueryBuilder.java:141)
                  	at videothek.FunctionCollection.getTableContent(FunctionCollection.java:36)
                  	at org.apache.jsp.jsp_filmliste_002dfilmname_inc_jsp._jspService(jsp_filmliste_002dfilmname_inc_jsp.java:81)
                  	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
                  	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
                  	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
                  	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
                  	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
                  	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
                  	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
                  	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
                  	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
                  	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:604)
                  	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:543)
                  	at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
                  	at org.apache.jsp.filme_jsp._jspService(filme_jsp.java:152)
                  	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
                  	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
                  	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
                  	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
                  	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
                  	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
                  	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
                  	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
                  	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
                  	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
                  	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
                  	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
                  	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
                  	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
                  	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
                  	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
                  	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
                  	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
                  	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
                  	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
                  	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
                  	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
                  	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
                  	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
                  	at java.lang.Thread.run(Thread.java:745)
                  
                  Aug 07, 2015 11:46:51 PM org.apache.catalina.core.StandardWrapperValve invoke
                  SCHWERWIEGEND: Servlet.service() for servlet [jsp] in context with path [] threw exception [org.apache.jasper.JasperException: java.lang.NullPointerException] with root cause
                  java.lang.NullPointerException
                  	at jdbc.QueryBuilder.getTableContent(QueryBuilder.java:141)
                  	at videothek.FunctionCollection.getTableContent(FunctionCollection.java:36)
                  	at org.apache.jsp.jsp_filmliste_002dfilmname_inc_jsp._jspService(jsp_filmliste_002dfilmname_inc_jsp.java:81)
                  	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
                  	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
                  	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
                  	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
                  	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
                  	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
                  	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
                  	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
                  	at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748)
                  	at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:604)
                  	at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:543)
                  	at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
                  	at org.apache.jsp.filme_jsp._jspService(filme_jsp.java:152)
                  	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
                  	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
                  	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
                  	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
                  	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
                  	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
                  	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
                  	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
                  	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
                  	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
                  	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
                  	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
                  	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
                  	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
                  	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
                  	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
                  	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
                  	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
                  	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070)
                  	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
                  	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:314)
                  	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
                  	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
                  	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
                  	at java.lang.Thread.run(Thread.java:745)

                  Comment


                  • #10
                    Der Fehler ist in Zeile 36 deiner Klasse. Die Zeile kannst nur du raussuchen.


                    at videothek.FunctionCollection.getTableContent(Funct ionCollection.java:36)
                    Zuletzt editiert von Christian Marquardt; 08.08.2015, 15:26.
                    Christian

                    Comment

                    Working...
                    X