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.WebUtilspublic static final String FORWARD_REQUEST_URI_ATTRIBUTE = "javax.servlet.forward.request_uri";当然在非spring mvc中你也可以直接使用这样的方法获取String originatingRequestUri=(String)request.getAttribute("javax.servlet.forward.request_uri");