我正在尝试使用Jersey 2.3在独立的Tomcat中为jsp页面设置一个简单的应用程序.我已经从网上尝试了很多方法,但是他们中的大部分都在使用泽西与Grizzly而不是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>您正在使用旧属性(com.sun.jersey.config.property.JSPTemplatesBasePath)名称作为基本路径.尝试使用新的
jersey.config.server.mvc.templateBasePath.jsp
(参见JspMvcFeature和MvcFeature中的属性).
目前,Jersey 2.x不支持其他属性(com.sun.jersey.config.property.WebPageContentRegex).