【发布时间】:2017-11-20 17:01:24
【问题描述】:
我对此感到困惑和困惑。我在 WEB-INF/pages/ 中有我所有的 .JSP 文件,并且想要访问它们。
我已经像这样在 /forward/* 上完成了 requestDispatcher
@WebServlet("/forward/*")
public class ForwardController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getRequestDispatcher("/WEB-INF" + req.getPathInfo()).forward(req, resp);
}
}
这很好用,我可以使用 /forward/pages/index.jsp 访问我的 JSP 文件,不过,我读过的内容应该是用户无法访问的,但现在它显然是。这是否以正确的方式完成?
另外,既然我们已经重定向到那个链接,http://localhost/forward/pages/index.jsp 想注销,我使用一个按钮来/注销,但现在之前的链接是这样的,http://localhost/forward/pages/logout
我该如何克服这两件事?
最好的问候
【问题讨论】:
-
WEB-INF 中的文件不可公开访问,但可以在内部访问,这就是
req.getRequestDispatcher("/WEB-INF" + req.getPathInfo()).forward(req, resp);所做的。简而言之,它不会发送用户请求以访问/WEB-INF/...下的新资源,但它在内部决定 current 请求的响应应由内部(不可公开访问的)JSP 脚本处理。据我所知,将代表视图层的 JSP 文件放在 WEB-INF 中以确保它们只能通过控制器访问是一种很好的做法。 -
是的,你是对的,但是现在已经应用了,例如,当我使用表单时,它会自动使用前向链接,如 forward/pages/index.jsp,和当我使用