请大家帮帮忙,看下面那有问题,
public String getMessage()
{try{
con=DriverManager.getConnection("jdbc:odbc:lcp","","");
sql=con.createStatement();
String condition=
"SELECT * FROM admin WHERE name = '"+logname+"'";
rs=sql.executeQuery(condition);
int rowcount=0;
String ps=null;
while(rs.next())
{ rowcount++;
logname=rs.getString("logname");
ps=rs.getString("password");
}
if((rowcount==1)&&(password.equals(ps)))
{ message="ok";
success="ok";
}
else
{message="输入的用户名或密码不正确";
success="false";
}
con.close();
return message;
}
catch(SQLException e)
{ message="输入的用户名或密码不正确";
success="false";
return message;
}
}
用户名跟密码输入正确就会出现catch里面的文字,输入不正确就出现else里面的文字
public String getMessage()
{try{
con=DriverManager.getConnection("jdbc:odbc:lcp","","");
sql=con.createStatement();
String condition=
"SELECT * FROM admin WHERE name = '"+logname+"'";
rs=sql.executeQuery(condition);
int rowcount=0;
String ps=null;
while(rs.next())
{ rowcount++;
logname=rs.getString("logname");
ps=rs.getString("password");
}
if((rowcount==1)&&(password.equals(ps)))
{ message="ok";
success="ok";
}
else
{message="输入的用户名或密码不正确";
success="false";
}
con.close();
return message;
}
catch(SQLException e)
{ message="输入的用户名或密码不正确";
success="false";
return message;
}
}
用户名跟密码输入正确就会出现catch里面的文字,输入不正确就出现else里面的文字
不会是logname,ps变量没定义吧:)
个人认为logname=rs.getString("logname");这句问题去掉试下
既然已经传递进用户名了就不用在从数据库里获得了 如果想再次获得建议再建立一个字段。
把logname=rs.getString("logname");这句问题去掉,问题还是存在 ,可能是没有进入while循环,我将
while(rs.next())
{ rowcount++;
logname=rs.getString("logname");
ps=rs.getString("password");
}
if((rowcount==1)&&(password.equals(ps)))
{ message="ok";
success="ok";
}
else
{message="输入的用户名或密码不正确";
success="false";
}
改为
while(rs.next())
{ message="ok";
success="ok";
}
还是得到catch里面的文字
try{
con=DriverManager.getConnection("jdbc:odbc:lcp","","");
sql=con.createStatement();
String condition = "SELECT * FROM admin WHERE name = '"+logname+"'";
rs=sql.executeQuery(condition);
int rowcount=0;
String ps=null;
while(rs.next())
{
rowcount++;
String logname = rs.getString("logname");
String ps = rs.getString("password");
String message = null ;
String succes = null ;
if((rowcount==1)&&(password.equals(ps))) {
message="ok";
success="ok";
}else{
message="输入的用户名或密码不正确";
success="false";
}
return message; rs.close();
sql.close();
con.close();
}
catch(SQLException e) {
message="输入的用户名或密码不正确";
success="false";
return message;
}
}改了一下,看行不行
POST提交交给什么程序了,怎么进入getMessage()方法的??
要是没有传入的话?你不但进不了WHILE
String condition="SELECT * FROM admin WHERE name = '"+logname+"'";
这句就已经错了
在catch里面加System.out.println (e.toString()) 把例外信息输出来。
import java.sql.*;
public class Login
{ String logname,
password,
success="false",
message=""; //用来返回登录是否成功的消息。
Connection con;
Statement sql;
ResultSet rs;
public Login()
{ //加载桥接器:
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}
catch(ClassNotFoundException e){}
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
//设置属性值、获取属性值的方法:
public void setLogname(String name)
{ logname=name;
}
public String getLogname()
{return logname;
}
public void setPassword(String pw)
{ password=pw;
}
public String getPassword()
{return password;
} public String getSuccess()
{return success;
}
//查询数据库的member表:
public String getMessage()
{try{
con=DriverManager.getConnection("jdbc:odbc:lcp","","");
sql=con.createStatement();
String condition=
"SELECT * FROM admin WHERE name = '"+logname+"'";
rs=sql.executeQuery(condition);
int rowcount=0;
String ps=null;
while(rs.next())
{rowcount++;
logname=rs.getString("logname");
ps=rs.getString("password");
}
if((rowcount==1)&&(password.equals(ps)))
{ message="ok";
success="ok";
}
else
{message="输入的用户名或密码正确";
success="false";
}
con.close();
return message;
}
catch(SQLException e)
{ message="输入的用户名或密码不正确";
success="false";
return message;
}
} private void jbInit() throws Exception {
}
}
<%@ page import="lcp.Login" %>
<%! //处理字符串的方法:
public String codeString(String s)
{ String str=s;
try{byte b[]=str.getBytes("ISO-8859-1");
str=new String(b);
return str;
}
catch(Exception e)
{ return str;
}
}
%>
<html>
<head>
<title>
admin_login
</title>
</head>
<body bgcolor="#ffffff" >
<p>
</p>
<center>
<%String str=response.encodeURL("admin_login.jsp");
%>
<FORM action="<%=str%>" Method="post">
<table><tr><th><h2>管理员登录</h2></th></tr>
</table>
<table>
<tr>
<td>管 理 员:</td>
<td><input type="text" name="logname" size="20"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password" size="20"></td>
</tr>
</table>
<tr>
<td><input type="submit" value="登录" name="b1" > </td>
</tr>
<tr>
<td> <input type="reset" value="重置" name="b2"></td>
</tr>
</form>
<jsp:useBean id="login" class="lcp.Login" scope="session" >
</jsp:useBean>
<% //提交信息后,验证信息是否正确:
String message="",
logname="",
password="";
if(!(session.isNew()))
{logname=request.getParameter("logname");
if(logname==null)
{logname="";
}
logname=codeString(logname);
password=request.getParameter("password");
if(password==null)
{password="";
}
password=codeString(password);
}
%>
<%
if(!(logname.equals("")))
{
%>
<jsp:setProperty name= "login" property="logname" value="<%=logname%>" />
<jsp:setProperty name= "login" property="password" value="<%=password%>" />
<%
message=login.getMessage(); //获取返回的验证信息。
if(message==null)
{message="";
}
}
%>
<% if(!(session.isNew()))
{ if(message.equals("ok"))
{String meb=response.encodeURL("admin_index.jsp");
response.sendRedirect(meb);
}
else
{out.print(message);
}
}
%>
</center>
</body>
</html>
put.println(str);
%>
看下获得的什么路径 可能获得路径不对。
为空就是提交自身。
response.encodeURL("admin_login.jsp");应该是返回一个URL吧
<FORM action="" Method="post">这样不行吗????
你加我MSN:[email protected]
这么说累