我在我的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}
问题是当我访问我的应用的主页时,它没有显示页面(localhost:8080/myApp
)。它进入了api调用,而不是打开应用程序主页。
我如何摆脱这个问题?
答案 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);
}