【发布时间】:2014-03-02 08:02:18
【问题描述】:
我正在尝试使用 Jersey 2.6 返回一个 Viewable 类。 我已经阅读了很多示例,但似乎没有任何效果。我只是得到 404 响应,尽管我可以看到请求映射确实有效。这里有详细信息:
web.xml
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<module-name>helloworld-spring</module-name>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>SpringApplication</servlet-name>
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.proj.configuration.JerseyConfiguration</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</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>
<init-param>
<param-name>jersey.config.server.mvc.templateBasePath</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.provider.packages</param-name>
<param-value>rest</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>SpringApplication</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
JerseyConfiguration 类
public class JerseyConfiguration extends ResourceConfig {
/**
* Register JAX-RS application components.
*/
public JerseyConfiguration () {
register(HomeResource.class);
register(JspMvcFeature.class);
// Logging.
register(LoggingFilter.class);
// Tracing support.
property(ServerProperties.TRACING, TracingConfig.ON_DEMAND.name());
}
}
HomeResource 类
@Path("jersey-hello")
public class HomeResource {
@GET
@Path("/myPage")
@Produces(MediaType.TEXT_HTML)
public Viewable getHello() {
return new Viewable("/myPage.jsp", this);
}
}
我在 /WEB-INF/jsp 文件夹中有 myPage.jsp
我尝试了许多组合,例如将 myPage 不带 .jsp 等等...似乎没有任何效果
这里是我要调用的网址:
http://localhost:8080/jersey-hello/myPage
【问题讨论】:
-
我不是专家,也不是菜鸟(我只是想了解球衣并开始阅读一些关于使用它的知识),但我不应该将我的
.jsp/.html页面与 @987654326 放在一起@ 文件夹?而不是将这些页面保存在同一个文件夹中。 -
将 jsp 页面称为“jsp/myPage.jsp”或“/jsp/myPage.jsp”有帮助吗?
-
我已经尝试了所有可能的方法来引用这些名称。我放弃了,现在只使用 jersey 来生成 jsons。