java - Jersey 2.x JSP 页面重定向
问题描述
我有这个问题。我正在尝试使用 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页面)吗?我做错了什么?谢谢您的帮助
解决方案
推荐阅读
- java - JavaFx 图形窗口缩放问题
- scala - Spark数据框中的结构解析数组
- r - R:使用 sapply 或 str_replace_all 而不是 FindReplace
- nginx - Nginx 坏网关烧瓶 + UWSGI
- python - 第一个子图(x 轴损坏的 2 个子图)未可视化
- android - 如何在 webview 中加载 .rtf 文件?
- php - 如何在安装期间解决 Magento 2(2.4 版本)localhost 500 服务器错误
- python-3.x - Matplotlib MultiCursor 未显示在多个子图上
- java - How can i center textviews in a table row that is constantly being generated dynamically?
- javascript - VueJS:基于 v-select 项目的动态道具