Java-Filter使用简介

涎涎原创约 785 字大约 3 分钟...JavaJava

Java-Filter使用简介

注意

本博文仅供学术研究和交流参考,严禁将其用于商业用途。如因违规使用产生的任何法律问题,使用者需自行负责。

过滤器使用原理

过滤器的作用: 过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改。也可以对响应进行过滤,拦截或修改响应。

Eclipse新建过滤器Filter

配置web.xml

添加如图代码

 <filter>
    <filter-name>f1</filter-name>
    <filter-class>net.ptcs.my12306.controller.AccessFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>f1</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

AccessFilter过滤器代码实现

package net.ptcs.my12306.controller;

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.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import net.ptcs.my12306.entity.Users;

/**
 * 对访问进行控制的过滤器类
 * @author xianxian
 *
 */
@WebFilter(description = "对访问进行控制的过滤器类", urlPatterns = { "/AccessFilter" })
public class AccessFilter implements Filter {

	@Override
	public void destroy() {
		
	}

	@Override
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
			throws IOException, ServletException {
		//这行代码保证多个过滤器依次执行 chain.doFilter(request,response);
		/**
		 * 如何进行访问权限控制?
		 * 思路:
		 * 1、获取请求的url
		 * 2、对url进行判断,看用户是不是访问管理员模块,看用户是不是访问用户模块
		 * 3、如果访问管理员模块,那么必须第一登录,第二用户的rule是1,否则先登录去
		 * 4、如何访问用户模块,那么必须第一登录,第二用户的rule是2,否则先登录去
		 * 5、如果访问的既不是管理员模块又不是用户模块,那么放行
		 * 
		 * 
		 */
		HttpServletRequest res = null;
		if(request instanceof HttpServletRequest) {
			res = (HttpServletRequest)request;
		}
		
		HttpServletResponse resp = null;
		if(response instanceof HttpServletResponse) {
			resp = (HttpServletResponse)response;
		}
		
		String url = res.getRequestURL().toString();
		System.out.println("url:" + url);
		
		
		//从session获取user
		HttpSession session = res.getSession();
		Users user = (Users)session.getAttribute("user");
		
		if(url.contains("/admin/")) {

			if(user != null) {
				//用户已登录
				if(user.getRule().equals("1")) {
					//放行的代码
					chain.doFilter(request,response);
				}else {
					//登录咯但是身份不对 重定向到登录页面
					resp.sendRedirect(res.getContextPath() + "/login.jsp");
				}
			}else {
				//没有登录重定向到登录页面
				resp.sendRedirect(res.getContextPath() + "/login.jsp");
			}
		}else if(url.contains("/user/")) {
			if(user != null) {
				//用户已登录
				if(user.getRule().equals("2")) {
					//放行的代码
					chain.doFilter(request,response);
				}else {
					//登录咯但是身份不对 重定向到登录页面
					resp.sendRedirect(res.getContextPath() + "/login.jsp");
				}
			}else {
				//没有登录重定向到登录页面
				resp.sendRedirect(res.getContextPath() + "/login.jsp");
			}
		}else {
			//放行的代码
			chain.doFilter(request,response);
		}
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		
	}
}

总结

以上就是我对filter使用的简介

参考链接

Java过滤器Filter使用详解open in new window

Java过滤器open in new window

Java中的Filter过滤器open in new window

java过滤器——filter的使用和配置open in new window

JSP 过滤器open in new window


分割线


相关信息

以上就是我关于 Java-Filter使用简介 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。

上次编辑于:
贡献者: 涎涎
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.4