login.jsp的代码  
 
<?xml  version="1.0"  encoding="utf-8"?>  
<!DOCTYPE  wml  PUBLIC  "-//wapforun//DTD  WML  1.1//EN"  "http://www.wapforum.org/DTD/wml_1.1.xml">  
<%@  page  contentType="text/vnd.wap.wml;charset=gb2312"  language="java"  import="java.sql.*"%>  
<%  response.setContentType("text/vnd.wap.wml;charset=utf-8");%>  
<%  request.setCharacterEncoding("utf-8");%>  
<wml>    
<card  id="main"  title="登陆">    
<p  align="center">  
用户名<br/>  
<input  name="username"  type="text"  emptyok="false"    value=""/><br/>  
密码<br/>  
<input  name="password"  type="password"  emptyok="false"  value=""/><br/>  
<br/>  
<do  type="accept"  label="登陆">  
<go  href="chklogin.jsp"  method="post">  
<postfield  name="username"  value="$(username)"/>  
<postfield  name="password"  value="$(password)"/>  
</go>  
</do>  
 
<br/><br/><a  href="reg.jsp">你还没注册?</a></p>  
</card>  
</wml>  
————————————————————————————————  
chklogin.jsp的代码:  
 
<?xml  version="1.0"  encoding="utf-8"?>  
<!DOCTYPE  wml  PUBLIC  "-//wapforun//DTD  WML  1.1//EN"  "http://www.wapforum.org/DTD/wml_1.1.xml">  
<%@  page  contentType="text/vnd.wap.wml;charset=gb2312"  language="java"  import="java.sql.*"%>  
<%  response.setContentType("text/vnd.wap.wml;charset=utf-8");%>  
<%  request.setCharacterEncoding("utf-8");%>  
 
<jsp:useBean  id="testblog"  scope="page"  class="testblog.testblog"/>  
<%  
String  username=new  String(request.getParameter("username").trim().getBytes("8859_1"));  
String  password=new  String(request.getParameter("password").trim().getBytes("8859_1"));  
String  sql="select  *  from  user  where  username='"+username+"'  and  password='"+password+"'";  
ResultSet  rs=testblog.executeQuery(sql);  
if(rs.next()){  
int  id=Integer.parseInt(rs.getString("id"));  
response.sendRedirect("index.jsp?id="+id);  
rs.close();  
}  
else  
{  
rs.close();  
%>  
<wml>  
<card  id="main"  title="错误">    
<p  align="center">账号或密码输入错误,请重新输入!<anchor>返回<prev/></anchor>  
</p>  
</card>  
</wml>  
<%}%>  
-------------------------------  
chklogin.jsp的报错信息:  
 
 type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception 
org.apache.jasper.JasperException: Exception in JSP: /chklogin.jsp:1310: String password=new String(request.getParameter("password").trim().getBytes("8859_1"));
11: String sql="select * from user where username='"+username+"' and password='"+password+"'";
12: ResultSet rs=testblog.executeQuery(sql);
13: if(rs.next()){
14: int id=Integer.parseInt(rs.getString("id"));
15: response.sendRedirect("index.jsp?id="+id);
16: rs.close();
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
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)root cause 
java.lang.NullPointerException
org.apache.jsp.chklogin_jsp._jspService(chklogin_jsp.java:67)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
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.16 logs. 
                                     
--------------------------------  
其中调用的testblog这个bean的代码:  
 
package  testblog;  
import  java.sql.*;  
 
public  class  testblog  
{    
       String  strDBDriver="sun.jdbc.odbc.JdbcOdbcDriver";  
       String  strDBUrl="jdbc:odbc:testblog";  
       private  Connection  conn=null;  
       private  Statement  stmt=null;  
       ResultSet  rs=null;  
       //<!--注册数据库驱动程序-->  
       public  testblog()  
       {  
                   try  
                   {  
                           Class.forName(strDBDriver);  
                   }  
                   //异常处理  
                   catch(java.lang.ClassNotFoundException  e)    
               {  
                       System.err.println("testblog():"+e.getMessage());  
               }  
       }  
       //<!--建立数据库连接及定义数据查询-->  
       public  ResultSet  executeQuery(String  sql)  
       {  
               rs=null;  
               try  
               {  
                           conn=DriverManager.getConnection(strDBUrl,"sa","");//创建数据库连接对象    
                       stmt=conn.createStatement();  
                       rs=stmt.executeQuery(sql);  
               }  
               catch(SQLException  ex)    
               {  
                           System.err.println("aq.executeQuery:"+ex.getMessage());  
               }  
               return  rs;  
       }  
       //<!--定义数据操作-->  
       public  void  executeUpdate(String  sql)  
       {  
               stmt=null;  
               rs=null;  
               try  
               {  
                           conn=DriverManager.getConnection(strDBUrl,"sa","");  
                           stmt=conn.createStatement();  
                           stmt.executeQuery(sql);  
                           stmt.close();  
                           conn.close();  
               }  
               catch(SQLException  ex)  
               {  
                       System.err.println("aq.executeQuery:"+ex.getMessage());  
               }  
       }  
       //<!--关闭数据库连接-->  
       public  void  closeStmt()  
       {  
               try  
               {  
                           stmt.close();  
               }  
               catch(SQLException  e)  
               {  
                           e.printStackTrace();  
               }  
       }  
       public  void  closeConn()  
       {  
                   try  
                   {  
                               conn.close();  
                   }  
                   catch(SQLException  e)  
                   {  
                               e.printStackTrace();  
                   }  
       }  
}

解决方案 »

  1.   

    记得在你取值的地方加上TRY,不然出错的
    try{
       String  username=new  String(request.getParameter("username").trim().getBytes("8859_1"));  
    String  password=new  String(request.getParameter("password").trim().getBytes("8859_1"));  
    String  sql="select  *  from  user  where  username='"+username+"'  and  password='"+password+"'";  
    ResultSet  rs=testblog.executeQuery(sql);  
    if(rs.next()){  
    int  id=Integer.parseInt(rs.getString("id"));  
    response.sendRedirect("index.jsp?id="+id);  
    rs.close();  
    }  
    else  
    {  
    rs.close();  }catch(Exception e){}
      

  2.   

    好像还是不行,能不能贴出chklogin.jsp的整个代码
      

  3.   

    在你这个页面chklogin.jsp获取从表单的值判断一下。
    if(request.getParameter("username")!=null&&request.getParameter("username").length()!=0)
    {
    就正常走下面的
    try
    {}
    catch(){}...
    }else
    {
    response.sendRedirect(登入页面);
    }
      

  4.   

    我把chklogin.jsp修改成下面这个样子,
    <?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE wml PUBLIC "-//wapforun//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
    <%@ page contentType="text/vnd.wap.wml;charset=gb2312" language="java" import="java.sql.*"%>
    <% response.setContentType("text/vnd.wap.wml;charset=utf-8");%>
    <% request.setCharacterEncoding("utf-8");%>
    <jsp:useBean id="testblog" scope="page" class="testblog.testblog"/>
    <wml> 
    <card id="main" title="检验">
    <%String username=new String(request.getParameter("username"));
    String password=new String(request.getParameter("password"));
    try{  
    String sql="select * from user where username='"+username+"' and password='"+password+"'";
    ResultSet rs=testblog.executeQuery(sql);
    if(rs.next()){
    int id=Integer.parseInt(rs.getString("id"));
    response.sendRedirect("index.jsp?id="+id);
    rs.close();
    }
    else
    {
    rs.close();
    response.sendRedirect("err.jsp");}
    }catch(Exception  e){ out.print("无法取得值"+username+password);
    }
    %>
    </card>
    </wml>结果显示:无法取得值111111
    其中111和111是刚才输入的username和password的值,也就是说值能被取到,但是执行sql语句出错了。到底是哪里错了还是找不到,请大家帮忙找找。。
      

  5.   

    将String  username=new  String(request.getParameter("username").trim().getBytes("8859_1"));改为String  username=new  String(request.getParameter("username").trim().getBytes("8859_1"),"gb2312");
      

  6.   

    to ran_ran 将String  username=new  String(request.getParameter("username").trim().getBytes("8859_1"));
    改为String  username=new  String(request.getParameter("username").trim().getBytes("8859_1"),"gb2312");
    后还是不行啊
      

  7.   

    既然提示了:
    org.apache.jsp.chklogin_jsp._jspService(chklogin_jsp.java:67)
    那就找到chklogin_jsp.java的第67行,去看看chklogin_jsp.java应该是应用服务器自己产生的,在工作目录下
      

  8.   

    我确定是因为某个值没得到,建议你逐行用system.out.println()进行测试.
      

  9.   

    终于搞定了,答案都不是上面说的那些!
    而是数据库的表名是user,
    不知是什么原因,用user做表名好像会出错,我把表名改成userinfo就行了,真是郁闷死我了!
    在此谢谢大家的帮忙!