在Maven Web项目中通过Java代码启动内嵌的jetty
2018-07-31 本文已影响1人
Belmode
1. 在IDEA中,通过maven原型创建web项目
-
这里要注意,是要选择
maven-archetype-webapp
,而不是其他的。这个是最简单的web模版。 -
然后一路next。
2.手动 添加
java
目录,存放包。
在eclipse使用最基本的maven-web是可以直接创建出比较完善的目录结构的,但是IDEA不知为何没有创建出来。
3.修改项目
module
- 将
java
目录标记为source
- 确定此位置正确,这样在
webapp
目录上会有一个蓝点标识
-
项目结构
4.添加pom.xml依赖
主要依赖,没有其他的了。
注意,不能再引入tomcat的依赖,会出错!
<dependency>
<groupId>org.eclipse.jetty.aggregate</groupId>
<artifactId>jetty-all-server</artifactId>
<version>8.2.0.v20160908</version>
</dependency>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-jsp</artifactId>
<version>8.2.0.v20160908</version>
</dependency>
5. 新建主类
package top.belmode.starter;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.webapp.WebAppContext;
public class Main {
public static void main(String[] args) {
// 服务器的监听端口
Server server = new Server(9999);
// 关联一个已经存在的上下文
WebAppContext context = new WebAppContext();
// 设置描述符位置
context.setDescriptor("./src/main/webapp/WEB-INF/web.xml");
// 设置Web内容上下文路径
context.setResourceBase("./src/main/webapp");
// 设置上下文路径
context.setContextPath("/");
context.setParentLoaderPriority(true);
server.setHandler(context);
try {
server.start();
// server.join();
} catch (Exception e) {
e.printStackTrace();
}
System.err.println("Jetty-8.2.0 Server war started");
System.err.println("请访问http://localhost:9999");
}
}
6. 一个简单的index.jsp
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
7. 启动top.belmode.starter.Main,浏览器访问9999端口
结束