2

I Can't seem to figure it out. tried to use annotations and web.xml to configure paths to webcontent but keep getting unknown resources.

Jersey main:

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

Jersey default path "/": (hello world works! index.html\jsp does not)

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

What I've tried:

  1. multiple web.xml config
  2. serving viewables (error cannot resolve template index.jsp)

what do you think can be a solution to serve pages like html or jsp?

is there a way to do it with jersey (no spring!) and viewable\templates?

4

3 回答 3

3

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

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

所以现在它使用 JSP 为我的初始页面提供服务。该页面我可以用 jsons 以一种休息的方式进行操作。

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

于 2013-08-15T04:34:42.753 回答
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) 放置Application类:

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) {
         ....
    }
}

您的网址应该是:像 /MyRESTEndPoint/myResourcePath/myResourceId

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

于 2013-08-13T23:25:07.967 回答
0

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

查看官方文档

于 2013-08-14T05:47:48.403 回答