Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java jetty:存储请求特定信息_Java_Android_Jakarta Ee_Jersey - Fatal编程技术网

Java jetty:存储请求特定信息

Java jetty:存储请求特定信息,java,android,jakarta-ee,jersey,Java,Android,Jakarta Ee,Jersey,我正在用basicauth创建某种restfulapi。为了处理身份验证信息,我添加了一个自定义ContainerRequestFilter。这很好,但是我想设置全局信息,比如调用方的“用户名”。如何设置全局/请求特定的信息或属性,并在“控制器”方法中获取它们 //一些过滤器 公共类AuthFilter实现ContainerRequestFilter{ //... @凌驾 公共无效筛选器(ContainerRequestContext requestContext)引发IOException{

我正在用basicauth创建某种restfulapi。为了处理身份验证信息,我添加了一个自定义ContainerRequestFilter。这很好,但是我想设置全局信息,比如调用方的“用户名”。如何设置全局/请求特定的信息或属性,并在“控制器”方法中获取它们

//一些过滤器
公共类AuthFilter实现ContainerRequestFilter{
//...
@凌驾
公共无效筛选器(ContainerRequestContext requestContext)引发IOException{
setProperty(“用户名”、“someusername”);
}
//...
}
//“路由处理程序”示例
@得到
@产生(MediaType.APPLICATION_JSON)
公共列表getEvents(){
//如何获取用户名属性?!
}

您可以将
HttpServletRequest
注入控制器,并使用
HttpServletRequest.getAttribute
检索您在
ContainerRequestContext.setProperty
中设置的值

@GET 
@Produces(MediaType.APPLICATION_JSON)
public List<Event> getEvents(@Context HttpServletRequest req) {
    String username = (String) req.getAttribute("username");  
    ...
}
@GET
@产生(MediaType.APPLICATION_JSON)
公共列表getEvents(@Context-HttpServletRequest-req){
字符串用户名=(字符串)req.getAttribute(“用户名”);
...
}

我在Glassfish/Jersey上使用过,它工作正常,因此应该可以在您的环境中工作。

我总是收到一条“Caused by:java.lang.ClassNotFoundException:javax.servlet.http.HttpServletRequest”错误消息。我在pom中添加了ServletAPI依赖项,没有任何更改。根据我查看的文档,该类是Jetty的一部分。你用的是什么版本?你能发布日志吗?我发现了失败:在我的过滤器中,我调用
requestContext.setProperty(“username”,phone\u username),但在控制器内
(Long)request.getAttribute(“用户名”)为空。发生了什么?
@GET 
@Produces(MediaType.APPLICATION_JSON)
public List<Event> getEvents(@Context HttpServletRequest req) {
    String username = (String) req.getAttribute("username");  
    ...
}