我有一个我正在为内部工作工具构建的网页。它是一个示例网站,允许用户登录,然后从数据库执行查询。我刚刚实现了一个过滤器,用于将未登录的用户重定向到登录页面。 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。
答案 0 :(得分:0)
我设法通过重新构建我的网页来解决这个问题。结果现在通过JSP页面显示,数据从Servlet传递到JSP页面。现在在我的过滤器中,我只需添加Result JSP页面并解决问题。