使用jersey& amp;在一个宁静的webapp中提供HTML / JSP; java的

时间:2013-08-13 22:31:50

标签: rest jersey web.xml

我似乎无法弄明白。尝试使用注释和web.xml来配置webcontent的路径,但不断获取未知资源。

泽西岛主要:

@ApplicationPath("/")
public class App extends PackagesResourceConfig {
   public App() {
        super("webapp.resources");
    }
}

泽西岛默认路径“/”:( hello world works!index.html \ jsp不

@Path("/")
@Produces(MediaType.TEXT_HTML)
public class RootResource
{
    @GET 
    public String index(@Context HttpServletRequest request) {
        return "hello world";
    }
}

我尝试了什么:

  1. 多个web.xml配置
  2. 提供可查看的内容(错误无法解析模板index.jsp)
  3. 您认为提供html或jsp等网页的解决方案是什么?

    有没有办法用泽西(没有弹簧!)和可见的\模板?

3 个答案:

答案 0 :(得分:3)

回答我的问题。 futuretelematics的解决方案应该适用于大多数人。这是一个已知且有效的解决方案。所以当我这样做时为什么不起作用:

问题1: 经过多次摆弄后,我发现一旦我将应用程序根路径从“/”更改为“/ api”(或/ ???),突然一切都开始发挥作用。必须是球衣的事情。我在某处阅读为了使“/”工作,您应该使用web.xml中的过滤器进行映射。我很想知道是否有人成功地做到了这一点。

所以现在它用JSP提供我的初始页面。那个页面我可以用jsons以休息方式操作。

问题2: 使@viewable工作只是在WebContent中创建正确的文件夹结构路径(com / webapp / model / index(< -jsp))。这就是可查看页面重定向的工作原理。

答案 1 :(得分:1)

这应该很容易;尝试以下方法:

/WEB-INF/web.xml文件:

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee" 
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">

    <display-name>Your REST end Point</display-name>

    <!-- /////////////////////// JERSEY (NO SPRING) ///////////////////////// -->
    <servlet>
        <servlet-name>MyRESTEndPoint</servlet-name>
        <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>

        <!- Package where jersey will scan for resources ->
        <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>com.mycompany</param-value>
        </init-param>

        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyRESTEndPoint</servlet-name>
        <url-pattern>/MyRESTEndPoint/*</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

AT软件包com.mycompany(在web.xml上查看 )放置应用程序类:

package com.mycompany;

public class MyApp 
     extends Application {
    @Override
    public Set<Class<?>> getClasses() {
        Set<Class<?>> s = new HashSet<Class<?>>();
        s.add(MyResource.class);
        // ... add other resources
        return s;
    }
}

创建资源,如:

@Path("myResourcePath")
public class R01ERESTResourceForStructure {
    @GET @Path("{myResourceId}") 
    @Produces(MediaType.APPLICATION_XML)
    public Response load(@PathParam("myResourceId") final String id) {
         ....
    }
}

您的网址应为:like / MyRESTEndPoint / myResourcePath / myResourceId

如果您使用的是SPRING或GUICE,则web.xml应该有点不同

答案 2 :(得分:0)

Jersey为jersey-mvc-jsp扩展模块中的JSP模板提供支持

查看official doc