2011-09-02 12 views
15

Używam rozpórki 1.3 dla mojej aplikacji i wszystkie strony jsp są przekazywane za pośrednictwem kontrolera (klasy działania). Ale jeśli mam bezpośredni dostęp do strony jsp, jestem w stanie uzyskać do niej dostęp. Jak mogę temu zapobiec?Odmowa bezpośredniego dostępu do stron JSP

Odpowiedz

16

umieścić wszystkie swoje JSP-y wewnątrz folderu WEB-INF (na przykład w folderze WEB-INF/JSP) i nie zapomnij, aby zmienić mapowanie dotyczące lokalizacji jsp- s.

+1

+1 - ukrywanie WEB-INF jest najczęściej stosowaną metodą. Jeśli czytasz dokumenty i przykłady, często używają tej konfiguracji. – pap

1

Można użyć filtrów i ograniczyć żądania z adresem URL, który prosić stron .jsp i tylko pozwalają wnioski, które proszą o uruchamiać

4

Filtry służą do obejścia lub przerwania żądania, więc korzystać z filtrów, aby ograniczyć możliwość Żądanie, jeśli nie zawiera .do w adresie URL. Poniżej znajduje się dobry poradnik dla filtrów

Filters

2

Myślę, że najlepszym rozwiązaniem byłoby, aby umieścić swoje strony internetowe w katalogu WEB-INF - w ten sposób nie będą one dostępne bezpośrednio, ale potem w swoich serwletów można mieć coś takiego:

public class ControllerServlet extends HttpServlet { 

    /** 
    * Handles the HTTP <code>GET</code> method. 
    * @param request servlet request 
    * @param response servlet response 
    * @throws ServletException if a servlet-specific error occurs 
    * @throws IOException if an I/O error occurs 
    */ 
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { 

     String userPath = request.getServletPath(); 

     // if category page is requested 
     if (userPath.equals("/category")) { 
      // TODO: Implement category request 

     // if cart page is requested 
     } else if (userPath.equals("/viewCart")) { 
      // TODO: Implement cart page request 

      userPath = "/cart"; 

     // if checkout page is requested 
     } else if (userPath.equals("/checkout")) { 
      // TODO: Implement checkout page request 

     // if user switches language 
     } else if (userPath.equals("/chooseLanguage")) { 
      // TODO: Implement language request 

     } 

     // use RequestDispatcher to forward request internally 
     String url = "/WEB-INF/view" + userPath + ".jsp"; 

     try { 
      request.getRequestDispatcher(url).forward(request, response); 
     } catch (Exception ex) { 
      ex.printStackTrace(); 
     } 
    } 

Zaczerpnięte z: http://netbeans.org/kb/docs/javaee/ecommerce/page-views-controller.html

Powiązane problemy