最近在做一个登录页面,与oracle相连检测登录信息是否正确,写好代码后,我把login.jsp和check_login.jsp放到了C:\Program Files\Tomcat 5.5\webapps\sunshine目录下(sunshine是我自己建的目录),把sqlBean.java编译后的.class文件放到了C:\Program Files\Tomcat 5.5\webapps\sunshine\WEB-INF\sun目录下(sqlBean.java被封装到了sun包中),可是用浏览器浏览时出现了如下错误:
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: /check_login.jsp(10,0) The value for the useBean class attribute sun.sqlBean is invalid.
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1223)
org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Generator.generate(Generator.java:3284)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:189)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.12 logs
我弄了好久,可还是不知道错在哪了,哪位高人能指点一下,不胜感激啊!!!!我的代码如下:login.jsp:<%@ page contentType="text/html;charset=gb2312"%>
<html>
<title>login.jsp</title>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312"/>
</head>
<body>志愿者ID<input type=text name=userid>
<br><br>
密 码<input type=password name=password>
<br><br><input type=submit value="登录" onclick="location.href='check_login.jsp'"/><input type=submit value="找回密码" onclick="location.href='register.jsp'"/>
<input type=submit value="注册" onclick="location.href='findpw.jsp'"/></body>
</html>
登录检测页面:
check_login.jsp:<%@ page contentType="text/html;charset=gb2312" import="java.sql.*"%>
<%@ page import="sun.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312"/>
<title>登录检验</title>
</head>
<body><jsp:useBean id="db" scope="page" class="sun.sqlBean"/><%
String sql="";
String id=request.getParameter("userid");
String password=request.getParameter("password");
ResultSet rs=null;
sql="select password from ssunshine where id='"+id+"' ";
rs.db.executeQuery(sql);
if(rs.next())
{
password=rs.getString("password");
if(log.getPassword().equals(password))
{
session.setAttribute("userid",userid);
session.setAttribute("password",password);
respond.sendRedirect("home.jsp");
}
}
else
{
String message="登录失败,用户名或密码有误!!";response.sendRedirect("login.jsp");
}
%>
</body>
</html>
与oracle连接的类
sqlBean.java:package sun;
import java.io.*;
import java.sql.*;
public class sqlBean
{
public Connection conn=null;
public ResultSet rs=null;
private String DatabaseDriver="sun.jdbc.odbc.JdbcOdbcDriver";
private String DatabaseConnStr="jdbc:odbc:sunshine";
public void setDatabaseDriver(String Driver){ this.DatabaseDriver=Driver;}
public String getDatabaseDriver(){ return(this.DatabaseDriver);}
public void setDatabaseConnStr(String ConnStr){ this.DatabaseConnStr=ConnStr; }
public String getDatabaseConnStr(){ return (this.DatabaseConnStr); }
public sqlBean()
{
try{ Class.forName(DatabaseDriver); }
catch(java.lang.ClassNotFoundException e)
{
System.err.println("加载驱动器有误:"+e.getMessage());
System.out.print("执行插入有误:"+e.getMessage());
}
}
public String getString(String name) throws SQLException
{
if(rs==null) throw new SQLException("ResultSet is null");
return String.valueOf(rs.getString(name));
}
public void executeInsert(String sql)
{
try
{
conn=DriverManager.getConnection("jdbc:odbc:sunshine","system","system");
Statement stmt=conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println("加载驱动器有误:"+ex.getMessage());
System.out.print("执行插入有误:"+ex.getMessage());
}
}
public ResultSet executeQuery(String sql)
{
rs=null;
try
{
conn=DriverManager.getConnection("jdbc:odbc:sunshine","system","system");
Statement stmt=conn.createStatement();
stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println("加载驱动器有误:"+ex.getMessage());
System.out.print("执行插入有误:"+ex.getMessage());
}
return rs;
}
public void executeDelete(String sql)
{
try
{
conn=DriverManager.getConnection("jdbc:odbc:sunshine","system","system");
Statement stmt=conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println("加载驱动器有误:"+ex.getMessage());
System.out.print("执行插入有误:"+ex.getMessage());
}
}
public void CloseDataBase()
{
try { conn.close(); }
catch(Exception end)
{
System.err.println("执行关闭Connection对象有误:"+end.getMessage());
System.out.print("执行关闭Connection对象有误:"+end.getMessage());
}
}
}
HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: /check_login.jsp(10,0) The value for the useBean class attribute sun.sqlBean is invalid.
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:39)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:405)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:146)
org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1223)
org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1116)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2213)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2219)
org.apache.jasper.compiler.Node$Root.accept(Node.java:456)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2163)
org.apache.jasper.compiler.Generator.generate(Generator.java:3284)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:189)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:267)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:255)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:293)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.12 logs
我弄了好久,可还是不知道错在哪了,哪位高人能指点一下,不胜感激啊!!!!我的代码如下:login.jsp:<%@ page contentType="text/html;charset=gb2312"%>
<html>
<title>login.jsp</title>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312"/>
</head>
<body>志愿者ID<input type=text name=userid>
<br><br>
密 码<input type=password name=password>
<br><br><input type=submit value="登录" onclick="location.href='check_login.jsp'"/><input type=submit value="找回密码" onclick="location.href='register.jsp'"/>
<input type=submit value="注册" onclick="location.href='findpw.jsp'"/></body>
</html>
登录检测页面:
check_login.jsp:<%@ page contentType="text/html;charset=gb2312" import="java.sql.*"%>
<%@ page import="sun.*"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=gb2312"/>
<title>登录检验</title>
</head>
<body><jsp:useBean id="db" scope="page" class="sun.sqlBean"/><%
String sql="";
String id=request.getParameter("userid");
String password=request.getParameter("password");
ResultSet rs=null;
sql="select password from ssunshine where id='"+id+"' ";
rs.db.executeQuery(sql);
if(rs.next())
{
password=rs.getString("password");
if(log.getPassword().equals(password))
{
session.setAttribute("userid",userid);
session.setAttribute("password",password);
respond.sendRedirect("home.jsp");
}
}
else
{
String message="登录失败,用户名或密码有误!!";response.sendRedirect("login.jsp");
}
%>
</body>
</html>
与oracle连接的类
sqlBean.java:package sun;
import java.io.*;
import java.sql.*;
public class sqlBean
{
public Connection conn=null;
public ResultSet rs=null;
private String DatabaseDriver="sun.jdbc.odbc.JdbcOdbcDriver";
private String DatabaseConnStr="jdbc:odbc:sunshine";
public void setDatabaseDriver(String Driver){ this.DatabaseDriver=Driver;}
public String getDatabaseDriver(){ return(this.DatabaseDriver);}
public void setDatabaseConnStr(String ConnStr){ this.DatabaseConnStr=ConnStr; }
public String getDatabaseConnStr(){ return (this.DatabaseConnStr); }
public sqlBean()
{
try{ Class.forName(DatabaseDriver); }
catch(java.lang.ClassNotFoundException e)
{
System.err.println("加载驱动器有误:"+e.getMessage());
System.out.print("执行插入有误:"+e.getMessage());
}
}
public String getString(String name) throws SQLException
{
if(rs==null) throw new SQLException("ResultSet is null");
return String.valueOf(rs.getString(name));
}
public void executeInsert(String sql)
{
try
{
conn=DriverManager.getConnection("jdbc:odbc:sunshine","system","system");
Statement stmt=conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println("加载驱动器有误:"+ex.getMessage());
System.out.print("执行插入有误:"+ex.getMessage());
}
}
public ResultSet executeQuery(String sql)
{
rs=null;
try
{
conn=DriverManager.getConnection("jdbc:odbc:sunshine","system","system");
Statement stmt=conn.createStatement();
stmt.executeQuery(sql);
}
catch(SQLException ex)
{
System.err.println("加载驱动器有误:"+ex.getMessage());
System.out.print("执行插入有误:"+ex.getMessage());
}
return rs;
}
public void executeDelete(String sql)
{
try
{
conn=DriverManager.getConnection("jdbc:odbc:sunshine","system","system");
Statement stmt=conn.createStatement();
stmt.executeUpdate(sql);
}
catch(SQLException ex)
{
System.err.println("加载驱动器有误:"+ex.getMessage());
System.out.print("执行插入有误:"+ex.getMessage());
}
}
public void CloseDataBase()
{
try { conn.close(); }
catch(Exception end)
{
System.err.println("执行关闭Connection对象有误:"+end.getMessage());
System.out.print("执行关闭Connection对象有误:"+end.getMessage());
}
}
}
ps:你这段太乱了,web不像web的。都无从下手。看错误信息似乎是类无效。应该是你的sqlBean用到了什么包,而这个类包不在你的classpath里面。
你扔上来的代码里面有几个问题给你指出下,不过跟你报的错无关,纯语法错误或者一些优化代码的建议。。1.rs.db.executeQuery(sql);
应改为:rs=db.executeQuery(sql);
2.if(log.getPassword().equals(password))
这个log在哪里定义的?
3.session.setAttribute("userid",userid);
这个userid在哪里定义的?
4.String message="登录失败,用户名或密码有误!!";
定义了message下面没用到,不用定义。
5.respond.sendRedirect("home.jsp");
单词拼错,应为response
6.既然引入得时候用了<%@ page import="sun.*"%> ,那么下面<jsp:useBean id="db" scope="page" class="sun.sqlBean"/> 除非引入得包里存在重名类,否则直接用类名就可以了,即:
<jsp:useBean id="db" scope="page" class="sqlBean"/>
7.java编码,类名开头第一个字母要大写。方法名第一个字母要小写。
8.开发web项目,不是说,自己在tomcat里面建些目录,扔些文件就可以的。最好还是用IDE的打包工具,export成war文件,然后再把war放到tomcat的webapps下面,tomcat会自己给你解压的。