У меня есть эта проблема.Я пытаюсь использовать Jersey 2.x для создания REST API, и я хотел бы использовать страницы JSP для моего шаблона (все без spring или springboot , я не могу включить их в свой проект).У меня есть проект 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-страницы)?Что я сделал не так?Спасибо за помощь