首页 > 解决方案 > Jersey 2.x JSP 页面重定向

问题描述

我有这个问题。我正在尝试使用 Jersey 2.x 来制作 REST api,并且我想将 jsp 页面用于我的模板(没有 springspringboot的所有内容,我无法将它们包含到我的项目中)。我有一个具有这种结构的 Maven 项目:

在此处输入图像描述

pom.xml 具有以下依赖项:

<dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.core</groupId>
      <artifactId>jersey-client</artifactId>
      <version>2.27</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.core</groupId>
      <artifactId>jersey-common</artifactId>
      <version>2.27</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.core</groupId>
      <artifactId>jersey-server</artifactId>
      <version>2.27</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.containers</groupId>
      <artifactId>jersey-container-servlet</artifactId>
      <version>2.27</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.inject</groupId>
      <artifactId>jersey-hk2</artifactId>
      <version>2.27</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.media</groupId>
      <artifactId>jersey-media-json-jackson</artifactId>
      <version>2.27</version>
    </dependency>
    <dependency>
      <groupId>org.glassfish.jersey.ext</groupId>
      <artifactId>jersey-mvc-jsp</artifactId>
      <version>2.27</version>
    </dependency>
  </dependencies>

web.xml是:

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
        <servlet-name>testjsp</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
             <param-name>javax.ws.rs.Application</param-name>
             <param-value>it.testjsp.config.JerseyConfig</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>testjsp</servlet-name>
        <url-pattern>/api/*</url-pattern>
    </servlet-mapping>
</web-app>

当我使用 tomcat 运行我的应用程序时,以下 url http://localhost/testjsp

正确重定向index.hml

我已经通过以下方式配置了 JerseyConfig 类:

@ApplicationPath("/api")
public class JerseyConfig extends ResourceConfig {

    public JerseyConfig() {
        packages("it.testjsp.endpoints");

        register(JspMvcFeature.class);

        property("jersey.config.server.mvc.templateBasePath", "/WEB-INF/jsp");
    }
}

为了映射所有暴露在该包中的端点并将 jsp 页面使用到 WEB-INF/JSP 中。

我有两个端点:

@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
public class TestEndPoint {

    @GET
    public Map<String, Object> testApi() {
        System.out.println("test jersey 2.27");
        Map<String, Object> result = new HashMap<String, Object>();

        result.put("result", "test jersey 2.27");
        return result;
    }
}

这是在 TestEndPoint 类中,应用程序按我的预期响应(http://localhost/testjsp/api/test返回 json)。

PagesEndPoint 是:

@Path("/pages")
public class PagesEndPoint {

    @GET
    @Path("{pageName}")
    public Viewable getPage(@PathParam("pageName") String pageName) {
        System.out.println("Try " + pageName + ".html");
        return new Viewable("/" + pageName + ".html");
    }

}

但是当我用tomcat运行应用程序时,总是出现404。可以使用jsp(或其他html页面)吗?我做错了什么?谢谢您的帮助

标签: javahtmlrestjspjersey-2.0

解决方案


推荐阅读