7

スタンドアロンの Tomcat で jsp ページを提供する Jersey 2.3 を使用して単純なアプリケーションをセットアップしようとしています。私は Web から多くのハウツーを試しましたが、それらのほとんどは、Tomcat ではなく、Grizzly で Jersey を使用して説明しています。そのため、アプリケーションによって jsp が提供されない理由について、問題の解決策や説明が見つかりませんでした。誰かがここで何が間違っているか、何が欠けているか考えていますか? 私のアプリケーションの下に見つけてください。

pom.xml

...
<dependencies>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>2.3</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.ext</groupId>
        <artifactId>jersey-mvc-jsp</artifactId>
        <version>2.3.1</version>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.0</version>
            <executions>
                <execution>
                    <id>tomcat-run</id>
                    <goals>
                        <goal>exec-war-only</goal>
                    </goals>
                    <phase>package</phase>
                    <configuration>
                        <path>/jhello</path>
                        <enableNaming>false</enableNaming>
                        <finalName>jhello-standalone.jar</finalName>
                        <charset>utf-8</charset>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

web.xml

<filter>
    <filter-name>jhello</filter-name>
    <filter-class>org.glassfish.jersey.servlet.ServletContainer</filter-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.granatasoft.playground.jersey</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.property.JSPTemplatesBasePath</param-name>
        <param-value>/WEB-INF/views</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.config.property.WebPageContentRegex</param-name>
        <param-value>/(decorators|scripts|styles|resources|(WEB-INF/views))/.*</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>jhello</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

HelloJersey.java

package com.granatasoft.playground.jersey;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.glassfish.jersey.server.mvc.Viewable;

@Path("/hello")
public class HelloJersey {
@GET
@Produces(MediaType.APPLICATION_JSON)
public String sayJsonHello() {
    return "{'hello': 'jersey'}";
}

@GET
@Produces(MediaType.TEXT_HTML)
public Viewable sayHtmlHello() {
    return new Viewable("hello");
}
}

hello.js

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"    "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Hello JSP</title>
</head>
<body>
<h1>Hello JSP</h1>
</body>
</html>
4

2 に答える 2

7

com.sun.jersey.config.property.JSPTemplatesBasePathbase-path に古いプロパティ ( ) 名を使用しています。新しいものを使ってみる

jersey.config.server.mvc.templateBasePath.jsp

( JspMvcFeatureおよびMvcFeatureのプロパティを参照してください)。

他のプロパティ ( com.sun.jersey.config.property.WebPageContentRegex) は、現在、Jersey 2.x ではサポートされていません。

于 2013-10-21T12:36:01.860 に答える
2

ここにいくつかのジャージーフィルターの初期パラメーターを示します (私は Tomcat 7 内でジャージー 2.5 を使用しています - 私の web.xml の残りの部分はあなたのものと似ています):

    <init-param>
        <param-name>jersey.config.server.mvc.templateBasePath.jsp</param-name>
        <param-value>/WEB-INF/jsp</param-value>
    </init-param>
    <init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>org.glassfish.jersey.server.mvc.jsp.JspMvcFeature</param-value>
    </init-param>
    <init-param>
        <param-name>jersey.config.server.tracing</param-name>
        <param-value>ALL</param-value>
    </init-param>
    <init-param>
        <param-name>jersey.config.servlet.filter.staticContentRegex</param-name>
        <param-value>(/index.jsp)|(/(content|(WEB-INF/jsp))/.*)</param-value>
    </init-param>

JspMvcFeature パラメータは、状況によっては役立つ場合があります。また、静的コンテンツの構成とトレースを確認することもできます。これは、ある時点で確実に役立つはずです。

于 2013-12-24T03:03:25.827 に答える