public class Main { public static void main(String[] args) throws Exception { Server server = new Server(8080); WebAppContext webContext = new WebAppContext("web","/web"); server.setHandler(webContext); // ServletContextHandler context = new ServletContextHandler(); // context.setContextPath("/"); // context.addServlet(SecureServlet.class, "/*"); // server.setHandler(context); server.start(); }
WebAppContext的两个参数,第一个参数是项目要发布的目录,web表示项目目录下的web文件夹为发布目录。第二个参数是发布的url,如/web表示:域名/web 是项目访问的根url
这里没用ServletContextHandler ,这个是发布servlet的,不需要支持发布项目,也不需要支持jsp。
项目中使用jetty发布项目注意的地方:主要是jar包的导入
1 需要servlet-api.jar,不让会报这个错:
java.lang.NoClassDefFoundError: javax/servlet/ServletRequestListener
2 需要org.apache.jasper.glassfish的包 和jsp-api的包r 以及javax.el的包,这样才能支持jsp。这些jar是在下载的jetty的lib的jsp目录下。
3 我开始的时候根据报错导入ant的包,到如tools包,在不需要jasper glassfish的包居然也可以支持jsp,好神奇。
附件是项目的源码