Skip to content

Commit c35f8dc

Browse files
author
cicadasmile
committed
JavaEE基础(05):过滤器、监听器、拦截器,应用详解
1 parent 95b5af0 commit c35f8dc

File tree

10 files changed

+268
-0
lines changed

10 files changed

+268
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<project xmlns="http://maven.apache.org/POM/4.0.0"
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
5+
<parent>
6+
<artifactId>java-ee-base-parent</artifactId>
7+
<groupId>com.java.ee.parent</groupId>
8+
<version>1.0-SNAPSHOT</version>
9+
</parent>
10+
<modelVersion>4.0.0</modelVersion>
11+
<groupId>com.node05.filter</groupId>
12+
<artifactId>node05-servlet-filter</artifactId>
13+
<packaging>war</packaging>
14+
15+
<properties>
16+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
17+
<maven.compiler.source>1.8</maven.compiler.source>
18+
<maven.compiler.target>1.8</maven.compiler.target>
19+
<jstl.version>1.2</jstl.version>
20+
<servlet-api.version>2.5</servlet-api.version>
21+
<jsp-api.version>2.0</jsp-api.version>
22+
</properties>
23+
24+
<dependencies>
25+
<!-- JSP相关 依赖包-->
26+
<dependency>
27+
<groupId>jstl</groupId>
28+
<artifactId>jstl</artifactId>
29+
<version>${jstl.version}</version>
30+
</dependency>
31+
<dependency>
32+
<groupId>javax.servlet</groupId>
33+
<artifactId>jsp-api</artifactId>
34+
<version>${jsp-api.version}</version>
35+
<scope>provided</scope>
36+
</dependency>
37+
<!-- servlet依赖包 -->
38+
<dependency>
39+
<groupId>javax.servlet</groupId>
40+
<artifactId>servlet-api</artifactId>
41+
<version>${servlet-api.version}</version>
42+
<scope>provided</scope>
43+
</dependency>
44+
<dependency>
45+
<groupId>junit</groupId>
46+
<artifactId>junit</artifactId>
47+
<version>4.12</version>
48+
</dependency>
49+
</dependencies>
50+
51+
</project>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.node05.servlet.filter;
2+
3+
import javax.servlet.*;
4+
import javax.servlet.http.HttpServletRequest;
5+
import javax.servlet.http.HttpServletResponse;
6+
import java.io.IOException;
7+
8+
public class ThePrintLogFilter implements Filter {
9+
@Override
10+
public void init(FilterConfig filterConfig) throws ServletException {
11+
String myName = filterConfig.getInitParameter("myName") ;
12+
System.out.println("myName:"+myName);
13+
}
14+
15+
@Override
16+
public void doFilter(ServletRequest servletRequest,
17+
ServletResponse servletResponse,
18+
FilterChain chain) throws IOException, ServletException {
19+
HttpServletRequest request = (HttpServletRequest)servletRequest ;
20+
HttpServletResponse response = (HttpServletResponse)servletResponse ;
21+
String name = request.getParameter("name") ;
22+
if (!name.equals("cicada")){
23+
response.getWriter().print("User Error !");
24+
return ;
25+
}
26+
chain.doFilter(servletRequest,servletResponse);
27+
}
28+
29+
@Override
30+
public void destroy() {
31+
System.out.println("ThePrintLogFilter destroy()");
32+
}
33+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.node05.servlet.impl;
2+
3+
import javax.servlet.ServletException;
4+
import javax.servlet.http.HttpServlet;
5+
import javax.servlet.http.HttpServletRequest;
6+
import javax.servlet.http.HttpServletResponse;
7+
import java.io.IOException;
8+
9+
public class FilterServletImpl extends HttpServlet {
10+
@Override
11+
protected void doGet(HttpServletRequest request, HttpServletResponse response)
12+
throws ServletException, IOException {
13+
response.setContentType("text/html;charset=utf-8");
14+
response.getWriter().print("Hello:Filter");
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package com.node05.servlet.impl;
2+
3+
import javax.servlet.ServletContext;
4+
import javax.servlet.ServletException;
5+
import javax.servlet.http.*;
6+
import java.io.IOException;
7+
8+
public class ListenerServletImpl extends HttpServlet {
9+
@Override
10+
protected void doGet(HttpServletRequest request, HttpServletResponse response)
11+
throws ServletException, IOException {
12+
response.setContentType("text/html;charset=utf-8");
13+
// 1、获取TheContextListener初始化数据
14+
ServletContext servletContext = this.getServletContext() ;
15+
String author = String.valueOf(servletContext.getAttribute("author")) ;
16+
System.out.println("TheContextListener Author:"+author);
17+
// 2、Request属性设置
18+
request.setAttribute("mood","smile");
19+
request.setAttribute("mood","agitated");
20+
// 3、Session创建,1分钟失效,调用销毁
21+
HttpSession session = request.getSession(true) ;
22+
session.setAttribute("casually","casually");
23+
response.getWriter().print("Hello:Listener");
24+
}
25+
26+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.node05.servlet.listener;
2+
3+
import javax.servlet.ServletRequestAttributeEvent;
4+
import javax.servlet.ServletRequestAttributeListener;
5+
/**
6+
* Request属性监听
7+
*/
8+
public class RequestAttributeListener implements ServletRequestAttributeListener {
9+
@Override
10+
public void attributeAdded(ServletRequestAttributeEvent evt) {
11+
System.out.println("Request添加属性:"+evt.getName()+";"+evt.getValue());
12+
}
13+
@Override
14+
public void attributeRemoved(ServletRequestAttributeEvent evt) {
15+
System.out.println("Request移除属性:"+evt.getName()+";"+evt.getValue());
16+
}
17+
@Override
18+
public void attributeReplaced(ServletRequestAttributeEvent evt) {
19+
System.out.println("Request替换属性:"+evt.getName()+";"+evt.getValue());
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.node05.servlet.listener;
2+
3+
import javax.servlet.ServletContext;
4+
import javax.servlet.ServletContextEvent;
5+
import javax.servlet.ServletContextListener;
6+
7+
public class TheContextListener implements ServletContextListener {
8+
@Override
9+
public void contextInitialized(ServletContextEvent servletContextEvent) {
10+
System.out.println("初始化:TheContextListener");
11+
ServletContext servletContext = servletContextEvent.getServletContext() ;
12+
servletContext.setAttribute("author","cicada");
13+
}
14+
15+
@Override
16+
public void contextDestroyed(ServletContextEvent servletContextEvent) {
17+
System.out.println("销毁:TheContextListener");
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.node05.servlet.listener;
2+
3+
import javax.servlet.ServletRequestEvent;
4+
import javax.servlet.ServletRequestListener;
5+
6+
public class TheRequestListener implements ServletRequestListener {
7+
@Override
8+
public void requestDestroyed(ServletRequestEvent servletRequestEvent) {
9+
System.out.println("初始化:TheRequestListener");
10+
}
11+
12+
@Override
13+
public void requestInitialized(ServletRequestEvent servletRequestEvent) {
14+
System.out.println("销毁:TheRequestListener");
15+
}
16+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.node05.servlet.listener;
2+
3+
import javax.servlet.http.HttpSessionEvent;
4+
import javax.servlet.http.HttpSessionListener;
5+
6+
public class TheSessionListener implements HttpSessionListener {
7+
@Override
8+
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
9+
System.out.println("初始化:TheSessionListener");
10+
}
11+
12+
@Override
13+
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
14+
System.out.println("销毁:TheSessionListener");
15+
}
16+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns="http://java.sun.com/xml/ns/javaee"
5+
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
6+
id="WebApp_ID" version="3.0">
7+
8+
<display-name>cicada_servlet</display-name>
9+
<context-param>
10+
<param-name>encoding</param-name>
11+
<param-value>UTF-8</param-value>
12+
</context-param>
13+
<!-- 监听器相关配置 -->
14+
<listener>
15+
<listener-class>com.node05.servlet.listener.TheContextListener</listener-class>
16+
</listener>
17+
<listener>
18+
<listener-class>com.node05.servlet.listener.TheSessionListener</listener-class>
19+
</listener>
20+
<listener>
21+
<listener-class>com.node05.servlet.listener.TheRequestListener</listener-class>
22+
</listener>
23+
<listener>
24+
<listener-class>com.node05.servlet.listener.RequestAttributeListener</listener-class>
25+
</listener>
26+
<session-config>
27+
<!-- 设置session失效时间为1分钟 -->
28+
<session-timeout>1</session-timeout>
29+
</session-config>
30+
31+
<!-- 过滤器相关配置 -->
32+
<filter>
33+
<filter-name>thePrintLogFilter</filter-name>
34+
<filter-class>com.node05.servlet.filter.ThePrintLogFilter</filter-class>
35+
<init-param>
36+
<param-name>myName</param-name>
37+
<param-value>cicada</param-value>
38+
</init-param>
39+
</filter>
40+
<filter-mapping>
41+
<filter-name>thePrintLogFilter</filter-name>
42+
<url-pattern>/filterServletImpl</url-pattern>
43+
</filter-mapping>
44+
45+
<!-- Servlet相关配置 -->
46+
<servlet>
47+
<servlet-name>listenerServletImpl</servlet-name>
48+
<servlet-class>com.node05.servlet.impl.ListenerServletImpl</servlet-class>
49+
</servlet>
50+
<servlet-mapping>
51+
<servlet-name>listenerServletImpl</servlet-name>
52+
<url-pattern>/listenerServletImpl</url-pattern>
53+
</servlet-mapping>
54+
<servlet>
55+
<servlet-name>filterServletImpl</servlet-name>
56+
<servlet-class>com.node05.servlet.impl.FilterServletImpl</servlet-class>
57+
</servlet>
58+
<servlet-mapping>
59+
<servlet-name>filterServletImpl</servlet-name>
60+
<url-pattern>/filterServletImpl</url-pattern>
61+
</servlet-mapping>
62+
63+
</web-app>
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<html>
2+
<body>
3+
<hr/>
4+
<h2> Filter And Listener </h2>
5+
<hr/>
6+
</body>
7+
</html>

0 commit comments

Comments
 (0)