2013-10-18 66 views
6

我想設置一個簡單的應用程序與澤西島2.3服務一個獨立的Tomcat的jsp頁面。我已經嘗試了很多來自網絡的howto,但是他們中的大多數都使用Jersey和Grizzly解釋而不是Tomcat。所以我無法找到我的問題的解決方案/解釋爲什麼jsp沒有被我的應用程序提供服務。有人知道這裏有什麼錯誤或缺失嗎?請在我的申請下面找到。澤西與MVC模板和Tomcat

的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> 

回答

6

您使用的舊物業(com.sun.jersey.config.property.JSPTemplatesBasePath)爲基本路徑名。嘗試使用新的

jersey.config.server.mvc.templateBasePath.jsp 

(見JspMvcFeatureMvcFeature屬性)。

澤西島2.x目前不支持其他屬性(com.sun.jersey.config.property.WebPageContentRegex)。

+0

該鏈接已死亡。新的是https://jersey.java.net/nonav/apidocs/latest/jersey/ –

+0

謝謝,也修復了答案。 –

2

這裏有一些州過濾器初始化參數,你可能想看看(我使用的是2.5澤西Tomcat內7 - 我的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參數可能對你的情況有用。您還可以查看靜態內容配置以及跟蹤哪些內容您應該在某個時刻找到有用的內容。

+0

我想從我的ReST服務中返回一個JSP,但是在完成'web.xml'中的所有配置之後,無法在響應中獲得JSP。點擊URL後,我只能看到「{」templateName「:」/ TerstJSP「,」model「:[],」resolvingClass「:null,」templateNameAbsolute「:true}'作爲迴應。 –