SpringBoot重写url urlrewrite

猿份哥 1年前 ⋅ 619 阅读 ⋅ 0 个赞

1.扩展UrlRewriteFilter

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.Resource;
import org.tuckey.web.filters.urlrewrite.Conf;
import org.tuckey.web.filters.urlrewrite.UrlRewriteFilter;

import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import java.io.IOException;

@Configuration
public class UrlRewriteFilterConfig extends UrlRewriteFilter {

    private static final String URL_REWRITE = "classpath:/urlrewrite.xml";

    // Inject the Resource from the given location
    @Value(URL_REWRITE)
    private Resource resource;

    // Override the loadUrlRewriter method, and write your own implementation
    protected void loadUrlRewriter(FilterConfig filterConfig) throws ServletException {
        try {
            // Create a UrlRewrite Conf object with the injected resource
            Conf conf = new Conf(filterConfig.getServletContext(), resource.getInputStream(), resource.getFilename(),
                    "@@traceability@@");
            checkConf(conf);
        } catch (IOException ex) {
            throw new ServletException("Unable to load URL rewrite configuration file from " + URL_REWRITE, ex);
        }
    }
}

2.在resource目录下添加urlrewrite.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN"
        "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd">
<urlrewrite>
   
    <!-- 栏目详情地址 -->
    <rule>
        <from>^/(\w+)bb(\w+).html</from> <!-- 客户端访问地址 -->
        <to>/order/detail/$1/$2</to><!--服务器controller接收的地址 $1/$2 表示依次替换\w和\w-->
    </rule>
   
</urlrewrite>

全部评论: 0

    我有话说:

    Spring Boot系列5-定时任务-springboot整合quartz实现动态定时任务

    MyJob实现Job接口,execute方法在里面操作我们要执行的业务逻辑。 @Slf4j public class MyJob implements Job { @Autowired

    Spring Boot系列7-SpringBoot+mybatis+druid+TypeHandler

    介绍在SpringBoot中集成mybatis和druid以及自定义TypeHandler 创建数据库表 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- --------------------...

    Spring Boot系列6-SpringBoot中使用servlet

    介绍在SpringBoot中如何使用servlet pom.xml <dependency> <groupId>org.springframework.boot<

    SpringBoot系列9-使用jasypt自定义stater运行时动态传入加密密码

    文章目录 1.新建springboot-encryption-configuration项目实现stater 2.pom文件引入jasypt 3.在resources/support/下配置

    Spring Boot系列1-helloword

      使用springboot简单轻松创建helloword SpringBoot系列1-helloword 关于springboot这是摘自官方的一段话 Spring Boot

    springboot项目运行在docker中 file.exists()返回false没有报错

      springboot项目运行在docker中 file.exists()返回false没有报错   表现:在windows运行正确,但是打包后运行在docker容器中找不到

    spring boot系列4-定时任务-springboot自带的scheduled超级简单

    需求:创建一个每天凌晨0点执行的定时任务1.创建任务 /** * @author 天空蓝蓝的 */ @Slf4j @EnableScheduling @Component public class MyTask { @Async @Schedul...

    SpringBoot RestTemplate http请求ClassCastException

    错误信息:java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String     at java.lang.It...

    微信小程序报错request:fail url not in domain list

    微信小程序报错request:fail url not in domain list 登录小程序后台 https://mp.weixin.qq.com/ 选择开发--开发设置--服务器域名--服务器

    docker部署的zookeeper连接超时不断

    经常发现docker部署的zookeeper连接超时 登上服务器发现zookeeper总是不断的启动: 一般原因是磁盘空间不足了会造成zookeeper不断启 为什么会磁盘空间突然不足?一般是项目

    SpringBoot系列10-文件上传

    文章目录 1.先来最简单的 2.设置文件大小,请求大小 3.多文件上传 怎样使用最简单的方式上传文件,如何上传多个文件呢 先来最简单的 pom.xml文件引入依赖文件 <dependencies> <dependenc...

    想好好的好代码,但是进度太赶,时间不允许怎么办?

    很想出优质的代码,但是需求做不完,项目时间也好赶,只能完成需求和功能为目的。感觉技术得不到什么提升呢,如何协调啊?

    ExceptionHandlerExceptionResolver : Resolved [org.springframework.web.servlet.NoHandlerFoundException: No handler found for GET

    今天做了一件特别傻的事:哈哈哈!如果你看到这个。我就不孤独了,谢谢你!我们都傻到一起了! 问题 ExceptionHandlerExceptionResolver : Resolved [org.springframework.web.servl...

    Spring Boot系列2-全局统一异常处理

    原创: 天空和唯美 天空唯美  点击查看原文 为什么要全局统一异常处理呢?如果系统发生了异常,不做统一异常处理,前端会给用户展示一大片看不懂的文字。做统一异常处理后当异常发生后可以给用户一个温馨的提示,不至于使用户满...

    加入公众号
    加入公众号