你的try ---catch不匹配,也就是有的try没有catch,而有的catch又没有对应的try.
还有你的}也不是匹配的,有的地方差一个},这都是基本的错误“Generated servlet error”,把你的代码对整齐就会看出来了。
还有,JSP代码怎么可能在ASP中运行?我真是晕:-(
还有你的}也不是匹配的,有的地方差一个},这都是基本的错误“Generated servlet error”,把你的代码对整齐就会看出来了。
还有,JSP代码怎么可能在ASP中运行?我真是晕:-(
D:\developer\jakarta-tomcat-5.5.1 这一行和下面这一行是说出错是在那个文件中\work\Catalina\localhost\platform\org\apache\jsp\index_jsp.java:33: 'try' without 'catch' or 'finally'
try { 《-这是说错误具体在文件的那个地方
^
还有,你看见了index_jsp.java:33: 这个字符信息了吗?它告诉你是在index.jsp文件中出现了错误,而且具体的位置是index.jsp对应的servlet文件中的第33行。它之后的内容是告诉你为什么出错了。
楼主还明白不?
你的index.jsp有代码问题
<jsp:useBean id="Contact" scope="page" class="paltform.hllpgoa.ContactBean"/>
<%
String userid = (String)request.getParameter("userid");
String password = (String)request.getParameter("userid");
ResultSet su = Contact.getContact(userid,password); //取用户名和密码
if(su.next()){
response.sendRedirect("functionselect.jsp");
}
else {
response.sendRedirect("faillogin.jsp");
} }
%>
response.sendRedirect("functionselect.jsp");
}
else {
response.sendRedirect("faillogin.jsp");
} }//注意这里多了一个}起掉就可以了
确实多了个},去掉后,现在错误是: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
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:372)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.lang.NullPointerException
org.apache.jsp.index_jsp._jspService(index_jsp.java:65)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.
import java.sql.*;
public class ContactBean
{
Connection sqlCon=null;//数据库连接对象
Statement sqlStmt=null;//SQL语句对象
ResultSet sqlRst=null;//结果对象 public ContactBean(){
try { Class.forName("org.gjt.mm.mysql.Driver").newInstance();
}
catch(java.lang.ClassNotFoundException e){
System.err.println("mssql()"+e.getMessage());
}
catch(java.lang.InstantiationException e){
System.err.println("mssql()"+e.getMessage());
}
catch(java.lang.IllegalAccessException e){
System.err.println("mssql()"+e.getMessage());
}
}
public int Exec(String DataBase, String strSQL)
{
String url="jdbc:mysql://localhost/test";--------我一直怀疑这里有问题哈,是什么地址
String user="root";
String password="680505";
int NumRows=0;
try{
sqlCon =DriverManager.getConnection(url,user,password);
sqlStmt =sqlCon.createStatement();//执行SQL语句并获得结果集
NumRows =sqlStmt.executeUpdate(strSQL);
sqlStmt.close();
sqlCon.close();
}
catch(Exception e) {
e.printStackTrace();
}
return NumRows;
}
public ResultSet getContact(String userid,String password)
{
try
{
Statement stm=sqlCon.createStatement();
ResultSet result=stm.executeQuery("select * from userinfo where userid = '"+userid+"' and password = '"+password+"'");
//根据用户名和密码查询记录
return result;
}
catch(Exception e)
{
}
return null;
}
}
好象还有你的数据库的端口号的吧
一般mysql是3306
我是mmjdbc啊,连接方式是我那种格式地吧?D:\developer\mm.mysql.jdbc-1.2c
不过 我还会测试bean :)
{
ContactBean c = new ContactBean();
c.getContact("test","test");
}
便衣通过了,没出错
这是错误是说你有些对象在使用之前没有初始化。而且这个错误好象还是你的index.jsp里面的。
public static void main(String[] args)
{
ContactBean c = new ContactBean();
try{
ResultSet rs = c.getContact("test","test");
if(rs.next())
System.out.println(rs.getString(1));
}
catch(Exception e){e.printStackTrace();}
}
你在Exec()方法中String DataBase这个参数根本就没有用到,没有用就把这个参数去掉。 sqlStmt.close();
sqlCon.close(); 看到了这两句吗?这两句为你下面的getContact(String userid,String password)方法埋下了炸弹,当你在一个文件中如果先调用Exec()方法,然后再调用getContact()方法,那么第二个方法肯定出错,因为sqlCon己经被你关掉了。所以第二个方法是不是正常返回的,报错。而如果你只用getContact()这个方法,那么你的sqlCon又没有初始化,因为它的初始化被你放在getContact()方法中,一个对象在没有初始化前被调用,就会报NullPointerException这个错误。
E:\jia>javac ContactBean.javaE:\jia>java ContactBean
Exception in thread "main" java.lang.NoClassDefFoundError: ContactBeanE:\jia>
import java.sql.*;
public class DataConnection
{
public DataConnection()
{
String driver = "org.gjt.mm.mysql.Driver";
try
{
Class.forName(driver);
}
catch(ClassNotFoundException e)
{ System.out.println("ClassNotFoundException ->"+e);
}
}
public Connection getConnection()
{
String url = "jdbc:mysql://localhost:3306/exercise";
String user = "root";
String password = "roger";
return DriverManager.getConnection(url,user,password);
}
}
上面是我自己写的一个简单的连接数据库的JavaBean,你可以看一下。
public class ContactBean
{
Connection sqlCon=null;//数据库连接对象
public ContactBean()
{
String url="jdbc:mysql://localhost/test";--------我一直怀疑这里有问题哈,是什么地址
String user="root";
String password="680505";
try
{
Class.forName("org.gjt.mm.mysql.Driver").newInstance();
sqlCon =DriverManager.getConnection(url,user,password);
}
catch(Exception e)
{
System.err.println(e.getMessage());
}
}
public int Exec(String strSQL)
{ int NumRows=0;
try{
Statement sqlStmt =sqlCon.createStatement();//执行SQL语句并获得结果集
ResultSet NumRows =sqlStmt.executeUpdate(strSQL);
}
catch(Exception e)
{
e.printStackTrace();
}
return NumRows;
}
public ResultSet getContact(String userid,String password)
{
try
{
Statement stm=sqlCon.createStatement();
ResultSet result=stm.executeQuery("select * from userinfo where userid = '"+userid+"' and password = '"+password+"'");
//根据用户名和密码查询记录
return result;
}
catch(Exception e)
{
return null;
}
}
}
这是我把你的JavaBean改了一下,你对照起来看看。
public ResultSet getContact(String userid,String password)这个方法中应该改成
public ResultSet getContact(String userid,String password)
{
ResultSet result=null;
try
{
Statement stm=sqlCon.createStatement();
result=stm.executeQuery("select * from userinfo where userid = '"+userid+"' and password = '"+password+"'");
//根据用户名和密码查询记录
}
catch(Exception e)
{
return null;
}
return result;
}
Happy new year !