用servlet写的三个程序实现用户登录进入welcome界面但失败了大家帮忙看看把
以下是login的代码
package com.Servlet;
import javax.servlet.http.*;
import java.io.*;
public class login extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res)
{
//登陆界面。
try
{
res.setContentType("text/html;charset=gbk");
PrintWriter PW=res.getWriter();
PW.println("<html>");
PW.println("<body>");
String info=req.getParameter("info");
if(info!=null)
{
PW.println("<h1>你的密码或用户名出错<h1>");
}
PW.println("<h1>用户登录界面</h1>");
PW.println("<form action=logincl method=post>");
PW.println("用户名:<input type=text name=username><br>");
PW.println("密码:<input type=password name=password>");
PW.println("<input type=submit value=login><br>");
PW.println("</form>");
PW.println("</body>");
PW.println("</html>");
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res)
{
this.doGet(req,res);
}
}
这是login的代码;
package com.Servlet;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
public class logincl extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res)
{
Connection ct=null;
Statement sm=null;
ResultSet rs=null;
try
{
String u=req.getParameter("username");
String p=req.getParameter("password");
//加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//获取数据库连接
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=people";
String user="sa";
String password="wozuiaideren";
ct=DriverManager.getConnection(url,user,password);
//创建Statement
sm=ct.createStatement();
rs=sm.executeQuery("select top 1 password from user where username='"+u+"'");
if(rs.next())
{
//说明用户存在
String dbpassword=rs.getString(1);
if(dbpassword.equals(p))
{
res.sendRedirect("welcome");
}
}
else
{
//说明用户名不存在
res.sendRedirect("login");
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
if(rs!=null)
{rs.close();}
if(sm!=null)
{sm.close();}
if(ct!=null)
{ct.close();}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res)
{
this.doGet(req,res);
}
}
如果在登录界面登录数据库的帐号和密码对的话应该跳到welcome界面可为什么跳到了logincl的界面
以下是登录界面截图这下边是用数据库里的帐号密码登录后转到的页面看看地址栏的变化,为什么不能实现预想的,希望大家看看怎么回事
这下边是数据库截图
以下是login的代码
package com.Servlet;
import javax.servlet.http.*;
import java.io.*;
public class login extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res)
{
//登陆界面。
try
{
res.setContentType("text/html;charset=gbk");
PrintWriter PW=res.getWriter();
PW.println("<html>");
PW.println("<body>");
String info=req.getParameter("info");
if(info!=null)
{
PW.println("<h1>你的密码或用户名出错<h1>");
}
PW.println("<h1>用户登录界面</h1>");
PW.println("<form action=logincl method=post>");
PW.println("用户名:<input type=text name=username><br>");
PW.println("密码:<input type=password name=password>");
PW.println("<input type=submit value=login><br>");
PW.println("</form>");
PW.println("</body>");
PW.println("</html>");
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res)
{
this.doGet(req,res);
}
}
这是login的代码;
package com.Servlet;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
public class logincl extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res)
{
Connection ct=null;
Statement sm=null;
ResultSet rs=null;
try
{
String u=req.getParameter("username");
String p=req.getParameter("password");
//加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//获取数据库连接
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=people";
String user="sa";
String password="wozuiaideren";
ct=DriverManager.getConnection(url,user,password);
//创建Statement
sm=ct.createStatement();
rs=sm.executeQuery("select top 1 password from user where username='"+u+"'");
if(rs.next())
{
//说明用户存在
String dbpassword=rs.getString(1);
if(dbpassword.equals(p))
{
res.sendRedirect("welcome");
}
}
else
{
//说明用户名不存在
res.sendRedirect("login");
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try
{
if(rs!=null)
{rs.close();}
if(sm!=null)
{sm.close();}
if(ct!=null)
{ct.close();}
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public void doPost(HttpServletRequest req,HttpServletResponse res)
{
this.doGet(req,res);
}
}
如果在登录界面登录数据库的帐号和密码对的话应该跳到welcome界面可为什么跳到了logincl的界面
以下是登录界面截图这下边是用数据库里的帐号密码登录后转到的页面看看地址栏的变化,为什么不能实现预想的,希望大家看看怎么回事
这下边是数据库截图
解决方案 »
- Session is closed!但是数据却成功存进去了
- 求高手提供下解决方案
- 系统架构、数据交换和工作流方向选择更有前景?
- LifecycleException: Coyote connector has not been started
- 急求远程控制创建数据库的方法
- ssh调用问题
- 谁推荐下,ssh 的经典参考书 或视频
- 用Hibernate时为什么不能加载blob类型的数据??
- 我用的是jbuilder x+weblogic8.1,配置好了后运行一个struts的jsp文件,报如下错误,我该怎么办?
- 为了感谢hpq852(爱上一个不该爱的人) ,lynx1111(任我行)以及。。。请进来
- Struts2 入门的404 问题 研究一个晚上了T T
- hibernate的 insert异常
res.sendRedirect("welcome");
这个welcome你是用action接受然后再次跳转么?
如果那样的话就没必要用srevlet了。
如果不是的话就应该是
res.sendRedirect("welcome.jsp");这样吧?
看你数据库的表名是users啊?
if(rs.next())//这句判断是false,就进入下面的else了。else
{
//说明用户名不存在
res.sendRedirect("login");
}
{
//说明用户存在
String dbpassword=rs.getString(1);
if(dbpassword.equals(p))
{
res.sendRedirect("welcome");
}
}
else
{
//说明用户名不存在
res.sendRedirect("login");
}
改为: while(rs.next())
{
//说明用户存在
String dbpassword=rs.getString(1).trim();//去掉空格。
if(dbpassword.equals(p))
{
res.sendRedirect("welcome");
}
}
res.sendRedirect("login");