springboot入门09 – 实现伪静态

最近想了下springboot前端路径的伪静态实现。

通过百度最容易找到的方案是使用urlrewritefilter这个依赖。不过一想到要为这么一件事情就添加一个依赖,还要再添加一个配置文件,还要挨个写一遍所有的路径映射就觉得头疼,所以pass。

跟踪了一下springboot WEB请求处理的过程,找到了一个关键类:UrlPathHelper。在获取Handler之前,由这个类负责解析请求路径。正好可以在WebMvcConfigurer中配置UrlPathHelper类的实例,这就给了我们动些手脚的空间。

更贴心的是,springboot获取请求路径的第一选择不是调用HttpServletRequest.getRequestURI()方法或者HttpServletRequest.getServletPath()方法,而是从HttpServletRequestattribute中获取,这样能省下不少力气。

来看下实现方式。

1. 实现伪静态路径解析类

伪静态路径解析类是UrlPathHelper类的一个子类,通过重写getRequestUri()方法实现了伪静态路径的处理。

代码如下:

代码中的核心部分是下面两句:

在后面处理中,springboot会优先从Attribute中获取请求路径。

2. 添加WebMvcConfigurer配置类

然后需要在WebMvcConfigurer中配置PseudoStaticPathHelper实例。

实现方式如下:

然后——这样就可以了。

不写示例应用了。在 Calf 这个项目中有类似的用法,有需要就看看。

End!

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据