在url模式上使用Servlet过滤器时,我无法在jsp页面上获取图像。请帮助我以便在我的网页上获取图像。
过滤器代码:
package com.peckuk.filter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
public class AdminFilter implements javax.servlet.Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
String test = filterConfig.getInitParameter("test-param");
System.out.println("Init Method" + test);
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
PrintWriter out = response.getWriter();
System.out.println("doFilter Method");
HttpServletRequest req = (HttpServletRequest) request;
HttpSession session = req.getSession();
String role = session.getAttribute("role").toString();
if (role.equals("admin")) {
chain.doFilter(request, response);
} else {
out.println("Invalid user role");
}
}
@Override
public void destroy() {
System.out.println("destroy Method");
}
}
答案 0 :(得分:0)
只需更改过滤器映射中的网址格式,使其与图片网址不匹配。
E.g。仅.jsp
个文件:
<url-pattern>*.jsp</url-pattern>
或/pages
文件夹中的所有内容:
<url-pattern>/pages/*</url-pattern>
或任何涵盖您所有受限资源的内容。
另一种方法是将所有图像(以及CSS和JS文件!)放在特定文件夹中,如/resources
,并让过滤器检查当前请求URI是否未指向该文件夹,如果是,然后继续请求,好像什么也没发生。
if (request.getRequestURI().startsWith(request.getContextPath() + "/resources")) {
chain.doFilter(request, response);
return;
}