Search code examples
javahtmlderbyjavadb

Why "response.sendRedirect" doesn't work?


This is my login part which I need to compare user input with data in the database.

So If a lecturer tries to enter the system, he or she will get into lecturer interface(lecturer.html) and same goes to the student.

But right now, when I try to enter the system using either lecturer or student ID, the system will direct me to the log in interface.

I hope someone can help me to solve this :)

This is the query for Java DB (LogIn.java)

public class LogIn extends HttpServlet {
static final String dbURI = "jdbc:derby://localhost:1527/webdb";
String str = SELECT DEMO.REGISTRATION.*, \n" +
              DEMO.STUDENT.STUD_PASSWORD,DEMO.LECTURER.LECT_PASSWORD 
              FROM DEMO.REGISTRATION 
              LEFT OUTER JOIN DEMO.STUDENT  
              ON REGISTRATION.STUDENT_ID = STUDENT.STUDENT_ID
              LEFT OUTER  JOIN DEMO.LECTURER 
              ON REGISTRATION.LECTURER_ID = LECTURER.LECTURER_ID;";

Connection theConnection = null;

And this is the rest of codes (LogIn.java)

 protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String matricI = request.getParameter("matricin");
String passwordI = request.getParameter("passwordin");

    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();

    try {
        out.println("<html>\n" +
     "  <head>\n" +
     "    <title>SPEDT | UKM</title>\n" +
     "    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">\n" +
     "    <link rel=\"stylesheet\" href=\"//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css\">\n" +
     "    <link rel=\"stylesheet\" href=\"//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap-theme.min.css\">\n" +
     "    <script src=\"//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js\"></script>\n" +
     "  </head>\n" +
     "  \n" +
     "  <body>\n" +
     "    \n" +
     "    <div class=\"navbar navbar-inverse \" role=\"navigation\">\n" +
     "      <div class=\"container\">\n" +
     "        <div class=\"navbar-header\">\n" +
     "          <button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\">\n" +
     "            <span class=\"sr-only\">Toggle navigation</span>\n" +
     "            <span class=\"icon-bar\"></span>\n" +
     "            <span class=\"icon-bar\"></span>\n" +
     "            <span class=\"icon-bar\"></span>\n" +
     "          </button>\n" +
     "          <a class=\"navbar-brand\" href=\"#\">Sistem Penilaian Esei Dalam Talian</a>\n" +
     "        </div>\n" +
     "        <div class=\"navbar-collapse collapse\">\n" +
     "         <form class=\"navbar-form navbar-right\" role=\"form\" method=\"get\" action=\"http://localhost:8080/Spedt/LogIn\">\n" +
     "            <a class=\"btn btn-danger\" role=\"button\" href=\"http://localhost:8080/Spedt/start.html\">Keluar</a>\n" +
     "          </form>\n" +
     "        </div><!--/.navbar-collapse -->\n" +
     "      </div>\n" +
     "    </div>\n" +
     "</html>");
        // Load database driver
        try {
            Class.forName("org.apache.derby.jdbc.ClientDriver");
    } catch (ClassNotFoundException cnfe){
                System.out.println(cnfe);
    }
        // Create a Connection to contacts db Data source
        try {
            theConnection = DriverManager.getConnection(dbURI,"demo","demo");
    } catch (SQLException sqle) {
                System.out.println(sqle);
    }
        // prepare statement for inserting data into table
        try {
            PreparedStatement theStatement=theConnection.prepareStatement(str);

            request.setAttribute("matricin",matricI);
            request.setAttribute("passwordin",passwordI);

            Statement st = theConnection.createStatement();
    ResultSet rs = st.executeQuery(str);
            String m = matricI;
            String p = passwordI;

            while (rs.next()) {
                  String matricS = rs.getString("STUDENT_ID");
                  String passwordS = rs.getString("STUD_PASSWORD");
                  String matricL = rs.getString("LECTURER_ID");
                  String passwordL = rs.getString("LECT_PASSWORD");

                  if(m.equals(matricS) && p.equals(passwordS)){
                      response.sendRedirect("http://localhost:8080/Spedt/StudentInput");
                  return;}
                  else if(m.equals(matricL) && p.equals(passwordL)){
                      response.sendRedirect("http://localhost:8080/Spedt/Lecturer.html");
                  return;}
                  else {
                     out.println("<p class=\"bg-danger container\">Sila masukkan No. Matrik dan Kata Laluan yang betul !</p>");
                  }
            }
        }

        catch (SQLException sqle) {
            System.out.println(sqle);
        }

            theConnection.close(); //Close database Connection
    }catch(Exception e) {
        out.println(e.getMessage());//Print trapped error.
} finally {
        out.close();
    }
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    processRequest(request, response);
} 

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
    processRequest(request, response);
}

public String getServletInfo() {
    return "Short description";
}// </editor-fold>

}

and this is the html

<form class="navbar-form navbar-right" role="form" method="get" action="http://localhost:8080/Spedt/LogIn">
        <div class="form-group">
          <input type="text" name="matricin" placeholder="No. Matrik" class="form-control">
        </div>
        <div class="form-group">
          <input type="password" name="passwordin" placeholder="Kata Laluan" class="form-control">
        </div>
        <button type="submit" class="btn btn-success">Masuk</button>
      </form>

This is my web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <servlet> <servlet-name>InputData</servlet-name> <servlet-class>mypkg.InputData</servlet-class> </servlet> <servlet> <servlet-name>GetData</servlet-name> <servlet-class>mypkg.GetData</servlet-class> </servlet> <servlet> <servlet-name>LogIn</servlet-name> <servlet-class>mypkg.LogIn</servlet-class> </servlet> <servlet> <servlet-name>Lecturer</servlet-name> <servlet-class>mypkg.Lecturer</servlet-class> </servlet> <servlet> <servlet-name>Student</servlet-name> <servlet-class>mypkg.Student</servlet-class> </servlet> <servlet> <servlet-name>LogOut</servlet-name> <servlet-class>mypkg.LogOut</servlet-class> </servlet> <servlet> <servlet-name>LecturerInput</servlet-name> <servlet-class>mypkg.LecturerInput</servlet-class> </servlet> <servlet> <servlet-name>GetDataLecturer</servlet-name> <servlet-class>mypkg.GetDataLecturer</servlet-class> </servlet> <servlet> <servlet-name>NewServlet</servlet-name> <servlet-class>mypkg.NewServlet</servlet-class> </servlet> <servlet> <servlet-name>InputLecturer</servlet-name> <servlet-class>mypkg.InputLecturer</servlet-class> </servlet> <servlet> <servlet-name>GetDataLect</servlet-name> <servlet-class>mypkg.GetDataLect</servlet-class> </servlet> <servlet> <servlet-name>StudentInput</servlet-name> <servlet-class>mypkg.StudentInput</servlet-class> </servlet> <servlet> <servlet-name>InputStudent</servlet-name> <servlet-class>mypkg.InputStudent</servlet-class> </servlet> <servlet> <servlet-name>GetDataStud</servlet-name> <servlet-class>mypkg.GetDataStud</servlet-class> </servlet> <servlet-mapping> <servlet-name>InputData</servlet-name> <url-pattern>/InputData</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>GetData</servlet-name> <url-pattern>/GetData</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>LogIn</servlet-name> <url-pattern>/LogIn</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Lecturer</servlet-name> <url-pattern>/Lecturer</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>Student</servlet-name> <url-pattern>/Student</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>LogOut</servlet-name> <url-pattern>/LogOut</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>LecturerInput</servlet-name> <url-pattern>/LecturerInput</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>GetDataLecturer</servlet-name> <url-pattern>/GetDataLecturer</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>NewServlet</servlet-name> <url-pattern>/NewServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>InputLecturer</servlet-name> <url-pattern>/InputLecturer</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>GetDataLect</servlet-name> <url-pattern>/GetDataLect</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>StudentInput</servlet-name> <url-pattern>/StudentInput</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>InputStudent</servlet-name> <url-pattern>/InputStudent</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>GetDataStud</servlet-name> <url-pattern>/GetDataStud</url-pattern> </servlet-mapping> <session-config> <session-timeout> 30 </session-timeout> </session-config> </web-app>

I hope someone can help me to solve this problem.thanks :)


Solution

  • ohhh..

    In this case control is not reaching to servlet so how would you expect to run redirect!!

    In action part of your html you have written action="http://localhost:8080/Spedt/LogIn" you should use action for your servlet which you have define in web.xml file

    see your xml file is

    <servlet>
            <servlet-name>LogIn</servlet-name>
            <servlet-class>mypkg.LogIn</servlet-class>
    </servlet>
    

    if your write action=LogIn then you will go to mypkg.LogIn servlet