2012-11-29 9 views
22

Ich erhalte Benutzername und Passwort mithilfe eines Formulars und Vergleich mit den Werten der Datenbanktabelle.Wenn sie übereinstimmen, sollte es Benutzernamen und Passwort drucken. Es ist fertig ..Umleiten von Servlet zu JSP-Seite

Aber ich muss sie auf eine andere Seite umleiten, wenn es gültig ist (sagen welcome.jsp) im Web Content-Ordner. Wie kann ich es tun. Ich bin neu in servlet und jsp hilf mir.

SaveServlet.java

package myPack; 

    import java.io.IOException; 
    import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.PreparedStatement; 
    import java.sql.ResultSet; 
    import java.sql.Statement; 
    import javax.servlet.ServletException; 
    import javax.servlet.http.HttpServlet; 
    import javax.servlet.http.HttpServletRequest; 
    import javax.servlet.http.HttpServletResponse; 

    /** 
    * Servlet implementation class SaveServlet 
    */ 
    public class SaveServlet extends HttpServlet { 
     private static final long serialVersionUID = 1L; 

     /** 
     * Default constructor. 
     */ 
     public SaveServlet() { 
      // TODO Auto-generated constructor stub 
     } 

     /** 
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
     */ 
     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
      // TODO Auto-generated method stub 
      String u = request.getParameter("username"); 
      String p=request.getParameter("password"); 
      System.out.println("USER-->"+u); 
      ResultSet rs; 
      String q="select * from userinfo where username='"+u+"' and password='"+p+"'"; 
      Connection con=null; 



      String c="jdbc:mysql://localhost:3306/test"; 

      try{ 

       Class.forName("com.mysql.jdbc.Driver").newInstance(); 
       con = DriverManager.getConnection(c, "root", "MyNewPass"); 
       System.out.println("connection done"); 


       PreparedStatement ps=con.prepareStatement(q); 
       System.out.println(q); 
       rs=ps.executeQuery(); 
       System.out.println("done2"); 
       while (rs.next()) { 
        System.out.println(rs.getString(1)); 
        System.out.println(rs.getString(2)); 

       } 

      } 
       catch (Exception e) { 
        // TODO: handle exception 
        System.out.println("Failed"); 
       } 

     } 

     /** 
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
     */ 
     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
      // TODO Auto-generated method stub 
      doGet(request, response); 
     } 

    } 

Antwort

25

Blick auf die Methode

HttpServletResponse.sendRedirect(String Location) 

heißt es verwenden, wie:

HttpServletResponse.sendRedirect("/your/new/location.jsp") 

Alternativ sehen Sie die Methode

HttpServletResponse.setHeader(String name, String value) 

Die Umleitung wird durch Hinzufügen des Location-Header gesetzt:

HttpServletResponse.setHeader("Location", "/your/new/location.jsp"); 
+18

Bitte veröffentlichen Sie keine Beispiele mit ungültiger Syntax. Die Methode sendRedirect() ist keine statische Methode. Gleiches gilt für setHeader(). – DSoa

+1

@DSoa ändern Sie einfach HttpServletResponse mit der Antwort Varible in Ihrer DoPost-Methode definiert. Keine große Sache – HFR1994

3

Bitte benutzen Sie den Code unten und lassen Sie mich wissen

try{ 

      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
      con = DriverManager.getConnection(c, "root", "MyNewPass"); 
      System.out.println("connection done"); 


      PreparedStatement ps=con.prepareStatement(q); 
      System.out.println(q); 
      rs=ps.executeQuery(); 
      System.out.println("done2"); 
      while (rs.next()) { 
       System.out.println(rs.getString(1)); 
       System.out.println(rs.getString(2)); 

      } 

     response.sendRedirect("myfolder/welcome.jsp"); // wherever you wanna redirect this page. 

     } 
      catch (Exception e) { 
       // TODO: handle exception 
       System.out.println("Failed"); 
      } 

myfolder/welcome.jsp der relative Pfad Ihrer jsp Seite. Ändern Sie es entsprechend Ihrem jsp Seitenpfad.

+0

thnx ;-) es funktioniert gut !!!! – SaM

1
String u = request.getParameter("username"); 
    String p = request.getParameter("password"); 

    try { 
     st = con.createStatement(); 
     String sql; 
     sql = "SELECT * FROM TableName where USERNAME = '" + u + "' and PASSWORD = '" 
       + p + "'"; 
     ResultSet rs = st.executeQuery(sql); 
     if (rs.next()) { 
      RequestDispatcher requestDispatcher = request 
        .getRequestDispatcher("/home.jsp"); 
      requestDispatcher.forward(request, response); 
     } else { 

      RequestDispatcher requestDispatcher = request 
        .getRequestDispatcher("/invalidLogin.jsp"); 
      requestDispatcher.forward(request, response); 

     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    finally{ 
     try { 
      rs.close(); 
      ps.close(); 
      con.close(); 
      st.close(); 
     } catch (SQLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
+5

Sie können Ihre Antwort verbessern, indem Sie Ihrem Code Kommentare hinzufügen oder erklären, was Sie gerade tun, anstatt nur den Code zu posten. – mathielo

+2

bitte nicht sql injection anfällig Code verbreiten, auch als Beispiele –

+1

@TrevorHarrison du hast Recht. Beispiele sind der Hauptgrund, warum allgemeine Sicherheitslücken immer noch gefunden werden. – asgs