您当前的位置: 首页 >  spring

java持续实践

暂无认证

  • 1浏览

    0关注

    746博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

黑马十次方项目day08-04 SpringCloud前台网关搭建与网关过滤器的介绍

java持续实践 发布时间:2019-02-23 14:36:09 ,浏览量:1

文章目录
      • 一. 前台网关搭建
      • 二. Zuul网关过滤器

一. 前台网关搭建

前台网关的搭建,与上一节 黑马十次方项目day08-03SpringCloud之Netflix Zuul服务网关搭建 基本步骤相同, 只是把模块名称改为了tensquare_web, 端口号改为了9012. 其他的都相同.

二. Zuul网关过滤器

在Zuul的网关中,可配置过滤器. 现在在tensquare_manager模块中配置过滤器, 在com.tensquare.manager.filter.ManagerFilter下创建过滤器,内容如下

package com.tensquare.manager.filter;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.exception.ZuulException;
import org.springframework.stereotype.Component;

/**
 * 类名称:ManagerFilter
 * 类描述:  zuul 网关过滤器
 *
 * @author: taohongchao
 * 创建时间:2019/2/23 14:08
 * Version 1.0
 */
@Component
public class ManagerFilter extends ZuulFilter {

    /**
     * 方法名: filterType
     * 方法描述:  过滤器执行的类型
     * pre 代表在执行之前执行, 一般使用pre 进行之前过滤
     * post 代表在当前操作之后过滤
     * 修改日期: 2019/2/23 14:10
      * @param
     * @return java.lang.String
     * @author taohongchao
     * @throws
     */
    @Override
    public String filterType() {
        return "pre";
    }

    /**
     * 方法名: filterOrder
     * 方法描述: 多个过滤器执行顺序, 数字越小,代表越前执行
     * 修改日期: 2019/2/23 14:12
      * @param
     * @return int
     * @author taohongchao
     * @throws
     */
    @Override
    public int filterOrder() {
        return 0;
    }

    
    /**
     * 方法名: shouldFilter
     * 方法描述: 当前过滤器是否开启, true代表开启, false代表关闭该过滤器
     * 修改日期: 2019/2/23 14:13
      * @param          
     * @return boolean
     * @author taohongchao
     * @throws
     */
    @Override
    public boolean shouldFilter() {
        return true;
    }
    
    /**
     * 方法名: run
     * 方法描述:  过滤器内执行的操作, return代表任何Object的值(包括null),都代表继续执行
     * 而调用 setSendZuulResponse(false) 表示不再继续执行
     * 修改日期: 2019/2/23 14:13
      * @param          
     * @return java.lang.Object
     * @author taohongchao
     * @throws
     */
    @Override
    public Object run() throws ZuulException {
        System.out.println("经过后台过滤器了");
        return null;
    }
}

在run方法中, 写了输出语句, “经过后台过滤器了”. 启动 Eureka ,base模块, 网关模块. 调用如下的请求 http://localhost:9011/base/label 控制台打印如下.代表成功经过了后台的过滤器. filterType:返回一个字符串代表过滤器的类型,在zuul中定义了四种不同生命周期的过 滤器类型,具体如下:

pre :可以在请求被路由之前调用,一般使用pre route :在路由请求时候被调用 post :在route和error过滤器之后被调用 error :处理请求时发生错误时被调用

filterOrder :通过int值来定义过滤器的执行顺序 shouldFilter :返回一个boolean类型来判断该过滤器是否要执行,所以通过此函数可 实现过滤器的开关。在上例中,我们直接返回true,所以该过滤器总是生效 run :经过过滤器时的在此方法内写具体逻辑

关注
打赏
1658054974
查看更多评论
立即登录/注册

微信扫码登录

0.2206s