【问题标题】:Java JSP Filtering on Query StringJava JSP 过滤查询字符串
【发布时间】:2016-07-16 04:05:18
【问题描述】:

我目前正在为内部工作工具构建一个网页。这是一个示例网站,允许用户登录然后从数据库执行查询。我刚刚实现了一个过滤器,将未登录的用户重定向到登录页面。 doFilter 函数是这样的

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
    throws IOException, ServletException {

    HttpServletRequest request = (HttpServletRequest) req;
    HttpServletResponse response = (HttpServletResponse) res;
    HttpSession session = request.getSession(false);

    if (session == null || session.getAttribute("user") == null) {
        // No logged-in user found, so redirect to login page.
        response.sendRedirect(request.getContextPath() + "/Login.jsp"); 
    } else {
        // Logged-in user found, so just continue request.
        chain.doFilter(req, res); 
    }
}

在我的 web.xml 我有

<filter>
<filter-name>loginFilter</filter-name>
<filter-class>Servlets.LoginFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>loginFilter</filter-name>
<url-pattern>/Home.jsp</url-pattern>
</filter-mapping>

如果我直接访问 Home.jsp,它将重定向到登录页面。但是,一旦登录,用户就会被移动到 Home.jsp 页面,该页面允许用户对数据库执行查询。主页 URL 看起来像

http://localhost:8084/LiveTrades/Home.jsp

但是一旦他们提供输入,它将移动到一个新页面,显示带有 url 字符串的结果,例如

http://localhost:8084/LiveTrades/Request?BIC=cat(假设用户在输入“BIC”字段中输入了“猫”)。

如果用户在未登录时直接输入上面的 url,它会在不应该登录的时候正常处理。我知道这是因为我的过滤器只能从 Home.jsp 页面调用。如何解决此问题以防止带有 Request* 的页面被过滤?

如果有另一个 jsp 页面,比如 Results.jsp,并让处理来自数据库的信息的 Servlet 将数据传递给 Results.jsp,会更容易吗?然后我可以简单地将 Results.jsp 添加到 web.xml。

【问题讨论】:

    标签: java jsp filter


    【解决方案1】:

    我设法通过重新构建我的网页来解决这个问题。结果现在通过 JSP 页面显示,数据从 Servlet 传递到 JSP 页面。现在在我的过滤器中,我只需添加 Result JSP 页面即可解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 2014-09-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多