Java-Filter使用简介
原创约 785 字大约 3 分钟...
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使用简介 知识点的整理与总结的全部内容,希望对你有帮助。。。。。。。
Powered by Waline v2.15.4