ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

AOP编程模式

2022-03-09 02:31:26  阅读:176  来源: 互联网

标签:ServletException arg0 编程 模式 public AOP import servlet javax


一句话概括:

AOP的编程模式就是使用filter拦截请求,分离主流业务和子业务。

比如filter可以拦截重复登录的请求。就像你想去见公司的大BOSS,可能要经过门卫,前台,秘书等层层拦截。filter也可以串联的多层拦截,满足一层以后到下一层。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

package com.xzit.aop;

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;

public class OneFilter implements Filter {

    private String ip = "";
    @Override
    public void destroy() {
        // TODO Auto-generated method stub
        System.out.println("释放资源");
    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain chain)
            throws IOException, ServletException {
        System.out.println("执行过滤");
//        if(ip.equals("127.0.0.1")) {
//            System.out.println("您被举报,暂时无法访问本网站的任何资源");
//        }else {
//            
//            chain.doFilter(arg0, arg1);    //执行链条驱动,交给下一个Filter(如果有)
//        }
        chain.doFilter(arg0, arg1);    //执行链条驱动,交给下一个Filter(如果有)

    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
        // TODO Auto-generated method stub
        System.out.println("初始化");
        ip = arg0.getInitParameter("ip");
    }

}
package com.xzit.aop;

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;

public class TwoFilter implements Filter {

    @Override
    public void destroy() {
        // TODO Auto-generated method stub

    }

    @Override
    public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain chain)
            throws IOException, ServletException {
        System.out.println("过滤器TwoFilter");
//        chain.doFilter(arg0,arg1);
    }

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        // TODO Auto-generated method stub

    }

}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>aop2</display-name>
  
  <!-- 配置自定义过滤器  -->
  
  <filter>
      <filter-name>oneFilter</filter-name>
      <filter-class>com.xzit.aop.OneFilter</filter-class>
      <init-param>
          <param-name>ip</param-name>
          <param-value>127.0.0.1</param-value>
      </init-param>
  </filter>
  
  <!-- 配置Filter的拦截映射 -->
  <filter-mapping>
      <filter-name>oneFilter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <filter>
      <filter-name>twoFilter</filter-name>
      <filter-class>com.xzit.aop.TwoFilter</filter-class>
  </filter>
  
  <!-- 配置Filter的拦截映射 -->
  <filter-mapping>
      <filter-name>twoFilter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Insert title here</title>
    </head>
    <body>
        index.jsp 页面
    </body>
</html>

 

标签:ServletException,arg0,编程,模式,public,AOP,import,servlet,javax
来源: https://www.cnblogs.com/zengyu1234/p/15983360.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有