我如何配置该项目以便它能够呈现 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(使用前将#替换为@)