阻止用户直接访问jsp文件

时间:2012-02-25 18:13:29

标签: jsp servlets

假设我有一个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代码。 所以我的问题是,有没有更优雅的方法来解决这个问题?

1 个答案:

答案 0 :(得分:4)

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

虽然裸小的servlet可能会变得过于冗长,所以像Spring MVC这样的框架会非常有用。

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

相关问题