无法使用Jersey服务器加载JSP页面
我的web服务使用jersey 2.4,无法让主页加载index.jsp。我制作了一个IndexService POJO来尝试从那里加载它,但这不起作用。我只想使用主页,而不是IndexService POJO。已到达POJO,但返回以下内容: HTTP状态500-org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException:未找到媒体类型为text/html、类型为class org.glassfish.jersey.server.mvc.Viewable、genericType=class org.glassfish.jersey.server.mvc.Viewable的MessageBodyWriter My web.xml文件:无法使用Jersey服务器加载JSP页面,jsp,jersey,jersey-2.0,Jsp,Jersey,Jersey 2.0,我的web服务使用jersey 2.4,无法让主页加载index.jsp。我制作了一个IndexService POJO来尝试从那里加载它,但这不起作用。我只想使用主页,而不是IndexService POJO。已到达POJO,但返回以下内容: HTTP状态500-org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException:未找到媒体类型为text/html、类型为class org.glassfish.j
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>jersey-servlet</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>jersey.config.server.provider.packages</param-name>
<param-value>rest</param-value>
</init-param>
<init-param>
<param-name>jersey.config.server.mvc.templateBasePath.jsp</param-name>
<param-value>/WEB-INF/jsp/</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-servlet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
您需要添加到应用程序的配置中。由于您正在使用web.xml
配置应用程序(资源和提供者的包扫描,设置属性),因此需要添加以下init参数
:
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.server.mvc.jsp.JspMvcFeature</param-value>
</init-param>
jersey.config.server.provider.classnames
org.glassfish.jersey.server.mvc.jsp.JspMvcFeature
Michal Gajdos的回答是正确的,但我还想添加一些细节,说明通过扩展JAX-RS应用程序
类或JerseyResourceConfig
类来完成配置的情况
请注意,在Jersey 2.x中,必须显式注册要使用的扩展特性()
@javax.ws.rs.ApplicationPath(“/rest”)
公共类应用程序配置扩展应用程序{
@凌驾
public Set>resources=new java.util.hashset谢谢。它真的帮了我很多忙
@Path("/")
public class IndexService {
@GET
@Path("/index")
@Produces(MediaType.TEXT_HTML)
public Viewable indexPage() {
return new Viewable("/index.jsp", null);
}
}
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.server.mvc.jsp.JspMvcFeature</param-value>
</init-param>
@javax.ws.rs.ApplicationPath("/rest")
public class ApplicationConfig extends Application {
@Override
public Set<Class<?>> getClasses() {
Set<Class<?>> resources = new java.util.HashSet<Class<?>>();
addRestResourceClasses(resources);
resources.add(org.glassfish.jersey.server.mvc.jsp.JspMvcFeature.class);
return resources;
}
// ...
}