0
下面是矿过滤JAX RS(新泽西1.19)不能够调用滤波器
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后没有调用过滤器,但主控制器正在调用。我已经使用了它,但无法找到泽西岛1.19 Filter的适当解决方案。请帮助!
网址打在本地服务器 - > http://localhost:8080/RESTJersey/rest/user/getAllUser
不,我已经改变了它com.sun.jersey .spi.container.ContainerRequestFilters但没有用。在控制台中没有获得任何输出。 –
你能否更新完整的'web.xml'和'CustomRestFilter.java'? –
我已经更新了一切。任何帮助我都不想使用泽西岛2,如果它可以用泽西岛1.19来完成的。任何地方过滤器方法的签名都是不同的我:e它是无效的,但是当我执行时它返回ContainerRequest。你可以请在本地尝试,并请提出建议。 –