`
changhongbao
  • 浏览: 122490 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Jetty实战(5)之嵌入式Jetty运行Servlet

阅读更多

在嵌入式Jetty中,有时候我们想运行一些的Servlet,此时就需要创建创建Context,然后让自己的Servlet运行在这些ServletContext中。

1. 首先创建一个ServletContextServer类,用来初始化web应用程序的Context,并且指定Servlet和Servlet匹配的url。这里指定了两个Servlet,分别是HelloServlet和GoodbyeServlet,并分别对应/hello/*和/goodbye/*。

package com.google.code.garbagecan.jettystudy.sample5;  
  
import org.eclipse.jetty.server.Server;  
import org.eclipse.jetty.servlet.ServletContextHandler;  
import org.eclipse.jetty.servlet.ServletHolder;  
  
public class ServletContextServer {  
    public static void main(String[] args) throws Exception {  
        Server server = new Server(8080);  
  
        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);  
        context.setContextPath("/");  
        server.setHandler(context);  
  
        // http://localhost:8080/hello  
        context.addServlet(new ServletHolder(new HelloServlet()), "/hello");  
        // http://localhost:8080/hello/kongxx  
        context.addServlet(new ServletHolder(new HelloServlet("Hello Kongxx!")), "/hello/kongxx");  
  
        // http://localhost:8080/goodbye  
        context.addServlet(new ServletHolder(new GoodbyeServlet()), "/goodbye");  
        // http://localhost:8080/goodbye/kongxx  
        context.addServlet(new ServletHolder(new GoodbyeServlet("Goodbye kongxx!")), "/goodbye/kongxx");  
          
        server.start();  
        server.join();  
    }  
}  

 2. 两个简单的Servlet:HelloServlet和GoodbyeServlet:

package com.google.code.garbagecan.jettystudy.sample5;  
  
import java.io.IOException;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
public class HelloServlet extends HttpServlet {  
    private static final long serialVersionUID = 1L;  
    private String msg = "Hello World!";  
  
    public HelloServlet() {  
    }  
  
    public HelloServlet(String msg) {  
        this.msg = msg;  
    }  
  
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
        response.setContentType("text/html");  
        response.setStatus(HttpServletResponse.SC_OK);  
        response.getWriter().println("<h1>" + msg + "</h1>");  
        response.getWriter().println("session=" + request.getSession(true).getId());  
    }  
}  
  
package com.google.code.garbagecan.jettystudy.sample5;  
  
import java.io.IOException;  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
public class GoodbyeServlet extends HttpServlet {  
    private static final long serialVersionUID = 1L;  
    private String msg = "Goodbye!";  
  
    public GoodbyeServlet() {  
    }  
  
    public GoodbyeServlet(String msg) {  
        this.msg = msg;  
    }  
  
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {  
        response.setContentType("text/html");  
        response.setStatus(HttpServletResponse.SC_OK);  
        response.getWriter().println("<h1>" + msg + "</h1>");  
        response.getWriter().println("session=" + request.getSession(true).getId());  
    }  
}  

 3. 运行ServletContextServer类,然后分别访问以下四个url

 

  http://localhost:8080/hello
  http://localhost:8080/hello/kongxx
  http://localhost:8080/goodbye
  http://localhost:8080/goodbye/kongxx

 

4. 除了上面的方式外,也可以创建两个个Context,分别绑定到"/hello"和"/goodbye",如下:

package com.google.code.garbagecan.jettystudy.sample5;  
  
import org.eclipse.jetty.server.Handler;  
import org.eclipse.jetty.server.Server;  
import org.eclipse.jetty.server.handler.ContextHandlerCollection;  
import org.eclipse.jetty.servlet.ServletContextHandler;  
import org.eclipse.jetty.servlet.ServletHolder;  
  
public class MultiContextServer {  
    public static void main(String[] args) throws Exception {  
        Server server = new Server(8080);  
  
        // http://localhost:8080/hello/kongxx  
        ServletContextHandler context1 = new ServletContextHandler(ServletContextHandler.SESSIONS);  
        context1.setContextPath("/hello");  
        context1.setResourceBase(".");  
        context1.setClassLoader(Thread.currentThread().getContextClassLoader());  
        context1.addServlet(new ServletHolder(new HelloServlet("Hello Kongxx!")), "/kongxx");  
  
        // http://localhost:8080/goodbye/kongxx  
        ServletContextHandler context2 = new ServletContextHandler(ServletContextHandler.SESSIONS);  
        context2.setContextPath("/goodbye");  
        context2.setResourceBase(".");  
        context2.setClassLoader(Thread.currentThread().getContextClassLoader());  
        context2.addServlet(new ServletHolder(new GoodbyeServlet("Goodbye kongxx!")), "/kongxx");  
  
        ContextHandlerCollection contexts = new ContextHandlerCollection();  
        contexts.setHandlers(new Handler[] { context1, context2 });  
  
        server.setHandler(contexts);  
  
        server.start();  
        server.join();  
    }  
}  

 

分享到:
评论

相关推荐

    jetty 嵌入式开发源码

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它允许开发者将Web服务器直接嵌入到他们的应用中,从而提供了极大的灵活性和控制权。Jetty被广泛应用于各种项目,从小型微服务到大型分布式系统,都有其...

    嵌入式jetty服务器开发所有的依赖jar包

    嵌入式Jetty服务器开发是Java应用程序中常用的一种轻量级Web服务器实现,它允许开发者在无需外部服务器的情况下,直接将Web服务功能嵌入到应用中。本压缩包提供了进行嵌入式Jetty开发所需的所有关键依赖jar包,极大...

    jetty6 嵌入式使用

    Jetty 6是一款轻量级、高性能的Java Web服务器和Servlet容器,因其可嵌入式使用而备受开发者青睐。在Eclipse这样的集成开发环境中,你可以直接通过Starter类快速启动和运行Jetty服务,大大简化了Web应用的部署流程。...

    JAVA里使用Jetty作为轻量级嵌入式的Web容器

    Java中的Jetty是一个轻量级、高性能且可嵌入式的Web服务器和Servlet容器,它以其简单易用和高效性在开发社区中广受欢迎。本文将深入探讨Jetty的基本概念、特性以及如何在Java项目中使用它。 1. **Jetty简介** - ...

    jetty嵌入式服务器必须的jar包

    jetty嵌入式服务器开发所必须的jar包,本人使用jetty版本为6.1.3,jar包总数为9个,来自jetty:commons-el-1.0.jar,jasper-compiler-5.5.15,jasper-compiler-jdt-5.5.15.jar,jasper-runtime-5.5.15.jar,jetty-...

    嵌入式jetty运行所需jar包

    包括org.eclipse.jetty.servlet_7.1.6.v20100715.jar、org.eclipse.jetty.server.jar、org.eclipse.jetty.servlet.source_7.1.6.v20100715.jar三个jar包,在进行jetty嵌入式编程时需要用到。

    Jetty 9 Servlet容器

    Jetty 9是一款轻量级、高性能且开源的Servlet容器,它主要负责处理基于Java Servlet规范的应用程序。作为Java服务的一部分,Jetty9为开发者提供了高效、稳定且灵活的平台来部署和运行Web应用程序。 首先,Jetty 9...

    实战 Jetty--让你快速速学会jetty

    这使得Jetty成为一个理想的嵌入式Web服务器选择,可以在各种复杂的应用环境中扮演关键角色。 部署Jetty应用程序非常直观。通常,将WAR包放置在Jetty的Webapps目录下,然后通过运行`java -jar start.jar`启动服务器...

    在嵌入式jetty环境下运行struts2Annotation项目

    在嵌入式Jetty环境下运行Struts2 Annotation项目是一个常见的任务,特别是在开发和测试阶段,因为这种方式能够快速启动服务,而无需依赖大型服务器容器。本文将深入探讨如何配置和执行这个过程,以及涉及的关键技术...

    jetty嵌入式服务器实例大全

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,因其开源、小巧且易于集成的特点,被广泛应用于各种项目中。本实例大全将全面解析Jetty在不同场景下的使用,帮助你深入理解和掌握Jetty的特性。 1. **...

    jetty嵌入式Httpserver

    作为一款嵌入式服务器,Jetty可以直接在应用程序中运行,无需单独的Web服务器进程,这使得它在分布式系统、微服务架构以及需要高度定制化的场景下尤为受欢迎。 在使用Jetty作为嵌入式HTTP服务器时,我们首先需要...

    jetty嵌入式实例

    嵌入式Jetty允许开发者直接在应用程序中启动和管理Web服务器,无需单独部署或运行独立的服务器进程。在Java开发中,Jetty以其简单易用和灵活性著称,使得开发者能够快速地搭建和配置HTTP服务器,处理HTTP请求,支持...

    jetty 8及依赖包

    在Jetty 8中,Servlet容器是其核心功能之一,它负责管理和调度Servlet实例。Servlet是一种Java API,用于生成动态Web内容。在Jetty中,Servlet容器负责解析HTTP请求,将请求路由到对应的Servlet,并将Servlet的响应...

    jetty嵌入项目实战

    2. **Jetty嵌入式使用** - 嵌入Jetty意味着将Jetty服务器作为应用程序的一部分来运行,无需独立的服务器进程。 - 使用`org.eclipse.jetty.server.Server`类创建服务器实例,并配置监听端口、处理请求的Handler等。...

    SpringBoot之配置嵌入式Servlet容器.pdf

    嵌入式Servlet容器是SpringBoot中的重要组件,能够将Web服务器(例如Tomcat、Jetty或Undertow)嵌入到应用程序的内部运行,使得部署更为简单便捷。接下来我们将根据给定的文件内容,深入探讨SpringBoot配置嵌入式...

    Java如何使用Jetty实现嵌入式的Servlet容器

    Java如何使用Jetty实现嵌入式的Servlet容器 在Java中,实现嵌入式的Servlet容器可以使用Jetty,Jetty是一个Java实现的开源的servlet容器,可以作为一个完整的Web服务器和Servlet容器,同时也可以嵌入在Java应用程序...

    jetty嵌入式服务.rar

    这个“jetty嵌入式服务.rar”文件很可能包含了关于如何在Java应用中集成和使用Jetty的相关资料。 在Java世界里,嵌入式服务器如Jetty提供了一种方便的方式来部署和运行Web应用程序,特别是对于那些希望快速启动、低...

    HelloWorld之jetty运行

    这些库文件是运行Jetty和处理Servlet请求所必需的。如果还需要支持JSP,还需要包含相应的JSP库,如jsp-api-2.1-glassfish-9.1.1.B51.25.p1.jar。 【创建Web目录结构】 在工程中创建一个名为“web”的目录,代表Web...

    gradle的jetty插件使用例子

    在Java Web开发中,Jetty是一个轻量级、高性能的HTTP服务器和Servlet容器,它支持多种部署方式,包括作为嵌入式服务器使用。Gradle,作为现代的构建工具,提供了丰富的插件生态系统,其中包括Jetty插件,使得在开发...

    jetty9.0.4嵌入式服务器开发所必须的全部jar包

    jetty嵌入式服务器开发所必须的全部jar包。本人使用jetty版本为9.0.4,这个版本比较稳定些。jar包数据很多,最后集中在jetty-all中,再外引入一下servlet-api-这个包,是与9.0.4配套的。 好东西,大家分享。

Global site tag (gtag.js) - Google Analytics