是否可以从 servlet 内部以编程方式设置请求上下文路径?

Upg*_*ave 6 java servlets

这是一个特殊情况,我陷入了处理“企业”网络应用程序的困境。企业应用程序正在调用request.getContext()它并将其与另一个字符串进行比较。

我发现我可以使用 getServletContext.getContextPath() 获取 servlet 上下文路径。是否可以从 servlet 内部设置请求上下文路径?

Bal*_*usC 5

您无法设置它,但您可以在 的帮助下更改其结果HttpServletRequestWrapper

public class MyRequest extends HttpServletRequestWrapper {

    public MyRequest(HttpServletRequest request) {
        super(request);
    }

    @Override    
    public String getContextPath() {
        return "a different context path"; // TODO: implement accordingly.
    }

}
Run Code Online (Sandbox Code Playgroud)

创建一个Filter基本上执行以下操作的doFilter()方法,并将其映射为感兴趣的 URL 模式的早期过滤器。

chain.doFilter(new MyRequest((HttpServletRequest) request), response);
Run Code Online (Sandbox Code Playgroud)