繁体   English   中英

拒绝直接访问jsp页面

[英]Denying direct access to jsp pages

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

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

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

过滤器

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM