wuheng 2 năm trước cách đây
mục cha
commit
bbf3ccea5f

+ 28 - 0
day12/src/com/lovecoding/filter/JSPFilter.java

@@ -0,0 +1,28 @@
+package com.lovecoding.filter;
+
+import javax.servlet.*;
+import java.io.IOException;
+
+public class JSPFilter implements Filter{
+
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+
+    }
+
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+
+        System.out.println( "run 1" );
+
+        filterChain.doFilter(servletRequest, servletResponse);
+
+        System.out.println( "run 3" );
+
+    }
+
+    @Override
+    public void destroy() {
+
+    }
+}

+ 21 - 0
day12/src/com/lovecoding/filter/LoginFilter.java

@@ -0,0 +1,21 @@
+package com.lovecoding.filter;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import java.io.IOException;
+
+@WebFilter("/login.jsp")
+public class LoginFilter implements Filter {
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+
+    }
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+        System.out.println( "LoginFilter Runing" );
+        filterChain.doFilter(servletRequest, servletResponse);
+    }
+    @Override
+    public void destroy() {
+    }
+}

+ 24 - 0
day12/src/com/lovecoding/filter/MyFilter.java

@@ -0,0 +1,24 @@
+package com.lovecoding.filter;
+
+
+import javax.servlet.*;
+import java.io.IOException;
+
+public class MyFilter implements Filter {
+
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+        System.out.println( "init" );
+    }
+
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+        System.out.println( "doFilter" );
+        filterChain.doFilter( servletRequest, servletResponse );
+    }
+
+    @Override
+    public void destroy() {
+        System.out.println( "destroy" );
+    }
+}

BIN
day12/web/WEB-INF/lib/servlet-api.jar


+ 48 - 0
day12/web/WEB-INF/web.xml

@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
+         version="4.0">
+
+
+<filter>
+    <filter-name>JSPFilter</filter-name>
+    <filter-class>com.lovecoding.filter.JSPFilter</filter-class>
+</filter>
+<filter-mapping>
+    <filter-name>JSPFilter</filter-name>
+    <url-pattern>/admin.jsp</url-pattern>
+</filter-mapping>
+
+
+<!--  我们可以在web.xml里面定义 Filter 对象  -->
+<filter>
+    <filter-name>Demo</filter-name>
+    <filter-class>com.lovecoding.filter.MyFilter</filter-class>
+</filter>
+<!--  这里定义一个URL匹配 讲匹配上的 请求转给Filter 处理  -->
+<filter-mapping>
+    <filter-name>Demo</filter-name>
+    <url-pattern>/*</url-pattern>
+</filter-mapping>
+
+<!--  只匹配JSP过滤  -->
+<filter-mapping>
+    <filter-name>Demo</filter-name>
+    <url-pattern>*.jsp</url-pattern>
+</filter-mapping>
+
+<!--  只匹配JSP过滤  -->
+<filter-mapping>
+    <filter-name>Demo</filter-name>
+    <url-pattern>/index.jsp</url-pattern>
+</filter-mapping>
+
+<!--  只匹配JSP过滤  -->
+<filter-mapping>
+    <filter-name>Demo</filter-name>
+    <url-pattern>/admin/*</url-pattern>
+</filter-mapping>
+
+
+</web-app>

+ 26 - 0
day12/web/admin.jsp

@@ -0,0 +1,26 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: 武恒
+  Date: 2023/2/9
+  Time: 14:25
+  To 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> Admin.JSP </h1>
+
+    <%
+
+        System.out.println( "run 2" );
+
+    %>
+
+
+</body>
+</html>

+ 16 - 0
day12/web/index.jsp

@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: 武恒
+  Date: 2023/2/9
+  Time: 14:04
+  To change this template use File | Settings | File Templates.
+--%>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
+<html>
+  <head>
+    <title>$Title$</title>
+  </head>
+  <body>
+  $END$
+  </body>
+</html>

+ 16 - 0
day12/web/login.jsp

@@ -0,0 +1,16 @@
+<%--
+  Created by IntelliJ IDEA.
+  User: 武恒
+  Date: 2023/2/9
+  Time: 15:13
+  To 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>login JSP</h1>
+</body>
+</html>

+ 57 - 0
study/src/com/lovecoding/study/filter/SessionFilter.java

@@ -0,0 +1,57 @@
+package com.lovecoding.study.filter;
+
+import com.lovecoding.study.domian.User;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+
+@WebFilter("/*")
+public class SessionFilter implements Filter {
+
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+
+        HttpServletRequest req = (HttpServletRequest) servletRequest;
+        HttpServletResponse resp = (HttpServletResponse) servletResponse;
+        req.setCharacterEncoding("utf-8");
+        resp.setContentType("text/html; charset=utf-8");
+
+        /**
+         * 我们在这里增加判断 有些页面是不需要鉴权的
+         * 比如说 登陆 注册 都不需要鉴权
+         */
+        String requestURI = req.getRequestURI();
+
+        String[] urls = {"/login.jsp", "/user", "/css/login.css", "/css/register.css"};
+        for ( String url : urls ) {
+            if (requestURI.contains(url)) {
+                filterChain.doFilter(servletRequest, servletResponse);
+                return;
+            }
+        }
+
+        /**
+         * 我们在这里取出 用户的 Session对象
+         */
+        HttpSession session = req.getSession(true);
+        User user = (User) session.getAttribute("user");
+        if ( user == null ) {
+            //用户未登录
+            session.setAttribute("error", "请登陆后操作!!!!!!!");
+            resp.sendRedirect(req.getContextPath() + "/login.jsp");
+        } else {
+            //能查到 Session 里的 User对象 是 已经登陆的了
+            filterChain.doFilter(servletRequest, servletResponse);
+        }
+    }
+
+
+
+    public void init(FilterConfig filterConfig) throws ServletException {
+    }
+    public void destroy() {
+    }
+}