配置 Jersey + Jetty + JSP

2024-05-03

我如何配置该项目以便它能够呈现 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();
        }
    }
}

您应该使用 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

配置 Jersey + Jetty + JSP 的相关文章

随机推荐