2012-11-29 23 views
22

Ricevo nome utente e password utilizzando un modulo e confrontandolo con i valori della tabella del database. Se sono associati, è necessario stampare nome utente e password. È fatto ..come reindirizzare da servlet a jsp page

Ma, ho bisogno di reindirli a un'altra pagina, se è valido (ad esempio welcome.jsp) nella cartella del contenuto web. Come posso farlo. Sono nuovo a servlet e jsp aiutami.

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); 
     } 

    } 

risposta

25

Guarda il metodo

HttpServletResponse.sendRedirect(String Location) 

cioè usarlo come:

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

In alternativa, guarda il metodo

HttpServletResponse.setHeader(String name, String value) 

Il reindirizzamento è impostato aggiungendo l'header posizione:

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

Si prega di non inviare esempi con sintassi non valida. Il metodo sendRedirect() non è un metodo statico. Lo stesso per setHeader(). – DSoa

+1

@DSoa modifica semplicemente HttpServletResponse con la variabile di risposta definita nel tuo metodo doPost. No big deal – HFR1994

3

Utilizza il codice qui sotto e fatemi sapere

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 è il percorso relativo della pagina jsp. Quindi, cambialo secondo il tuo percorso di pagina jsp.

+0

thnx ;-) funziona bene !!!! – 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

Potresti migliorare la tua risposta aggiungendo alcuni commenti al tuo codice o spiegando cosa stai facendo invece di pubblicare semplicemente il codice. – mathielo

+2

si prega di non diffondere il codice incline sql injection, anche come esempi –

+1

@TrevorHarrison hai ragione. gli esempi sono il motivo n. 1 per cui sono ancora presenti vulnerabilità di sicurezza comuni. – asgs

Problemi correlati