我在一个叫login的jsp中建立一个提交账号和密码的表单,然后action转到logined.jsp
以下是代码,但是无论对与错都是错误的,
请大家来看一看<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'logined.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
<%
String s=request.getParameter("zhanghao");
String s1=request.getParameter("mima");
ResultSet rs=null;
Connection con=null;
Statement stmt=null;
String a="";
String b="";
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@192.168.1.135:1521:EVALUATE";
String uid="testdb";
String pwd="test";
con= DriverManager.getConnection(url,uid,pwd);
stmt=con.createStatement();
String sql="select * from zhanghaoguanli";
rs=stmt.executeQuery(sql);
while (rs.next())
{
a=rs.getString("zhanghao");
b=rs.getString("mima");
} if(s.equals("a")&& s1.equals("b")){%>
<jsp:forward page="success.jsp"></jsp:forward>
<% }
else {%>
<font color=blue> 账号或者密码错误,请重新输入!!!!!</font>
<jsp:forward page="login.jsp"></jsp:forward>
<% }
}catch(Exception e){
e.printStackTrace();
}finally{
rs.close();
stmt.close();
con.close();
}%>
</body>
</html>
以下是代码,但是无论对与错都是错误的,
请大家来看一看<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'logined.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<body>
<%
String s=request.getParameter("zhanghao");
String s1=request.getParameter("mima");
ResultSet rs=null;
Connection con=null;
Statement stmt=null;
String a="";
String b="";
try{
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
String url="jdbc:oracle:thin:@192.168.1.135:1521:EVALUATE";
String uid="testdb";
String pwd="test";
con= DriverManager.getConnection(url,uid,pwd);
stmt=con.createStatement();
String sql="select * from zhanghaoguanli";
rs=stmt.executeQuery(sql);
while (rs.next())
{
a=rs.getString("zhanghao");
b=rs.getString("mima");
} if(s.equals("a")&& s1.equals("b")){%>
<jsp:forward page="success.jsp"></jsp:forward>
<% }
else {%>
<font color=blue> 账号或者密码错误,请重新输入!!!!!</font>
<jsp:forward page="login.jsp"></jsp:forward>
<% }
}catch(Exception e){
e.printStackTrace();
}finally{
rs.close();
stmt.close();
con.close();
}%>
</body>
</html>
第一个账号是111,密码是222
第二个账号是1,密码是2
让他们两个输入都能通过。
是不是应该定义数组,我在上面定义了String[]a=new String[10];
String []b=new Stirng[10];
然后应该怎么弄。如果下面直接写 while (rs.next())
{
a=rs.getString("zhanghao");
b=rs.getString("mima");
}
类型就不匹配了、。
应该是
if(s.equals(a)&& s1.equals(b))吧。
while (rs.next())
{
a=rs.getString("zhanghao");
b=rs.getString("mima");
}个人觉得是这里的问题吧,你通过rs.getString()取得的账号和密码,不一定正好是相互对应的账号-密码吧。
是不是可以这样:
利用String s=request.getParameter("zhanghao")得到页面提交的账号,直接在数据库里判断,到底有没有该账号,如果没有,提示:"账号不存在,请重新输入!"。如果存在该帐号,再利用String s1=request.getParameter("mima")得到页面提交的密码,与数据库中对应账号的密码进行比较,方法是:
String sql="select mima from zhanghaoguanli where zhanghao='"+s+"'" ;
rs=stmt.executeQuery(sql);
if(s1==rs.getString("mima"))
... ...
如果不相同,提示:“密码错误!”
现在我的意思是想判断多个帐户,应该怎么养定义a和b。定义成数组下面类型就不匹配了
a=rs.getString("zhanghao").trim();
b=rs.getString("mima").trim();
while (rs.next()){
a=rs.getString("zhanghao");
b=rs.getString("mima");
if(s.equals("a")&& s1.equals("b")){
//跳转
}
}
if语句写在外面的话,a和b的值取的是数据库中最后一条记录的值……
………………
s.equals(a)&& s1.equals(b)
你把a和b的值打印出来看看不就什么都清楚了
boolean passIt=false;
while (rs.next())
{
a=rs.getString("zhanghao");
b=rs.getString("mima");
if(s.equals(a)&& s1.equals(b))
{
passIt=true;
}//if
}//while
if(passIt){%>
<jsp:forward page="success.jsp"></jsp:forward>
<% }
else {%>
<font color=blue> 账号或者密码错误,请重新输入!!!!!</font>
<jsp:forward page="login.jsp"></jsp:forward>
<% }以上仅供你参考
if(s.equals("a")&& s1.equals("b")) 这儿euals的参数错了"a" 表示字符串aa 表示一个变量,这个变量中存储了一个对象,封装了某个字符串在里面应该改成
if(s.equals(a)&& s1.equals(b)) 这是个初级错误,建议复习基础知识,基本功过关了,再学习WEB编程
然后再与你想要的两个帐号比较,若两个帐号都存在,且密码正确则通过
这样你只要判断rs是否为空就可以判断用户是否合法了,也不用
对rs进行其他的处理,而且多少用户没关系。
因不知道楼主的具体应用需求,只是建议。
{
st=con.createStatement();
rs = st.executeQuery("select Password from Account where Username='" + loginForm.getName()+"'");
//rs = st.executeQuery("select password from login where name='" + loginForm.getName()+"'");
while(rs.next())
{
if(loginForm.getPassword().equals(rs.getString(1)))
return true;
}
return false;
}