java - 如何在 HttpServletRequest 中设置参数?

标签 java web-applications

我正在使用 javax.servlet.http.HttpServletRequest 来实现 Web 应用程序。

使用getParameter方法获取请求的参数没有问题。但是我不知道如何在我的请求中设置参数。

最佳答案

你不能,不使用标准 API。 HttpServletRequest 表示服务器收到的请求,因此添加新参数不是有效的选项(就 API 而言)。

您原则上可以实现 HttpServletRequestWrapper 的子类,它包装原始请求,并拦截 getParameter() 方法,并在转发时传递包装的请求。

如果你走这条路,你应该使用 Filter 将你的 HttpServletRequest 替换为 HttpServletRequestWrapper:

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    if (servletRequest instanceof HttpServletRequest) {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        // Check wether the current request needs to be able to support the body to be read multiple times
        if (MULTI_READ_HTTP_METHODS.contains(request.getMethod())) {
            // Override current HttpServletRequest with custom implementation
            filterChain.doFilter(new HttpServletRequestWrapper(request), servletResponse);
            return;
        }
    }
    filterChain.doFilter(servletRequest, servletResponse);
}

关于java - 如何在 HttpServletRequest 中设置参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/892537/

相关文章:

java - 标志或每个标志可能值的单独方法?

java - XMLHttpRequest跨域资源共享(qooxdoo和tomcat)

java - Web 服务器到应用程序服务器的通信

Java Hashmap 迭代 : Look at two values at once?

java - 将子类 List 转换为基类 List

Python/ flask : Application is running after closing

java - Web应用的Ping实现方法

web-applications - 多语言 Web 应用程序的设计注意事项

java - `onPageFinished` 是在 `onReceivedError` 之后调用的吗?

ios - 如何通过移动客户端 oauth-login 服务器应用程序(尤其是 iOS、Twitter,但通常也是如此)