用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的界面
以下是登录界面截图这下边是用数据库里的帐号密码登录后转到的页面看看地址栏的变化,为什么不能实现预想的,希望大家看看怎么回事
这下边是数据库截图
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");