清空休息路径配置,无法访问应用页面

时间:2016-10-21 09:38:55

标签: java

我在我的java应用程序中配置了restEasy来创建api服务,如下所示

在pom中添加了依赖项

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxrs</artifactId>
    <version>2.2.1.GA</version>
</dependency>

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jackson-provider</artifactId>
    <version>2.2.1.GA</version>
</dependency>

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jaxb-provider</artifactId>
    <version>2.2.0.GA</version>
</dependency>

创建一个rest config类,如下所示,

@ApplicationPath("/")
public class RestClass extends Application {
    private Set<Object> singletons = new HashSet<Object>();

    public RestClass() {
        singletons.add(new Stimulant());
    }

    @Override
    public Set<Object> getSingletons() {
        return singletons;
    }
}

这是我的服务类,它提供了json数据,

@Path(value = "/")
public class Stimulant {

    @GET
    @Path(value = "/{param}")
    @Produces(MediaType.APPLICATION_JSON)
    public Response getMsg(@PathParam(value = "param") String appId) {
        String token = documentDAO.mobileAppToken(appId);
        return Response.status(200).entity(token).build();
    }

我可以在点击网址localhost:8080/myApp/{whatever}

时获取json数据

问题是当我访问我的应用的主页时,它没有显示页面(localhost:8080/myApp)。它进入了api调用,而不是打开应用程序主页。

我如何摆脱这个问题?

1 个答案:

答案 0 :(得分:0)

你应该使用Filter servlet。

让我们继续将您的rest配置为“/ f”。在浏览器中点击网址时,您可以移除/f并转发您的请求,并在其需要的位置附加“/ f”。

简单代码,

public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws IOException, ServletException {
        if (request instanceof HttpServletRequest) {
        String path = ((HttpServletRequest) request).getServletPath();
        String newPath = null;

                newPath = "f" + path;
            }

        } else {
            newPath = path;
        }
        request.getRequestDispatcher(newPath).forward(request, response);
        return;
    }
    chain.doFilter(request, response);
}