网上找了一个JSP过滤器
如下package org.util;import java.io.IOException;import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.*;
import org.model.*;public class JspFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
} public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
HttpServletResponse httpServletResponse = (HttpServletResponse) servletResponse;
User user = (User) httpServletRequest.getSession(true).getAttribute("user");
System.out.println(",此处被拦截~~~~~~~~~"); if (!isExcludePages(httpServletRequest.getRequestURI())) {
if (user == null) {
httpServletResponse.sendRedirect(httpServletRequest
.getContextPath()
+ "/error.jsp");
return;
}
}
filterChain.doFilter(servletRequest, servletResponse);
} private boolean isExcludePages(String url) {
return url.indexOf("login.dhtml") != -1
|| url.indexOf("logout.dhtml") != -1
|| url.indexOf("login.jsp") != -1 || url.endsWith(".css")
|| url.endsWith(".js") || url.endsWith(".gif")
|| url.endsWith(".jpg") || url.endsWith(".png");
} public void destroy() {
}
} <filter>
<filter-name>jspFilter</filter-name>
<filter-class>org.util.JspFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>jspFilter</filter-name>
<url-pattern>*.dhtml</url-pattern>
</filter-mapping>
发现不起作用,还是可以直接访问Jsp
要是<url-pattern>*.dhtml</url-pattern>xml改为<url-pattern>*.jsp</url-pattern>结果连jsp页面都进不去,
SOS~~~

解决方案 »

  1.   

    修改一下方法试试:private boolean isExcludePages(String url) {
       boolean  isExclude  = false;   if (url.indexOf("login") > -1  || 
             url.indexOf("logout") > -1  || 
             url.indexOf("index") > -1  ) {          isExclude  = true;
       }
        
      return isExclude;
    }
      

  2.   

     <url-pattern>*.dhtml</url-pattern>  这个只过滤了*.dhtml,jsp就没过滤到 所以可以访问的可以把要过滤的东西放到一个目录里 如admin,然后 <url-pattern>/admin/*</url-pattern>