我如何获得 JSP 页面的完整 URL。
例如,URL 可能是http://www.example.com/news.do/?language=nl&country=NL
如果我执行以下操作,我总是会得到 news.jsp 而不是 .do
out.print(request.getServletPath());
out.print(request.getRequestURI());
out.print(request.getRequest());
out.print(request.getContextPath());
我正在使用子类HttpServletRequestWrapper对请求参数进行一些翻译,并在第一次请求时缓存翻译的值.例如,第一次getQueryString()被调用,我调用super.getQueryString()并计算我想要的结果并将其保存在字段中,然后返回它.下次,我只使用缓存的结果.
除非有一些"转发",否则这种方法就像魅力一样.转发请求时,Tomcat会替换原始请求,因此我的缓存查询字符串不会更改,转发的页面将获取原始查询字符串,而不是转发到的字符串.
覆盖setRequest()清除缓存的方法也无济于事,好像请求被包装两次一样,它调用setRequest内包装器(不是我的),我无法知道它何时发生.
我正在寻找一种在包装的请求层次结构发生变化时得到通知的方法,以便在有"转发"时我可以清除缓存.
我知道jsp中的包含和外部文件可以通过以下方式完成:
<%@ include file="banner.jsp" %>
Run Code Online (Sandbox Code Playgroud)
但是有没有办法在java类/对象中执行此操作?