jsp编写登陆界面代码

jingtangfang 2009-11-08 08:40:17
这是index.jsp
<%@ page session="true" %>
<%@ page contentType="text/html;charset=gbk" %>
<%@ page pageEncoding="gbk"%>
<%request.setCharacterEncoding("gbk");%>
<%@page import="java.sql.*"
import ="java.util.*"
import ="java.io.*"
contentType="text/html;charset=gbk"
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" contentType="text/html;charset=gbk" />

<title>test</title>



<%
java.sql.Connection sqlConn; //数据库连接对象
java.sql.Statement sqlStmt; //语句对象
java.sql.ResultSet sqlRst;

Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
sqlConn= DriverManager.getConnection ("jdbc:odbc:jsp","sa","sa");
sqlStmt=sqlConn.createStatement ();

String username=request.getParameter("username");
String userpwd=request.getParameter("userpwd");
//out.print(pwd);

String sqlQuery="select count(*) from [user] where name='"+username+"'";
//out.print(sqlQuery);
sqlRst=sqlStmt.executeQuery (sqlQuery);

sqlRst.next();
int count=sqlRst.getInt(1);
//out.print(count);

if(count==0)
{
out.print("<script>alert('此用户不存在!');window.location.href='login.jsp'</script>");
}
else
{
sqlQuery="select * from [user] where password='"+userpwd+"'";
//out.print(sqlQuery);
sqlRst=sqlStmt.executeQuery (sqlQuery); //执行SQL语句
sqlRst.next();
String pwd1=sqlRst.getString(2);
int isadmin=sqlRst.getInt(9);
if(!pwd1.equals(userpwd))
{
out.print("<script>alert('密码不正确!');window.location.href='login.jsp'</script>");
}



else if(isadmin==1)
{
%>

<p>管理员<%=username%>在线<img src="f2.gif.gif" alt="在线管理员">  <a href="login.jsp">退出系统</a> </p>

<%

if (null != request.getParameter("name1")&&
null != request.getParameter("number")&&
null != request.getParameter("creater")&&
null != request.getParameter("age"))
{
String name=request.getParameter("name1");
String number=request.getParameter("number");
String creater=request.getParameter("creater");
String age=request.getParameter("age");
String sListID = request.getParameter("did");
System.out.println(name);
System.out.println(number);
System.out.println(creater);
System.out.println(age);

Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
sqlConn= DriverManager.getConnection ("jdbc:odbc:jsp","sa","sa");
Statement stmt1=sqlConn.createStatement();
String sql="Insert into test(name,number,creater,age) Values('" + name+ "','" + number+ "','" + creater+ "','" + age+ "')";
int n=stmt1.executeUpdate(sql);

stmt1.close();
sqlConn.close();

}
%>
后面省略了
一直出现 密码不正确!
我用login.jsp调用或直接打index.jsp都不行
大家看下
...全文
7118 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanyuanwaifdl 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

能正确就怪了。
直接采用通过name=? and password=?检索方式来检索。
然后通过得到的count来判断是否正确。
[/Quote]额
kky2010_110 2009-11-11
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 duanxiaojun_89 的回复:]
Statement stmt1=sqlConn.createStatement();
String sql="Insert into test(name,number,creater,age) Values('" + name+ "','" + number+ "','" + creater+ "','" + age+ "')";
改成一下代码:
Statement stmt1=sqlConn.createStatement();
String sql="Insert into test(name,number,creater,age) Values(?,?,?,?)";
stmt1.setString(1,name);
stmt1.setString(2,number);
stmt1.setString(3,creater);
stmt1.setString(4,age);
[/Quote]

改成stmt1.setObject(1,name);省略 .......
CocoPig 2009-11-11
  • 打赏
  • 举报
回复
看得我头晕,楼主干吗不写独立JAVA类文件,然后import进JSP并实例化,再调用方法呢
linshutao 2009-11-09
  • 打赏
  • 举报
回复
学习学习,呵呵,我也是菜鸟
LIUHANXU860311 2009-11-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cswyzq215324 的回复:]
建议同志们提出方法前,把程序到自己的电脑上先调试运行看自己的修改是否正确,正确的话再把修改方案提上去,要真心的帮助楼主。
[/Quote]
就应该这样,前几天我问问题,大家帮解决以后,出现的问题比没解决前还要多,呵呵!
zzklck 2009-11-09
  • 打赏
  • 举报
回复
享受学习的过程···
zl3450341 2009-11-08
  • 打赏
  • 举报
回复
....这代码乱的
laibing0790 2009-11-08
  • 打赏
  • 举报
回复
学习下..
  • 打赏
  • 举报
回复
断点跟踪一下。
cswyzq215324 2009-11-08
  • 打赏
  • 举报
回复
建议同志们提出方法前,把程序到自己的电脑上先调试运行看自己的修改是否正确,正确的话再把修改方案提上去,要真心的帮助楼主。
GOon_star 2009-11-08
  • 打赏
  • 举报
回复
赞同七楼 推荐八楼 学习五楼
duanxiaojun_89 2009-11-08
  • 打赏
  • 举报
回复
Statement stmt1=sqlConn.createStatement();
String sql="Insert into test(name,number,creater,age) Values('" + name+ "','" + number+ "','" + creater+ "','" + age+ "')";
改成一下代码:
Statement stmt1=sqlConn.createStatement();
String sql="Insert into test(name,number,creater,age) Values(?,?,?,?)";
stmt1.setString(1,name);
stmt1.setString(2,number);
stmt1.setString(3,creater);
stmt1.setString(4,age);
closewbq 2009-11-08
  • 打赏
  • 举报
回复
能正确就怪了。
直接采用通过name=? and password=?检索方式来检索。
然后通过得到的count来判断是否正确。
BraveHorse 2009-11-08
  • 打赏
  • 举报
回复
sqlQuery="select * from [user] where password='"+userpwd+"'"; 应该改为
sqlQuery="select * from [user] where name='"+username+"'";
BraveHorse 2009-11-08
  • 打赏
  • 举报
回复
楼主的登陆代码判断写法比较好,现在不好判断的是 select * from [user]中password是第几个字段,索引是由1开始的,建议楼主是用 select password,isadmin from [user] 来执行,保证password没有取错字段。 还有一个细节与所提问题无关,楼主既然使用了 select count(*) from [user]……,那么就不应该只判断 count==0,还应该判断 count>1。因为使用了 select count(*) from [user]本身就是防止sql注入的写法,那么多进行一个判断更好些。
iskyshop 2009-11-08
  • 打赏
  • 举报
回复
sqlQuery="select * from [user] where password='"+userpwd+"'"; //怎么能根据密码来查询,应该根据用户名来查询并返回其他信息
zhilesjf 2009-11-08
  • 打赏
  • 举报
回复
xuexi
swandragon 2009-11-08
  • 打赏
  • 举报
回复
String sqlQuery="select name,password,isadmin from [user] where name='"+username+"'";
sqlRst=sqlStmt.executeQuery (sqlQuery); //执行SQL语句
if(!sqlRst.next()){
//用户不存在
}else {
String password = sqlRst.getString("password");
int isadmin=sqlRst.getInt("isadmin");
if(!password .equals(userpwd))
{
out.print(" <script>alert('密码不正确!');window.location.href='login.jsp' </script>");
}else {
……
}
}
gzbtiantian 2009-11-08
  • 打赏
  • 举报
回复
String pwd1=sqlRst.getString(2);
int isadmin=sqlRst.getInt(9);
确定 2索引返回的是密码吗? 索引时从1开始的。

81,092

社区成员

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

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