Jetty的优良特点在于,它可以嵌入到任意的java程序中。并且使用jetty可以快速的开发自己的应用服务器。
1、准备开发嵌入式的jetty服务器jar包
//以下这些包,在jetty_home\lib目录下都可以找到:
jetty-continuation-7.6.2.v20120308.jar
jetty-http-7.6.2.v20120308.jar
jetty-io-7.6.2.v20120308.jar
jetty-security-7.6.2.v20120308.jar
jetty-server-7.6.2.v20120308.jar
jetty-servlet-7.6.2.v20120308.jar
jetty-util-7.6.2.v20120308.jar
jetty-webapp-7.6.2.v20120308.jar
jetty-xml-7.6.2.v20120308.jar
//以下是Servlet项目所需要的包,在tomcat_home\lib的安装目录下都可以找到
servlet-api-2.5.jar
jsp-api.jar
jasper.jar
jasper-el.jar
el-api.jar
ecj-3.7.1.jar (此包非常重要是在Eclipse环境下编译JSP文件、Servlet文件用的)
//以下在tomcat_home\bin目录下可以找到,虽然它是以tomcat命名,但它是一个公共包,主要是用于服务器的日志输出
tomcat-juli.jar
2、书写第一个jetty服务器
以下代码,创建了一个jetty服务器,并发布了一两个Servlet。且设置支持Session。
import org.eclipse.jetty.server.Server; //此类是jetty的服务器类,用于指定绑定的服务器和端口。
import org.eclipse.jetty.server.SessionManager; //此类用于管理服务器的Session
import org.eclipse.jetty.server.session.HashSessionManager; //此类是SessionManager的子类,用hash算法生成Session
import org.eclipse.jetty.server.session.SessionHandler; //此类用于将SessionManager注册到服务器
import org.eclipse.jetty.servlet.ServletContextHandler; //此类用于管理Servlet,可以管理多个Servlet.
import org.eclipse.jetty.servlet.ServletHolder; //此类用于将Servlet注册到服务器
import org.eclipse.jetty.webapp.WebAppContext; //此类,可以用于加载任意一个JavaEE项目。后面会用到
以下是访问内部的代码,类名请你自己添加:
@Test
public void jettyServer2() throws Exception{
Server server = new Server(9090);//声明服务器
ServletContextHandler hand = new ServletContextHandler();//声明ServletContextHandler
hand.addServlet(new ServletHolder(new HttpServlet() { //分别添加两个Servlet
public void doGet(HttpServletRequest req,
HttpServletResponse response) throws ServletException,
IOException {
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>Hello World第二个</h1>");
HttpSession s = req.getSession();
String name = (String) s.getAttribute("name");
response.getWriter().println("<h1>Session is:</h1>"+s+","+name);
response.getWriter().print("<br/>"+this.getServletContext().getRealPath("/"));
}
}), "/a");
hand.addServlet(new ServletHolder(new HttpServlet() {
public void doGet(HttpServletRequest req,
HttpServletResponse response) throws ServletException,
IOException {
response.setContentType("text/html;charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
response.getWriter().println("<h1>Hello World第一个</h1>");
HttpSession s = req.getSession();
s.setAttribute("name", "Jack");
response.getWriter().print("<br/><a href='a'>去第二个</a>");
}
}), "/");
//设置内嵌的jetty支持session.默认情况下不支持session
SessionManager sm = new HashSessionManager();
hand.setSessionHandler(new SessionHandler(sm));
server.setHandler(hand);//设置
server.start();//启动
server.join();
}
3、使用jetty的管理器管理一个完整的JavaEE应用
Jetty可以非常方便的管理一个JavaEE应用程序。关键点就在于使用WebAppContext来发布一个JavaEE应用:
/**
* 指定一个现有的项目发布,方式一。
* 以下情况下,默认支持容器的所有对象如:
* request,session,application,等
*/
public static void main(String[] args) throws Exception {
String webapp = "D:\\programfiles\\MyEclipse10\\wk3\\day04\\WebRoot";//声明项目所在的目录
Server server = new Server(80); //声明端口
WebAppContext context = new WebAppContext(); //声明上下文对象
context.setDescriptor(webapp + "/WEB-INF/web.xml"); //指定web.xml文件,可选
context.setResourceBase(webapp); //设置项目路径
context.setContextPath("/"); //设置上下文根,可以任意的值
server.setHandler(context); //设置句柄
server.start(); //启动
server.join();
}
也可以使用以下方式发布:
/**
* 指定一个现有的项目发布,方式二
* @throws Exception
*/
@Test
public void jettyServer() throws Exception{
String webapp = "D:\\programfiles\\MyEclipse10\\wk3\\day04\\WebRoot";
Server server = new Server(80);
WebAppContext context = new WebAppContext(webapp,"/abc");
server.setHandler(context);
server.start();
server.join();
}
http://www.genshuixue.com/i-cxy/p/11578496
相关推荐
在“Jetty内嵌服务器实例”中,我们可以学习到以下关键知识点: 1. **Jetty服务器基础**:了解Jetty的基本架构和功能,包括它如何处理HTTP请求和响应,以及如何加载和执行Servlet。 2. **内嵌Jetty的实现**:学习...
让我们深入探讨如何将Jetty内嵌到Java代码中,以及这一过程涉及的关键知识点。 1. **Jetty简介** - Jetty是一个开源的HTTP服务器和Servlet容器,支持最新的Servlet规范,如Servlet 4.0。 - 它以其轻量级、模块化...
压缩包文件`jettydemo`可能包含了一个完整的Jetty内嵌式运行的示例项目。这个项目可能包括了Java源代码、Web应用资源(如HTML、CSS、JavaScript文件)以及必要的配置文件。解压后,你可以通过阅读代码来理解如何设置...
在"jetty内嵌实现"的场景下,我们可以直接将Jetty集成到我们的Java应用中,避免了传统方式下需要将应用部署到独立的Web服务器(如Tomcat)的步骤。这种方式尤其适用于测试、开发环境,甚至小型生产环境,因为它简化...
本文将深入探讨Jetty的基本概念、特性以及如何在Java项目中使用它。 1. **Jetty简介** - Jetty是由Eclipse基金会维护的开源项目,它提供了HTTP服务器、Servlet容器和WebSocket服务器等功能。 - 与Tomcat等其他...
由于以前写了个jetty内嵌的服务器,需要在其上面添加JSF的东西 试了好久,终于调通了,拿出来给大家分享一下 本demo是使用jetty内嵌的方式发布的jsf的demo 整个demo是工程整个打包,包含所有的jar包,包括使用的...
这通常涉及使用Spring MVC作为控制器层,内嵌Jetty作为Web服务器,以及Maven作为项目管理工具。下面将详细解释这些关键知识点: 1. **Spring MVC**: Spring MVC是Spring框架的一部分,它提供了一个用于构建Web...
使用 Spring Boot 内置的 Jetty 服务器,开发者可以轻松地实现一些基础功能,例如: 1. **文件上传下载**:Spring Boot 提供了 `MultipartFile` 类来处理文件上传,配合 `Controller` 层的接口,可以实现用户上传...
Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它被广泛应用于各种规模的项目,特别是作为嵌入式服务器使用。嵌入式Jetty允许开发者直接在应用程序中启动和管理Web服务器,无需单独部署或运行独立的...
这篇博客“Eclipse+Maven创建webapp项目集成jetty服务器”将指导你如何将这些工具结合在一起,创建一个可以快速运行和调试的Web应用环境。 首先,让我们详细了解一下每个组件: 1. **Eclipse**:Eclipse是一款强大...
嵌入式Jetty允许我们将Jetty直接集成到应用程序中,无需单独部署或管理服务器进程。 2. **Struts2**:这是一个流行的MVC(Model-View-Controller)框架,用于构建Java Web应用程序。Struts2引入了Action类和注解,...
内嵌Jetty服务器 内嵌Jetty教程 内嵌Jetty的HelloWorld教程 内嵌Jetty视频 优化Jetty 如何配置垃圾收集 如何配置以支持高负载 在Jetty中部署应用 部署管理器 部署绑定 热部署 Context提供者 如何部署web应用 webApp...
标题中的“嵌入jetty的springMVC可运行jar的REST+”指的是使用Jetty作为嵌入式服务器来运行一个包含Spring MVC的Java Web应用程序,该应用提供了RESTful API服务。这种架构允许开发者将Web服务器与应用代码打包成...
jetty-6.1.14包,应用程序内嵌服务器包
- **HTTP服务器**:Jetty作为HTTP服务器,负责处理HTTP请求和响应,为Web应用提供基础服务。 - **Servlet容器**:Jetty也是一款Servlet容器,能够运行符合Servlet规范的Java Web应用。 - **内嵌式**:Jetty的一个...
4. **Embedding API**:Jetty提供了一组API,使得在Java应用程序中轻松地内嵌和控制Jetty服务器成为可能。 5. **Admin Console**:Hightide通常包括一个管理控制台,用于监控和管理Jetty服务器,包括查看日志、配置...
Jetty Tools是一个专门为Java开发人员设计的嵌入式Web服务器和HTTP服务器,它以其轻量级、高效和灵活的特点在IT行业中备受青睐。这个工具集允许开发者将Web服务器功能直接集成到他们的应用程序中,从而避免了传统...
Jetty可以通过内嵌H2数据库,为Web应用程序提供数据存储服务。这通常涉及到配置一个`ServletContextHandler`,加载一个名为`DBServlet`的Servlet,该Servlet可以直接与H2数据库进行交互。 在测试Jetty程序时,你...
此外,使用Jetty作为嵌入式容器,意味着该工具可以直接与应用程序结合,而无需独立部署或配置服务器。这对于开发者来说是一种非常便捷的解决方案,尤其是在本地开发和调试环境中。Jetty的轻量级特性和低资源消耗也使...
通过这个"jsf-jetty"项目,开发者可以学习如何配置JSF和Jetty,理解如何将JSF的组件与Jetty的服务器环境整合,以及如何使用Maven管理项目依赖和构建流程。此外,这个项目也可以作为一个模板,用于快速搭建自己的JSF ...