gpt4 book ai didi

java - 无法编译 JSP : nme cannot be resolved 的类

转载 作者:行者123 更新时间:2023-11-30 05:10:46 26 4
gpt4 key购买 nike

我正在尝试使用 TOMCAT 6.0 将 JSP 与 MYSQL Server 5.1.49 连接。我能够将 JAVA 与 MYSQL 连接,但无法使用 tomcate 配置 mysql 并出现以下错误

org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 54 in the jsp file: /checlLogin.jspnme cannot be resolved51:     String pwd = request.getParameter("password");52:     String uName = request.getParameter("username");53: 54:      if(nme.equals(uName))55:       {56:         response.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)

谁能解释一下我做错了什么。

<小时/>

更新:这是我的代码: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");
}
%>

感谢您为解决此问题提供的进一步解释。

最佳答案

Can anyone kindly explain what I am doing wrong

在 JSP 文件中编写原始 Java 代码。你应该avoid那个。

<小时/>

回到你的实际问题:这只是一个编译错误。无法解析名为 nme 的变量。它尚未在您尝试访问该变量的范围内声明。

要解决此问题,您需要确保名称为 nme 的变量在正确的范围内声明。由于您没有发布相关的代码片段,因此不可能告诉您如何准确地解决此问题。下面是一个可能导致此类问题的基本示例:

if (foo == null) {
String bar = "value";
}

if ("foo".equals(bar)) { // Compile error! bar cannot be resolved.
// ...
}

然后您应该按如下方式修复它:

String bar = null;

if (foo == null) {
bar = "value";
}

if ("foo".equals(bar)) { // No compile error anymore, bar can be resolved.
// ...
}

它至少与 JSP、MySQL 或 Tomcat 无关,而只是与基本的 Java 相关。在普通 Java 类中这样做时,您会遇到完全相同的问题;)

<小时/>

更新:根据您的更新:您在 while block 内声明 nme,但您试图在外部访问它while block 。

然而,代码还存在另一个主要问题。首先,您没有利用 WHERE 子句的功能,而是通过将整个数据库表拖入 Java 内存并测试循环内的每一行来接管 Java 内部的数据库任务。 Learn the WHERE clause 。此外,该代码还泄漏数据库资源。您需要在 finally block 中close()它们。

我建议扔掉你正在阅读的书籍/教程。到目前为止,他们只教导了不好的做法。以下是一些更好教程的链接:

注意:在学习之前不要学习 Basic Java !

关于java - 无法编译 JSP : nme cannot be resolved 的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3433195/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com