jsp中获取原始uri的方法

时间:2020-08-29

现在的spring等web框架在jsp中使用request.getRequestUri()是获取不到原始的uri的,因为此时的request已经不是一开始的request了,jsp中的request是一个新的ForwardRequest,request.getRequestUri这个方法在jsp中返回的只是jsp文件的路径,想要获取原始uri就得寻找其他方法,还好spring提供了如下的方法获取原始的uri

    /**
        * Return the request URI for the given request. If this is a forwarded request,
        * correctly resolves to the request URI of the original request.
    */

String org.springframework.web.util.UrlPathHelper.getOriginatingRequestUri(HttpServletRequest request)

研究这个方法发现实际上它是从request属性中获取原始uri,实际上从servlet2.4后就有了规范,可以从request的属性中获取,这个属性名可以通过下面的方法引用


org.springframework.web.util.WebUtils 
public static final String FORWARD_REQUEST_URI_ATTRIBUTE = "javax.servlet.forward.request_uri";
当然在非spring mvc中你也可以直接使用这样的方法获取
String originatingRequestUri=(String)request.getAttribute("javax.servlet.forward.request_uri"); 
 
 





【推荐】 spring-cloud-gateway 自定义lb实现
【推荐】 SpringCloud NamedContextFactory 原理与使用
【推荐】 分析Druid 连接池中SQL语法树的基本原理
【推荐】 如何使用Druid访问器修改sql