1

如何配置这个项目以便它能够呈现 JSP 文件?我希望以 /rest 开头的 URL 路由到球衣资源并让 /* URLS 服务 JSP 文件。我在这个项目中没有任何 web.xml。

项目文件夹

├───src
│   └───main
│       └───java/Main.java
│           └───resources/HelloResource.java
└───WEB-INF
    └───jsp/NewFile.jsp

HelloResource.java

package resources;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("/hello")
public class HelloResource {

    @GET
    @Produces("text/plain")
    public String handleGreeting() {
        return "Hello World";
    }

    @Path("/test")
    @GET
    @Produces("text/json")
    public String test() {
        return "just test";
    }
}

主.java

import java.io.IOException;

import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;

import com.sun.jersey.spi.container.servlet.ServletContainer;

public class Main {
    public static void main(String[] args) throws IOException {

        Server server = new Server(Integer.valueOf(System.getenv("PORT")));
        ServletContextHandler context = new ServletContextHandler(
                ServletContextHandler.SESSIONS);
        context.setContextPath("/");
        server.setHandler(context);
        ServletContainer container = new ServletContainer();
        ServletHolder h = new ServletHolder(container);
        h.setInitParameter("com.sun.jersey.config.property.packages",
                "resources");
        h.setInitParameter(
                "com.sun.jersey.config.property.JSPTemplatesBasePath",
                "/WEB-INF/jsp");
        h.setInitParameter(
                "com.sun.jersey.config.property.WebPageContentRegex",
                "/(images|js|styles|(WEB-INF/jsp))/.*");
        context.addServlet(h, "/*");
        try {
            server.start();
            server.join();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
4

1 回答 1

1

您应该使用 context.addServlet(h, "/*") 更改该行,如下所示:

context.addServlet(h, "/rest/*");

您可以删除 WebPageContentRegex 和 JSPTemplatesBasePath 初始化参数 - 在这种情况下它们是无用的。并将您的 JSP 移出 WEB-INF/jsp 目录。

如果您使用的是 maven,您的项目结构应如下所示:

└───src
    └───main
        ├───java/Main.java
        │   └───resources/HelloResource.java
        └───webapp/NewFile.jsp
            └───WEB-INF/web.xml (optional)
于 2012-04-27T19:45:49.920 回答