SpringBoot-整合UrlRewriter

SpringBoot-整合UrlRewriter

一、介绍

 Urlrewriter的作用主要是重写url路径,以此来隐藏真实的路径,如:http://www.xxxx.com/crm_index.do ,而真实访问的是 http://www.xxxx.com/crm/index.jsp。还有一种就是,在高并发访问的时候,可以更具是否用静态文件来进行路径的重写。

二、整合

第一步 jar包

<dependency>
     <groupId>org.tuckey</groupId>
     <artifactId>urlrewritefilter</artifactId>
     <version>4.0.3</version>
</dependency>

第二步 配置类

import java.io.IOException;

import javax.servlet.FilterConfig;
import javax.servlet.ServletException;

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;

@Configuration
public class UrlRewriteFilterConfig extends UrlRewriteFilter {

    @Value("classpath:/urlRewrite.xml")
    private Resource resource;

    @Override
    protected void loadUrlRewriter(FilterConfig filterConfig) throws ServletException {
        try {
            // lemon-user 自定义的系统名称 
            Conf conf = new Conf(filterConfig.getServletContext(), resource.getInputStream(), resource.getFilename(),
                "lemon-user"); 
            checkConf(conf);
        } catch (IOException ex) {
            throw new ServletException("Unable to load URL rewrite configuration file from classpath:/urlRewrite.xml", ex);
        }
    }
}

第三步 配置文件




<urlrewrite>
    <rule>
        <from>^/test.html$from>
        <to type="redirect">/testto>
    rule>
urlrewrite>

到此整合完成,下面我们进行测试,启动项目,访问127.0.0.1:80/test.html,回车后url变为127.0.0.1:80/test,即成功。

小提示:

问:应用拆分,同一个域名,如何映射各个应用?

(总不至于,每个接口的url,前面都加上应用区分的url吧,如“/u/user/login”,"/a/admin/login",/u 和 /a 仅仅用来区分应用,如果我们在代码中都加上,肯定不是一个好的解决方案)

答:在应用端,使用UrlRewriter帮助我们重写请求,这样可以做到代码层面不加上区分应用的Url,直接配置在UrlRewriter中,重写Url即可。(解决方案不止这一种)

UrlRewriter快速了解文章入口: 关于UrlRewrite的使用
示例:

    
    <rule>
        <from>^/u(.*)$from>
        <to>$1to>
    rule>

你可能感兴趣的:(springboot)