Java 拒绝直接访问jsp页面

Java 拒绝直接访问jsp页面,java,jsp,struts,Java,Jsp,Struts,我在应用程序中使用struts 1.3,所有jsp页面都通过controller(action类)转发。但是如果我直接访问jsp页面,我就能够访问它。如何防止这种情况发生?您可以使用筛选器并使用请求.jsp页面的url限制请求,并且只允许请求。do筛选器用于绕过或中断请求,因此,如果请求不包含.do in url,请使用筛选器限制请求。下面是过滤器的好教程 将所有jsp-s放在WEB-INF文件夹中(例如WEB-INF/jsp文件夹),不要忘记更改jsp-s位置的映射。我认为最好的选择是将您的网

我在应用程序中使用struts 1.3,所有jsp页面都通过controller(action类)转发。但是如果我直接访问jsp页面,我就能够访问它。如何防止这种情况发生?

您可以使用筛选器并使用请求.jsp页面的url限制请求,并且只允许请求。do

筛选器用于绕过或中断请求,因此,如果请求不包含.do in url,请使用筛选器限制请求。下面是过滤器的好教程


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

我认为最好的选择是将您的网页放在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();
        }
    }

摘自:

+1-WEB-INF隐藏是最常用的方法。如果你阅读文档和示例,他们经常使用这种设置。不幸的是,Jetty似乎不允许这样做。也许我这边的环境不好?