Filter过滤器
每一个Servlet都需要解决自己业务的问题,但是它们都需要判断用户是否已经登陆,
如果登陆了,才可以执行后续操作,如果没有则需要登录
这部分我们可以使用Filter过滤器来将这部分从Servlet中抽离,达到复用效果
我们可以把Servlet程序看作是需要执行的目标,我们可以使用过滤器Filter来添加过滤代码
Filter可以添加到Servlet执行之前也可以是执行之后
过滤器也是根据请求路径来执行的
Servlet对象默认情况下,服务器启动,不会创建对象
Filter对象默认在服务器启动创建对象
Filter过滤器
每一个Servlet都需要解决自己业务的问题,但是它们都需要判断用户是否已经登陆,
如果登陆了,才可以执行后续操作,如果没有则需要登录
这部分我们可以使用Filter过滤器来将这部分从Servlet中抽离,达到复用效果
我们可以把Servlet程序看作是需要执行的目标,我们可以使用过滤器Filter来添加过滤代码
Filter可以添加到Servlet执行之前也可以是执行之后
过滤器也是根据请求路径来执行的
Servlet对象默认情况下,服务器启动,不会创建对象
Filter对象默认在服务器启动创建对象
<?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">
<session-config>
<!-- 代表session的超时时间是30分钟,如果30分钟到,session对象就会被销毁-->
<session-timeout>30</session-timeout>
</session-config>
<!-- 使用欢迎页机制跳转到cookie登录-->
<welcome-file-list>
<welcome-file>Welcome</welcome-file>
</welcome-file-list>
<filter>
<filter-name>filter1</filter-name>
<filter-class>com.bjpowernode.oa.web.Servlet.Filter1</filter-class>
</filter>
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>/Test/A</url-pattern>
</filter-mapping>
</web-app>
<?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">
<session-config>
<!-- 代表session的超时时间是30分钟,如果30分钟到,session对象就会被销毁-->
<session-timeout>30</session-timeout>
</session-config>
<!-- 使用欢迎页机制跳转到cookie登录-->
<welcome-file-list>
<welcome-file>Welcome</welcome-file>
</welcome-file-list>
<filter>
<filter-name>filter1</filter-name>
<filter-class>com.bjpowernode.oa.web.Servlet.Filter1</filter-class>
</filter>
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>/Test/A</url-pattern>
</filter-mapping>
</web-app>
package com.bjpowernode.oa.web.Servlet;
import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter({"/Test/A","/Test/B"})
public class Filter1 implements Filter
{
public Filter1()
{
System.out.println("构造方法");
}
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
System.out.println("init方法执行");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
//请求发送的时候添加过滤规则
System.out.println("doFilter方法执行");
//往下走,下一个是过滤器,就继续过滤,不是就走Servlet
//放行,但是该过滤器方法执行未结束,servlet结束才结束
chain.doFilter(request,response);
//响应的时候添加过滤规则
System.out.println("doFilter方法结束");
}
@Override
public void destroy()
{
System.out.println("destroy方法执行");
}
}
package com.bjpowernode.oa.web.Servlet;
import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter({"/Test/A","/Test/B"})
public class Filter1 implements Filter
{
public Filter1()
{
System.out.println("构造方法");
}
@Override
public void init(FilterConfig filterConfig) throws ServletException
{
System.out.println("init方法执行");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
//请求发送的时候添加过滤规则
System.out.println("doFilter方法执行");
//往下走,下一个是过滤器,就继续过滤,不是就走Servlet
//放行,但是该过滤器方法执行未结束,servlet结束才结束
chain.doFilter(request,response);
//响应的时候添加过滤规则
System.out.println("doFilter方法结束");
}
@Override
public void destroy()
{
System.out.println("destroy方法执行");
}
}
package com.bjpowernode.oa.web.Servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/Test/A")
public class AServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
System.out.println("AServlet执行了");
}
}
package com.bjpowernode.oa.web.Servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/Test/A")
public class AServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
System.out.println("AServlet执行了");
}
}
package com.bjpowernode.oa.web.Servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/Test/B")
public class BServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
System.out.println("BServlet执行了");
}
}
package com.bjpowernode.oa.web.Servlet;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/Test/B")
public class BServlet extends HttpServlet
{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
System.out.println("BServlet执行了");
}
}