Unable to compile class for JSP: nme kann nicht aufgelöst werden
Ich versuche zu verbinden JSP mit MYSQL Server 5.1.49 der Verwendung von TOMCAT-6.0.
Ich bin in der Lage zu verbinden JAVA mit MYSQL aber nicht zum konfigurieren von mysql mit tomcate und bekommen folgende Fehlermeldung
org.apache.jasper.JasperException: Unable to compile class for JSP: Ein Fehler ist aufgetreten in Zeile: 54 in der jsp-Datei: /checlLogin.jsp nme kann nicht aufgelöst werden 51: String pwd = request.getParameter("password"); 52: String uName = Anfrage.getParameter("username"); 53: 54: if(nme.equals(uName)) 55: { 56: Reaktion.sendRedirect("index.jsp"); 57: }
Stacktrace:
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:439)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
Kann mir jemand freundlicherweise erklären, was ich falsch mache.
Update: Hier ist mein Code: CheckLogin.jsp
<%@ page language="java" import="java.sql.*" errorPage=""%>
<%@ page import="java.util.*"%>
<%
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "sohail");
if(!con.isClosed())
System.out.println("Successfully connected to MySQL server...");
//Step 5: create Statement
Statement st = con.createStatement();
//Step 6: preapare & execute the query
String sql = "SELECT * FROM login";
ResultSet rs = st.executeQuery(sql);
//Step 7: process the results
while(rs.next())
{
String nme = rs.getString("loginID");
String pwd = rs.getString("password");
System.out.println(nme + " " + pwd);
}
//Step 8: close the connection
con.close();
}
catch(Exception e)
{
System.err.println("Exception: " + e.getMessage());
}
finally
{
try
{
if(con != null)
con.close();
}
catch(SQLException e)
{
}
}
String pwd = request.getParameter("password");
String uName = request.getParameter("username");
if(nme.equals(uName))
{
response.sendRedirect("index.jsp");
}
else{
response.sendRedirect("index.jsp");
}
%>
Danke für deine weitere Erklärung, um dieses Problem zu beheben.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Raw Java-code in eine JSP-Datei. Sollten Sie vermeiden, dass.
Zurück zu deinem eigentlichen problem: dies ist nur eine Zusammenstellung Fehler. Die variable mit dem Namen
nme
kann nicht aufgelöst werden. Es hat nicht erklärt wurden, in dem Gültigkeitsbereich, in dem Sie versuchen, Zugriff auf die variable.Um dieses problem zu beheben, müssen Sie sicherstellen, dass die variable mit dem Namen
nme
ist erklärt worden in den richtigen Rahmen. Es ist unmöglich zu sagen, wie Sie genau dies kann behoben werden, da Sie nicht nach dem code-snippet von Relevanz. Also hier ist ein einfaches Beispiel, was kann die Ursache für diese Art von problem:Sollten Sie dann beheben Sie wie folgt:
Es ist zumindest nicht im Zusammenhang mit JSP, MySQL oder Tomcat, aber nur, um grundlegende Java. Sie hätte genau das gleiche problem, wenn dies in einer einfachen Java-Klasse 😉
Update: wie pro Ihre update: Sie deklarieren
nme
innerhalb derwhile
block, aber Sie versuchen, darauf zuzugreifen, die außerhalb derwhile
block.Gibt es jedoch noch große Probleme mit dem code. Zuerst von allen, Sie sind nicht nutzen die Kräfte der
WHERE
- Klausel, aber die übernahme der DB-Aufgabe im Java durch und schleppte die gesamte Datenbank-Tabelle in Java-Speicher und testen jede Zeile in einer Schleife. Lernen Sie die WHERE-Klausel. Weiter der code ist auch undicht DB-Ressourcen. Sie müssenclose()
Sie alle in derfinally
block.Schlage ich vor zu werfen Sie Weg, die Bücher/tutorials, die Sie gerade Lesen, wie weit. Sie haben so weit nur noch schlecht practces. Hier sind einige links zum besseren tutorials:
Hinweis: nicht lernen, es vor du gelernt hast Basic Java!