当前位置: 首页 > 知识库问答 >
问题:

如何在使用泽西时检索HttpServletRequest数据

景帅
2023-03-14

我知道,如果我不穿运动衫,这是一件很容易的事,我会用这样的东西:

Enumeration<String> params = request.getParameterNames();
while(params.hasMoreElements()){
    String paramName = (String)params.nextElement();
    System.out.println("Parameter Name - "+paramName+", Value - "+request.getParameter(paramName)); 
}

params = request.getHeaderNames();
while(params.hasMoreElements()){
    String paramName = (String)params.nextElement();
    System.out.println("Header Name - "+paramName+", Value - "+request.getHeader(paramName));
}

params = request.getAttributeNames();
while(params.hasMoreElements()){
    String paramName = (String)params.nextElement();
    System.out.println("Attribute Name - "+paramName+", Value - "+request.getAttribute(paramName));
}

我也意识到我可以做到这一点,并完成它。

@FormParam("location") String location

但是,如果我真的想转储通过POST提交的表单的所有内容,该怎么办?

问题是,我使用Jersey作为JAX-RS的实现,并使用上面的代码输出以下内容:

Attribute Name - org.glassfish.jersey.server.spring.scope.RequestContextFilter.REQUEST_ATTRIBUTES, Value - org.glassfish.jersey.server.spring.scope.JaxrsRequestAttributes@11e035a
Attribute Name - org.glassfish.jersey.message.internal.TracingLogger, Value - org.glassfish.jersey.message.internal.TracingLogger$1@16e45c8

我猜想我的数据包含在这里:不过我不确定jaxrsquestattributes。

我知道我错过了一些东西。这应该不难吧?

更新

正如索蒂里奥斯所说,

这是获取表单转储的代码。

try {
    InputStream is = request.getInputStream();
    int i;
    char c;
    while((i=is.read())!=-1)
        {
        // converts integer to character
        c=(char)i;

        // prints character
        System.out.print(c);
        }

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

为了使其工作,我必须删除参数中的@FormParam并省略@Context HttpSerlvetRequest请求。

没有其他方法可以以更优雅的方式输出它,而不需要删除@FormParam吗?也许可以从jaxrsquestattributes中获取值?

我试图创建一个变量JaxrsRequest estAtorites,但它是一个默认类,a不能直接访问它。

共有2个答案

颛孙越
2023-03-14

可以使用以下方式访问HttpServletRequest:

@Context
private HttpServletRequest request;

这还不够吗?

何高歌
2023-03-14

根据索蒂里奥斯的评论,以下是答案:

这是方法签名

public Response authenticateUser(MultivaluedMap<String, String> form)
Iterator<String> it = form.keySet().iterator();
while(it.hasNext()){
    String theKey = (String)it.next();
    System.out.println("Parameter Name - "+theKey+", Value - "+form.getFirst(theKey)); 
}
System.out.println(form);
 类似资料:
  • 我试图用Spring jdbc和Jersey从mysql数据库中检索数据,我的代码是 Dao是getUsers()。如果我想获得所有用户,它工作良好,我可以在一个jsp上显示他们。 下面是资源类 类型异常报告 消息java.lang.NullPointerException 说明服务器遇到内部错误,导致它无法完成此请求。 注意,Apache Tomcat/7.0.68日志中提供了根本原因的完整堆栈

  • 问题内容: 我正在尝试获取Java中的发布数据。好像应该做的最简单的事情之一?我的意思是,HttpServletRequest.getParameter必须正确执行吗?那么,如何获取原始帖子数据? 我发现HttpServletRequest获得JSONPOST数据,并使用Kdeveloper的代码从请求中提取发布数据。它有效,但是有一个陷阱:我只能 一次 获取该发布数据。 这是我根据Kdevelo

  • 我是新泽西州人,我尝试使用示例中的SelectableEntityFilteringFeature:http://blog.dejavu.sk/2015/02/04/jerseys-entity-filtering-meets-jackson/#selectable 我使用以下类/文件创建了一个小型服务: 名为PersonResource的资源文件。Java语言 一个叫做Person.java的域

  • 我正在尝试使用hk2 DI在泽西岛,我已经读了一些关于这件事的文本。(我想大多数已经过时了)目前我有一个扩展ResourceConfig的类: 更新: 我应该添加我将应用程序包添加到web.xml中的扫描路径:

  • 我想创建一个类的单例实例,这个类不是作为资源或服务在Jersey中涉及的,但希望它的依赖项从Jersey ServiceLocator中注入。 我可以在ResourceConfig构造函数中手动注册该类,然后将ResourceConfig传入Grizzly工厂方法,如下所示: