拒绝直接访问jsp页面

我正在为我的应用程序使用struts 1.3,并且所有jsp页面都通过控制器(动作类)转发。 但是,如果我直接访问jsp页面,我就可以访问它。 我该如何防止这种情况?

将所有jsp-s放在WEB-INF文件夹中(例如在WEB-INF / jsp文件夹中)并且不要忘记更改关于jsp-s位置的映射。

filter用于绕过或中断请求,因此如果请求中包含.do,请使用filter来限制请求。 以下是filter的好教程

filter

我认为最好的选择是将您的网页放在WEB-INF文件夹中 – 这样他们就无法直接访问,但是在您的servlet中,您可以拥有以下内容:

public class ControllerServlet extends HttpServlet { /** * Handles the HTTP GET 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(); } } 

摘自: http : //netbeans.org/kb/docs/javaee/ecommerce/page-views-controller.html

您可以使用filter并使用url限制请求,该URL请求.jsp页面并仅允许请求.do的请求