Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用Jersey服务器加载JSP页面_Jsp_Jersey_Jersey 2.0 - Fatal编程技术网

无法使用Jersey服务器加载JSP页面

无法使用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

我的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文件:

<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
应用程序
类或Jersey
ResourceConfig
类来完成配置的情况

请注意,在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;
    }

    // ...
}