查询字符串上的Java JSP过滤

时间:2016-03-28 19:58:32

标签: java jsp filter

我有一个我正在为内部工作工具构建的网页。它是一个示例网站,允许用户登录,然后从数据库执行查询。我刚刚实现了一个过滤器,用于将未登录的用户重定向到登录页面。 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(假设用户输入'cat'作为输入'BIC'字段。)

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

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

1 个答案:

答案 0 :(得分:0)

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