Java Web
【黑马程序员新版JavaWeb基础教程,Java web从入门到企业实战完整版】
12 Filter & Listener & Ajax
文章目录
- Java Web
- 12 Filter & Listener & Ajax
- 12.1 Filter
- 12.1.2 Filter 快速入门
12.1 Filter
12.1.2 Filter 快速入门
【开发步骤】
进行 Filter 开发分成以下三步实现
-
定义类,实现 Filter接口,并重写其所有方法
-
配置Filter拦截资源的路径:在类上定义 @WebFilter 注解。而注解的 value 属性值 /* 表示拦截所有的资源
-
在doFilter方法中输出一句话,并放行
代码中的 chain.doFilter(request,response); 就是放行,也就是让其访问本该访问的资源。
【演示】
创建新模块:filter-demo
按照以前的东西,将其配置为一个标准的Web 工程
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.dingjiaxiong</groupId><artifactId>filter-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><!-- servlet --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency></dependencies><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>80</port></configuration></plugin></plugins></build></project>
测试启动
OK,可以正常启动。
新建hello.jsp
<%--Created by IntelliJ IDEA.User: DingJiaxiongDate: 2022/9/13Time: 14:44To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<h1>hello jsp</h1>
</body>
</html>
启动服务器访问
http://localhost/filter-demo/hello.jsp 【因为80,所以可以省略端口】
OK,没问题。
编写过滤器
package com.dingjiaxiong.web.filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;/*** ClassName: FilterDemo* date: 2022/9/13 14:46** @author DingJiaxiong*/
@WebFilter("/*")
public class FilterDemo implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("FilterDemo...被拦截了哈");}@Overridepublic void destroy() {}
}
重新启动服务器,再次访问页面
添加放行的方法,让咱们可以访问到页面
package com.dingjiaxiong.web.filter;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;/*** ClassName: FilterDemo* date: 2022/9/13 14:46** @author DingJiaxiong*/
@WebFilter("/*")
public class FilterDemo implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {System.out.println("FilterDemo...被拦截了哈,放你过去吧");//放行filterChain.doFilter(servletRequest,servletResponse);}@Overridepublic void destroy() {}
}
OK。