当前位置: 首页 > 面试题库 >

如何在HttpServletRequest中设置参数?

公良同
2023-03-14
问题内容

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

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


问题答案:

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

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

如果您走这条路线,则应使用Filter将替换HttpServletRequestHttpServletRequestWrapper

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);
}


 类似资料:
  • 问题内容: 我有一个应用程序,它基本上是服务的代理。该应用程序本身是在Jersey上构建的,由Jetty提供。我有这个资源方法: 用户提交POST表单。所有POST请求都通过此方法。除了一个细节外,UriInfo和HttpServletRequest被适当地注入:似乎没有参数。这是我从终端发送的请求: 此处的POST正文显然包含两个参数:foo和biz。但是,当我尝试在代码()中获取它们时,结果是

  • 我有一个应用程序,基本上是一个服务的代理。该应用程序本身是基于Jersey构建的,由Jetty提供服务。我有这个资源方法: 用户提交POST表单。所有POST请求都通过此方法。UriInfo和HttpServletRequest被适当地注入,除了一个细节:似乎没有参数。这是我从终端发送的请求: 这里,POST正文显然包含两个参数:foo和biz。但当我尝试在代码中获取它们时(),结果是一个大小为0

  • 我正在处理一个需要LWJGL的项目,我正试图启动并运行该项目,但在设置JVM启动参数方面遇到了一个障碍。 LWJGL的文档如下: 将-djava.library.path系统属性(作为JVM启动参数)设置为包含本机文件的文件夹 我得到的错误是: 此外,我的lwjgl jar位于我的项目文件夹中可能是重要的信息。

  • Docker for windows:2.0.0.3(31259) 我在docker中运行elasticsearch和kibana。elasticsearch运行。但是kibana不能运行。它总是尝试连接超文本传输协议://elasticsearch: 9200。我设置了ELASTICSEARCH_URLkibana命令。但不起作用 要求http://localhost:5601/.Kibana服

  • 问题内容: 我正在尝试使用play.api.libs.ws.WS进行发布,但是我不知道如何设置参数,我的代码是: .post 需要(T主体,play.api.http.Writeable wrt,play.api.http.ContentTypeOf ct),但我不知道如何在此处传递参数。该文档仅说明: 我如何设置内容例如。 param1 = foo 和 param2 = bar ? 问题答案:

  • 问题内容: 我试图在Windows 7 64位的Netbeans 7.1 Java项目中设置命令行参数。 Netbeans没有传递我给它的参数。 我转到-> -> ->并在“自变量”旁边键入自变量,但是自变量未传递到程序。我如何通过他们? 问题答案: 我猜您正在使用(或shift-F6)而不是运行文件。NetBeans 7.1帮助文件(F1是您的朋友!)说明Arguments参数: 添加参数以在应