2011-09-02 37 views
15

Tôi đang sử dụng struts 1.3 cho ứng dụng của mình và tất cả các trang jsp được chuyển tiếp qua bộ điều khiển (lớp hành động). Nhưng nếu tôi truy cập trực tiếp vào trang jsp, tôi có thể truy cập nó. Làm thế nào để ngăn chặn điều này?Từ chối truy cập trực tiếp vào các trang jsp

Trả lời

16

đặt tất cả jsp-s bên trong thư mục WEB-INF (ví dụ như trong thư mục WEB-INF thư mục/jsp) và không quên để thay đổi bản đồ của bạn liên quan đến vị trí của jsp- của bạn S.

+1

+1 - Ẩn WEB-INF là phương pháp được sử dụng phổ biến nhất. Nếu bạn đọc tài liệu và ví dụ, họ thường sử dụng thiết lập này. – pap

1

Bạn có thể sử dụng bộ lọc và hạn chế các yêu cầu với url mà yêu cầu trang .jsp và chỉ cho phép các yêu cầu mà yêu cầu .do

4

Các bộ lọc được sử dụng để bỏ qua hoặc làm gián đoạn các yêu cầu, vì vậy sử dụng các bộ lọc để hạn chế yêu cầu, nếu nó không chứa .do in url. Dưới đây là hướng dẫn tốt cho các bộ lọc

Filters

2

Tôi nghĩ là lựa chọn tốt nhất là nên đưa trang web của bạn trong thư mục WEB-INF - cách mà họ sẽ không được trực tiếp tiếp cận nhưng sau đó trong servlets của bạn, bạn có thể có một cái gì đó như:

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

Được lấy từ: http://netbeans.org/kb/docs/javaee/ecommerce/page-views-controller.html

Các vấn đề liên quan