急急急!!还是登录不了!

colagong 2003-05-20 01:27:41
请大家帮帮忙看看:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<%@page contentType="text/html;gb2312" %>
<%@page import="java.util.*"%>
<%@page import="java.io.*"%>
<%@page import="java.lang.*"%>
<%@page import="java.sql.*"%>

<HTML>
<HEAD>
<TITLE>用户登陆JSP文档</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<%String username=new String(request.getParameter("username").getBytes("8859_1"));%>
<%String password=new String(request.getParameter("mima").getBytes("8859_1"));%>

<%
Connection myCon;
Statement stmt;
ResultSet myRs;%>

<%try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
myCon=DriverManager.getConnection("jdbc:odbc:cola01");
stmt=myCon.createStatement();
%>

<%
username="select * from abc where id='"+username+"'";
myRs=stmt.executeQuery(username);
if(myRs.getString("password").compareTo(password)!=0)
{%>
<font face="华文行楷" size="5" color="#FF00FF">对不起,输入的密码不正确!</font><br>
<%}else{
%>
<font face="华文行楷" size="5" color="#FF00FF">输入的密码正确!</font><br>
<%
myRs.close();
}
stmt.close();
myCon.close();
}catch(Exception e){
System.out.println(e);
}
%>

</BODY>
</HTML>
用的是j2sdk+tomcat,提示中没有错误和警告,只出现:
java.lang.NullPointerException
at org.apache.jsp.login1$jsp._jspService(login1$jsp.java:82)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1011)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106)
at java.lang.Thread.run(Thread.java:536)
把这句<%@page import="java.lang.*"%>删了还是一样,为什么???
谢谢!!!!
...全文
38 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
colagong 2003-05-20
  • 打赏
  • 举报
回复
我加上了这一句:
if(getPass==null){
out.print("获得的密码为空!");
}

还是出来这一版:
exception

java.lang.NullPointerException
at org.apache.jsp.login1$jsp._jspService(login1$jsp.java:82)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:202)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:382)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:474)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:243)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:201)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2344)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:462)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:163)
at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1011)
at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1106)
at java.lang.Thread.run(Thread.java:536)

为什么呢?
sikuan 2003-05-20
  • 打赏
  • 举报
回复
你把网页传过来的参数username,password以及sql还有getPass全部out.print()出来,看看有什么问题

if(myRs.next()){
getPass=myRs.getString("password");
}
后面加上
if(getPass==null){
out.print("获得的密码为空!");
}
然后看看有什么反应

colagong 2003-05-20
  • 打赏
  • 举报
回复
我用了sikuan(冰糖★葫芦★头)发给我的程序取代了我原来了的那段,但是还是出现一样的错误!为什么呢?急啊!有没人帮帮忙??谢谢!◎!!
zez 2003-05-20
  • 打赏
  • 举报
回复
myRs.getString("password").compareTo(password)
这里要用.equas(password)
另外你的出错是你根本没有从数据库取得数据..
或者你的password是空 !(这个可能性更大:)
sikuan 2003-05-20
  • 打赏
  • 举报
回复
1.从结果集中去数据之间一定要先执行ResultSet.next()方法,否则取不出东西
2.建议你养成良好的编程习惯,变量定义后尽量减少不同意义的重复使用,比如你原来的:
username="select * from abc where id='"+username+"'";
3.从数据库中读取的数据尽量通过中间变量后进行比较
4.<%@page import="java.lang.*"%>这句可要可不要是因为jsp缺省状况下已经有此动作,即
java.lang.*在默认状况下已经被导入引用
miaoliujun 2003-05-20
  • 打赏
  • 举报
回复
<%@page import="java.lang.*"%>
这一句不要写的
可能是把8859_1改为iso8859_1试试看
trust_me 2003-05-20
  • 打赏
  • 举报
回复
抛空指针了,你引用了null;
察看一下你引用的变量是否为null,还有就是myRs好像不应该这么用,你是否应该坐下判断:
while(myRs.next()){
......
}
还有就是你的变量明明不规则。。。。
sikuan 2003-05-20
  • 打赏
  • 举报
回复
<%
String sql="select * from abc where id='"+username+"'";
String getPass=null;
myRs=stmt.executeQuery(sql);
if(myRs.next()){
getPass=myRs.getString("password");
}
if(!getPass.equals(password))
{%>
<font face="华文行楷" size="5" color="#FF00FF">对不起,输入的密码不正确!</font><br>
<%}else{
%>
<font face="华文行楷" size="5" color="#FF00FF">输入的密码正确!</font><br>
<%
myRs.close();
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧