用Servlet写的简单的登录界面,并且连接了数据库验证用户密码的,可是为什么输入用户名和密码之后点击提交却跳不到欢迎界面?


用Servlet写的简单的登录界面
并且连接了数据库验证用户密码的
可是为什么输入用户名和密码之后点击提交却跳不到欢迎界面?

以下是代码:
Login.java

   
  //欢迎界面Login.java
  

//打包
package com.kelvin.login;
//引包
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>");
pw.println("<h1>用户登录界面</h1>");
pw.println("<form action=loginCheck name=form>");
pw.println("用户名:<input type=text name=username><br>");
pw.println("密码:<input type=password name=password><br>");
pw.println("<input type=submit value=确认>");
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);
}
}

LoginCheck.java

   
  //验证servlet.
  
//打包
package com.kelvin.login;
//引包
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;

public class LoginCheck extends HttpServlet {

public void doGet(HttpServletRequest req,HttpServletResponse res)
{
//定义所需要的对象(进入数据库验证用户信息需要用到)
Connection ct=null;
PreparedStatement ps=null;
ResultSet rs=null;
try{

//业务逻辑 去数据库验证用户名和密码
//接收前面传过来的用户名和密码
String userName=req.getParameter("username");
String userPassword=req.getParameter("password");

//连接数据库进行验证
//1.加载驱动
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//2.建立连接
ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=LOGINSYSTEM","sa","kelvin");
//3.创建 PreparedStatement
ps=ct.prepareStatement("SELECT TOP 1*FROM USERINFO WHERE USERNAME='"+userName+"' AND USERPASSWORD='"+userPassword+"'");
rs=ps.executeQuery();

//验证
if(rs.next())
{
res.sendRedirect("welcome?username="+userName+"&password="+userPassword);
return;
}
else
{
res.sendRedirect("login");
}
}
catch(Exception e)
{
e.printStackTrace();
}
//关闭资源
finally
{
try{
if(rs!=null)
{
rs.close();
}
if(ps!=null)
{
ps.close();
}
if(ct!=null)
{
ct.close();
}
}
catch(Exception e)
{
e.printStackTrace();
}
}

}

public void doPost(HttpServletRequest req,HttpServletResponse res)
{
this.doGet(req,res);
}
}

Welcome.java

   
  //欢迎界面
  
//打包
package com.kelvin.login;
//引包
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;

public class Welcome extends HttpServlet {

public void doGet(HttpServletRequest req,HttpServletResponse res)
{
try{
PrintWriter pw=res.getWriter();
pw.println("Welcome to my website!");
return;
}
catch(Exception e)
{
e.printStackTrace();
}
}

public void doPost(HttpServletRequest req,HttpServletResponse res)
{
this.doGet(req,res);
}
}

点击确认提交之后 域名变成了这个:http://localhost:8080/webapp20130114/loginCheck?username=kelvin&password=kelvin

难道是没跳转成功么??求解。。。

java servlet

chendm 11 years ago

简单看了一下你的问题,你说输出结果是:http://localhost:8080/webapp20130114/loginCheck?username=kelvin&password=kelvin
有2个可能:1.loginCheck在web.xml中没有正确配置,你可能看看有没有报404 NOT FOUND错误;2.在loginCheck这个servlet中,数据库连接与sql语句的执行部分出了异常(34行以上),这个可以通过代码调试来检查;

XxLoli answered 11 years ago

Your Answer