package demo;
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;
import javax.servlet.http.HttpSession;
/*
* --------------------DemoFilter演示过滤器的用法----------------------------
* 统一编码规则
* 判断用户判断session
* 选择远程主机ip
* 过滤非法文字
*/
public class DemoFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
System.out.println("Filter销毁...");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
HttpServletRequest res = (HttpServletRequest) request;
HttpServletResponse rep = (HttpServletResponse) response;
System.out.println("filter执行...");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String test = request.getParameter("test");
if (test != null) {
String anyOneChar="Area";
if (test.indexOf(anyOneChar) != -1) {
System.out.println(test + "属于非法字段!!");
test=test.replaceAll(anyOneChar, "***");
System.out.println("已经替换为" + test);
} else {
System.out.println("Filter通过!!");
}
}
HttpSession session = res.getSession();
if (session.getAttribute("aa") != null) {
System.out.println("not null");
} else {
System.out.println("null");
}
String ip = request.getRemoteAddr();
if (ip.startsWith("127")) {
System.out.println("你的ip为" + ip + "本来是不可以访问本站哦!!");
} else {
System.out.println("continue..");
}
chain.doFilter(request, response);
}
public void init(FilterConfig filterConfig) throws ServletException {
// TODO Auto-generated method stub
System.out.println("Filter初始化...");
}
}
分享到:
相关推荐
- `Filter`和`FilterChain`: 用于实现请求过滤器,可以在请求到达Servlet之前进行预处理,或在响应发送回客户端之后进行后处理。 - `DispatcherType`: 定义了不同的请求调度类型,如REQUEST、FORWARD、INCLUDE等。...
开发者可以通过实现`javax.servlet.Filter`接口来创建过滤器,并通过`web.xml`部署描述符配置过滤规则。 Listener则是在特定事件发生时被调用的类,比如session创建、销毁或请求初始化等。它们通过实现不同的监听器...
2. **GenericServlet类**:这是一个抽象类,实现了Servlet接口,提供了通用的生命周期方法实现,但`service()`方法是抽象的,需要子类重写以处理特定类型的请求。 3. **HttpServlet类**:扩展了GenericServlet,...
javax.servlet.jar则提供了更多与Servlet相关的类和接口,包括对HTTP请求和响应的封装、会话管理、过滤器、监听器等功能。例如,`javax.servlet.ServletRequest`和`javax.servlet.ServletResponse`接口分别代表了...
7. **FilterChain**:`javax.servlet.FilterChain`接口代表一个过滤器链,一个请求在到达目标Servlet之前,会依次通过链上的每个过滤器。 8. **DispatcherType**:`javax.servlet.DispatcherType`枚举类型定义了...
4. **Filter机制**: `javax.servlet.Filter` 接口定义了过滤器,可以在请求到达Servlet之前和响应离开Servlet之后进行拦截处理。比如,可以使用过滤器实现登录检查、GZIP压缩、字符编码转换等功能。 5. **JSP基础**...
`javax.servlet` API是Java平台上的一个核心组件,主要用于构建Web应用程序。这个API提供了一组接口和类,允许开发者创建Servlets,这是处理HTTP请求的Java程序。在本篇文章中,我们将深入探讨`javax.servlet` API的...
11. **过滤器(Filter)**:Servlet API也提供了Filter接口,允许开发者在请求到达Servlet之前或离开Servlet之后进行拦截,实现如登录检查、字符编码转换、日志记录等功能。 12. **监听器(Listener)**:Listener...
1. **过滤器接口实现**:首先定义一个实现了`javax.servlet.Filter`接口的类`Filter`。 2. **初始化方法`init()`**:在过滤器创建时被调用,可以用来进行一些初始化操作。 3. **销毁方法`destroy()`**:在过滤器销毁...
5. Filter接口:Servlet API还引入了过滤器(Filter),允许在请求到达Servlet之前或之后执行拦截操作。 三、Servlet生命周期 Servlet的生命周期主要包括加载、初始化、服务和销毁四个阶段。Servlet的生命周期由Web...
根据Java Servlet规范,过滤器(Filter)是一个实现了javax.servlet.Filter接口的类,它能够在请求处理链中插入额外的逻辑。通过在web.xml文件中定义过滤器,我们可以指定哪些请求路径需要被过滤,并且可以设置多个...
这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取web.xml文件中Servlet过滤器的初始化参数。 b、doFilter(ServletRequest,ServletResponse,FilterChain)...
Servlet过滤器遵循Java Servlet规范,通过实现`javax.servlet.Filter`接口来创建自定义过滤器。它能够对HTTP请求和响应进行预处理和后处理,例如:数据验证、字符编码转换、日志记录、权限控制等。过滤器链的概念...
6. **过滤器和监听器** - Servlet API中还包括Filter和Listener接口,它们能增强应用的功能,比如实现登录验证、字符编码转换、会话管理等。 7. **Web容器** - 如Tomcat、Jetty等,它们提供运行Servlet和JSP的环境...
init 方法是 Servlet 过滤器的初始化方法,doFilter 方法完成实际的过滤操作,destroy 方法是在 Servlet 容器销毁过滤器实例前调用的方法。 在创建 Servlet 过滤器时,需要实现 javax.servlet.Filter 接口的 ...
此外,Servlet API还提供了过滤器(Filter)和监听器(Listener)的概念,它们允许开发者在请求到达Servlet之前进行拦截处理,或者监听特定的事件,如session创建、销毁等。 JSP技术则是基于Servlet的,它将HTML和...
通过实现javax.servlet.Filter接口,我们创建了一个LoginFilter类。这个过滤器会在每个请求到达目标页面之前执行,从而根据session中的信息来判断用户是否已经登录。 过滤器类LoginFilter中有几个关键的方法。首先...
1. `init(FilterConfig config)`:在过滤器实例化后并首次被调用时,服务器会调用这个方法。在这里,可以初始化过滤器的配置参数,这些参数通常在`web.xml`文件中定义。 2. `doFilter(ServletRequest request, ...
Filter是JavaWeb中的一个中间件,它可以拦截请求和响应,执行一些预处理或后处理操作,如登录检查、数据过滤、字符编码转换等。创建Filter需要实现`javax.servlet.Filter`接口: ```java import javax.servlet.*; ...
`javax.servlet.Filter`接口定义了过滤器的行为,而`javax.servlet.FilterChain`则用于调用下一个过滤器或目标Servlet。 8. **DispatcherType**:`javax.servlet.DispatcherType`枚举类型定义了Servlet的调度类型,...