下面是我的过滤器
package com.rest.echidna.filter;
import javax.ws.rs.ext.Provider;
import com.sun.jersey.spi.container.ContainerRequest;
import com.sun.jersey.spi.container.ContainerRequestFilter;
@Provider
public class CustomRestFilter implements ContainerRequestFilter {
@Override
public ContainerRequest filter(ContainerRequest arg0) {
System.out.println("CustomRestFilter.filter()");
return null;
}
}控制员->
package com.rest.echidna.controller;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map.Entry;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.HeaderParam;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.Response;
import com.rest.echidna.model.User;
import com.rest.echidna.model.UserList;
import com.sun.jersey.api.client.ClientResponse.Status;
@Path(value = "/user/")
public class UserRestController {
private static final List<User> usersDB = new ArrayList<User>();
static {
System.out.println("Inside JERSEY");
usersDB.add(new User("A", 26, "SSE"));
usersDB.add(new User("B", 28, "SSE"));
usersDB.add(new User("C", 29, "TA"));
usersDB.add(new User("D", 31, "TA"));
usersDB.add(new User("E", 35, "TL"));
}
@Path(value = "/getAllUser")
@GET
public Response getAllUsers(@HeaderParam(value = "Accept") String ht ) {
System.out.println(ht);
return Response.status(Status.OK).header("A", 123).entity(new UserList(usersDB)).build();
}
@Path(value = "/getAllUser/{name}")
@GET
public User getUser(@PathParam("name") String name,@Context HttpHeaders ht) {
for(Entry<String, List<String>> m:ht.getRequestHeaders().entrySet()){
System.out.println(m.getValue());
}
User resultUser = null;
for (User u : usersDB) {
if (u.getName().equalsIgnoreCase(name)) {
resultUser = u;
}
}
return resultUser;
}
@Path(value = "/getAllUser/{name}")
@DELETE
public UserList deleteUser(@PathParam("name") String name) {
Iterator<User> it = usersDB.iterator();
while (it.hasNext()) {
if (it.next().getName().equalsIgnoreCase(name)) {
it.remove();
}
}
return new UserList(usersDB);
}
@Path(value = "/getAllUser/create")
@POST
public UserList createUser(User user) {
System.out.println(user);
usersDB.add(user);
return new UserList(usersDB);
}
@Path(value = "/getAllUser/{name}")
@PUT
public UserList createUser(@PathParam("name") String name, User user) {
User tempUser = null;
Iterator<User> it = usersDB.iterator();
while (it.hasNext()) {
tempUser = it.next();
if (tempUser.getName().equalsIgnoreCase(name)) {
tempUser.setAge(user.getAge());
tempUser.setRole(user.getRole());
it.remove();
break;
}
}
usersDB.add(tempUser);
return new UserList(usersDB);
}
}web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>RESTAPIJersey1</display-name>
<welcome-file-list>
<welcome-file/>
</welcome-file-list>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>
com.sun.jersey.spi.container.servlet.ServletContainer
</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.rest.echidna</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
<param-value>com.rest.echidna.filter.CustomRestFilter</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>罐子->

我已经评论了过滤器参数,或者即使我删除了注释,它也不会工作。点击url后,没有调用过滤器,但是主控制器正在被调用,我已经在googled上搜索了它,但是没有找到适合泽西1.19 Filter.Please帮助的解决方案!!
在本地服务器中命中的URL -> http://localhost:8080/RESTJersey/rest/user/getAllUser
发布于 2017-08-08 09:17:13
您的init param名称不正确。
请把它从
com.sun.jersey.spi.container.ContainerRequestFilter至
com.sun.jersey.spi.container.ContainerRequestFilters更新:
下面是对您的项目所做的更改,如下所示
jersey-grizzly2根据泽西岛1,项目需要有两个依赖项
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.19.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-grizzly2</artifactId>
<version>1.19.1</version>
</dependency>CustomRestFilter中返回相同的请求对象。我更新了你的问题。UserList对象的代码。如果您想将其返回为json,请查看这里这就是我在我的控制台上看到它的方式:
09-Aug-2017 19:24:02.503 INFO [http-nio-8080-exec-32] com.sun.jersey.server.impl.application.WebApplicationImpl._initiate Initiating Jersey application, version 'Jersey: 1.19.1 03/11/2016 02:08 PM'
CustomRestFilter.filter()
Inside JERSEY
text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8https://stackoverflow.com/questions/45563342
复制相似问题