2012-11-29 24 views
22

Otrzymuję nazwę użytkownika i hasło za pomocą formularza i porównanie go z wartościami tabeli bazy danych. Jeśli są one dopasowane, powinien wydrukować nazwę użytkownika i hasło. Zrobione ..jak przekierować z serwletu na stronę JSP

Ale muszę przekierować je na inną stronę, jeśli jest ona ważna (na przykład welcome.jsp) w folderze treści WWW. Jak mogę to zrobić. Jestem nowy w servlet i jsp pomóż mi.

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

    } 

Odpowiedz

25

wygląd w sposób

HttpServletResponse.sendRedirect(String Location) 

to wykorzystać jako:

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

Alternatywnie, patrz na metodzie

HttpServletResponse.setHeader(String name, String value) 

Przekierowanie jest ustawiony poprzez dodanie nagłówka Lokalizacja:

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

Nie publikuj przykładów z nieprawidłową składnią. Metoda sendRedirect() nie jest metodą statyczną. To samo dotyczy setHeader(). – DSoa

+1

@DSoa po prostu zmień HttpServletResponse ze zmienną odpowiedzi zdefiniowaną w Twojej metodzie doPost. Żadna wielka sprawa – HFR1994

3

proszę użyć poniższy kod i daj mi znać

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 jest względna ścieżka do strony jsp. Zmień go zgodnie ze ścieżką do strony jsp.

+0

thnx ;-) to działa dobrze !!!! – 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

Możesz poprawić swoją odpowiedź, dodając kilka komentarzy do kodu lub wyjaśniając, co robisz, zamiast po prostu napisać kod. – mathielo

+2

proszę nie rozpowszechniać podatnego kodu SQL wtrysku, nawet jako przykłady –

+1

@ TrevorHarrison masz rację. przykłady są najważniejszym powodem, dla którego nadal występują typowe luki w zabezpieczeniach. – asgs

Powiązane problemy