jsp---Filter的使用

来源:互联网 发布:mac翻墙全局代理 编辑:程序博客网 时间:2024/06/10 22:37

struts2中的拦截器可以拦截action,但是无法拦截页面的请求,但是有些页面需要有权限才可以访问,不可以直接访问,有一种解决的办法就是使用Filter


1、创建Filter类,需要实现Filter接口:

package filter;import java.io.IOException;import java.util.Map;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.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import model.Admin;public class LoginFilter implements Filter {//private Map session;public void destroy() {}public void doFilter(ServletRequest req, ServletResponse resp,FilterChain chain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) req;HttpServletResponse response = (HttpServletResponse) resp;HttpSession session = request.getSession();Admin admin = (Admin) session.getAttribute("nowUser");System.out.println(admin);if(admin == null){response.sendRedirect("login.html");}chain.doFilter(request, response);}public void init(FilterConfig arg0) throws ServletException {}}

在doFilter中实现过滤功能,这里主要是验证用户请求index.html页面时是否登录,如果登录则继续运行,否则返回到登录页面


还需要配置web.xml:添加下面的代码

<filter>  <filter-name>loginFilter</filter-name>  <filter-class>filter.LoginFilter</filter-class>  </filter>  <filter-mapping>  <filter-name>loginFilter</filter-name>  <url-pattern>/index.html</url-pattern>  </filter-mapping>


配置文件的几种不同的情况:

1、过滤所有的请求:

<filter-mapping>    <filter-name>filter</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>

2、过滤制定类型的请求:只过滤“.html”的文件

filter-mapping>    <filter-name>filter</filter-name>    <url-pattern>*.html</url-pattern></filter-mapping>

3、过滤多种类型的:需要配置两个<filter-mapping>

<filter-mapping>    <filter-name>filter</filter-name>    <url-pattern>*.html</url-pattern></filter-mapping><filter-mapping>    <filter-name>filter</filter-name>    <url-pattern>*.jsp</url-pattern></filter-mapping>

4、过滤指定文件:就是刚才的情况,注意加“/”

<filter-mapping>  <filter-name>loginFilter</filter-name>  <url-pattern>/index.html</url-pattern>  </filter-mapping>


原创粉丝点击