【问题标题】:prevent from a user to access directly to a jsp file防止用户直接访问jsp文件
【发布时间】:2012-02-25 18:13:28
【问题描述】:

假设我有一个 servlet,它将请求转发到包含产品列表的 jsp 文件。 例如,Login.java 是一个 servlet,它将请求(成功登录后)转发到 Products.jsp。 现在,在Products.jsp 中,我必须首先检查用户是否确实已登录:

<% if (request.getSession().getAttribute("username") == null) {
    response.sendRedirect("/store/login");
    return;
} %>

这是为了防止用户只写localhost:8080/store/Products.jsp就看不到产品。 我在这里读到一些帖子,最好避免在 jsp 文件中编写 java 代码。 所以我的问题是,有没有更优雅的方法来解决这个问题?

【问题讨论】:

标签: jsp servlets


【解决方案1】:

是的 - 将所有 JSP 文件放在 WEB-INF/ 中(例如 - WEB-INF/jsp),并且只从 servlet 转发给它们。例如,如果一个 servlet 映射到 /foo,那么它的 doGet() 方法可以执行您编写的逻辑,并转发到 product.jsp

不过,使用裸 servlet 可能会变得过于冗长,因此像 Spring MVC 这样的框架会很有帮助。

通常,身份验证检查是由 Filter 执行的 - 您放置一个过滤器来检查每个请求,如果用户未通过身份验证,则过滤器重定向。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2016-03-04
    相关资源
    最近更新 更多