为什么Servlet没有输出这个HTML?

时间:2015-07-08 18:42:57

标签: java servlets

我正在学习将servlet连接到数据库。我的数据库中有两列(用户名,密码)。我想创建一个访问数据库的程序,将User / Pass(通过用户表单html发送)与db列中的值进行比较。当我尝试登录时,屏幕上没有任何内容。

文件:

LoginServlet.java

import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
import java.sql.*;

public class LoginServlet extends HttpServlet{

public void init(){}

Connection con;
Statement st;
ResultSet rs;

public void service(HttpServletRequest req, HttpServletResponse res){
    try{

    res.setContentType("text/html");
    PrintWriter out=res.getWriter();
    out.println("<html><body>");
    out.println("<p>Servlet is loading</p>");



    String TheUser=req.getParameter("username");
    String ThePass=req.getParameter("password");

    try{

        Class.forName("oracle.jdbc.driver.OracleDriver");
              con=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","pass");

        st=con.createStatement();
        rs=st.executeQuery("select Username,Password from AllUsers");
        String compareUser=rs.getString(1);
        String comparePass=rs.getString(2);



            if(TheUser.equals(compareUser)||ThePass.equals(comparePass)){

                out.println("<p>You are logged in as " + compareUser+" </p>");

            }
            else
                out.println("Wrong Combination");

            }

        }catch(Exception e){}

    }catch(ClassNotFoundException|IOException|ServletException f){
      f.printStackTrace();          
 }

out.println("</html></body>");
out.close();

}

public void destroy(){}
}

此文件编译并部署。

的web.xml:

<web-app>

<servlet>
    <servlet-name>SignUpServlet</servlet-name>
    <servlet-class>SignUpServlet</servlet-class>

</servlet>

<servlet-mapping>
    <servlet-name>SignUpServlet</servlet-name>
    <url-pattern>/SignUp</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>LoginServlet</servlet-class>
</servlet>  

<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/login</url-pattern>
</servlet-mapping>

</web-app>

log.html:

<html>
<body>
    <form name='loginForm' method='post' action='login'>

        Enter Username:
        <input type='text' name='username'>
        </br>

        Enter Password:
        <input type='password' name='password'>
        </br>
        <input type="submit" value="Submit">

    </form>
</body>
</html>

P.S:正在加载Servlet。 <p>Servlet is loading </p>标记显示在浏览器上。

1 个答案:

答案 0 :(得分:0)

好的,所以我做到了。经过几个小时的努力尝试。我发现db游标永远不会出现在表的第一个记录上,这就是为什么它没有显示出来的原因。 我把代码包装在while语句中:

rs=st.executeQuery("select Username,Password from AllUsers");

        while(rs.next()){
            String compareUser=rs.getString(1);
            String comparePass=rs.getString(2);

            if(TheUser.equals(compareUser)||ThePass.equals(comparePass)){

                out.println("<p>You are logged in as " +compareUser+"</p>");
                rs.close();
                st.close();
                con.close();


            }
            else{

                out.println("<p>Wrong Combination</p>");
                out.println("</br><a href='log.html'>Login</a></p>");

                rs.close();
                st.close();
                con.close();
            }
        }    

        }catch(Exception e){
            e.printStackTrace();
        }

我希望如果有其他人遇到这个问题,这可能有所帮助。