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

解决方案 »

  1.   

    你直接
     res.sendRedirect("welcome");
    这个welcome你是用action接受然后再次跳转么?
    如果那样的话就没必要用srevlet了。
    如果不是的话就应该是
    res.sendRedirect("welcome.jsp");这样吧?
      

  2.   

    select top 1 password from users where username=
    看你数据库的表名是users啊?
      if(rs.next())//这句判断是false,就进入下面的else了。else
               {
                //说明用户名不存在
                res.sendRedirect("login");
               }
      

  3.   

    把if改成while试试,if只执行一次:            if(rs.next())
                {
                    //说明用户存在
                    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");
      

  4.   

    不行我就纳闷了为什么就跳转到logincl那个页面了,究竟是哪错了
      

  5.   

    应该是你的web.xml文件配置错了
      

  6.   

    以下是我的web.xml内的配置关于这三个程序的,看着的确没错呀
      

  7.   

    朋友,你好,感觉你整个项目都是用servlet写的,如果全部是用servlet写的话.你的表单是跳转到logincl这个servlet吧,当你点击登录的时候会跳到logincl处理进行处理,这是你为什么跳到了logincl的页面。而你的用户名和密码是对的,当然,如果我没猜错的话,你的后台应该会报错的。serlvet没有这样的跳转。
      

  8.   

    是不是跟数据库的连接有关系呀,为什么我在未使用数据库而是通过自己在logincl内预设帐号和密码的时候就能跳转过去了