JavaWeb Servlet中Filter过滤器的详解(java过滤器怎么写)奔走相告

随心笔谈2年前发布 admin
212 0 0

文章摘要

这篇文章描述了一个基于Spring Security框架的过滤器实现示例,实现了`Filter`接口中的`init`和`doFilter`方法。`init`方法负责初始化过滤器,通过`FilterConfig`获取`ServletContext`对象。在`doFilter`方法中,过滤器处理请求和响应,检查请求的`URI`是否包含特定关键字(如`Buy`或`collect`),并根据用户是否登录(通过`username`属性判断)决定是否跳转至`login.jsp`页面。如果用户未登录或跳转后仍需进一步处理,过滤器将调用`FilterChain`的`doFilter`方法进行后续处理。



package com.baidu.web;

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

public class MyFilter implements Filter{

@Override
public void destroy() {
}

@Override
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
//对请求request进行处理
HttpServletResponse resp=(HttpServletResponse)response;
HttpServletRequest req=(HttpServletRequest) request;
String username=(String) req.getSession().getAttribute(“username”);
if(req.getRequestURI().contains(“Buy”) || req.getRequestURI().contains(“collect”)){
if(username==null || username.equals(“”)){ //满足过滤要求,进行处理
req.getRequestDispatcher(“/login.jsp”).forward(req, resp);
return;
}
}
chain.doFilter(req, resp);
//对相应response进行处理
}

@Override
public void init(FilterConfig filterConfig) throws ServletException {
//filterConfig,通过filterConfig的getServletContext() 方法可以获得 ServletContext
}
}

© 版权声明

相关文章