http://blog.csdn.net/kongxx/article/details/7230080

Jetty实战之 嵌入式Jetty运行Servlet

分类:JettyJava

(19530)  (3)

本文链接:http://blog.csdn.net/kongxx/article/details/7230080

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

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

  1. package com.google.code.garbagecan.jettystudy.sample5;
  2. import org.eclipse.jetty.server.Server;
  3. import org.eclipse.jetty.servlet.ServletContextHandler;
  4. import org.eclipse.jetty.servlet.ServletHolder;
  5. public class ServletContextServer {
  6. public static void main(String[] args) throws Exception {
  7. Server server = new Server(8080);
  8. ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
  9. context.setContextPath("/");
  10. server.setHandler(context);
  11. // http://localhost:8080/hello
  12. context.addServlet(new ServletHolder(new HelloServlet()), "/hello");
  13. // http://localhost:8080/hello/kongxx
  14. context.addServlet(new ServletHolder(new HelloServlet("Hello Kongxx!")), "/hello/kongxx");
  15. // http://localhost:8080/goodbye
  16. context.addServlet(new ServletHolder(new GoodbyeServlet()), "/goodbye");
  17. // http://localhost:8080/goodbye/kongxx
  18. context.addServlet(new ServletHolder(new GoodbyeServlet("Goodbye kongxx!")), "/goodbye/kongxx");
  19. server.start();
  20. server.join();
  21. }
  22. }

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

  1. package com.google.code.garbagecan.jettystudy.sample5;
  2. import java.io.IOException;
  3. import javax.servlet.ServletException;
  4. import javax.servlet.http.HttpServlet;
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7. public class HelloServlet extends HttpServlet {
  8. private static final long serialVersionUID = 1L;
  9. private String msg = "Hello World!";
  10. public HelloServlet() {
  11. }
  12. public HelloServlet(String msg) {
  13. this.msg = msg;
  14. }
  15. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  16. response.setContentType("text/html");
  17. response.setStatus(HttpServletResponse.SC_OK);
  18. response.getWriter().println("<h1>" + msg + "</h1>");
  19. response.getWriter().println("session=" + request.getSession(true).getId());
  20. }
  21. }
  22. package com.google.code.garbagecan.jettystudy.sample5;
  23. import java.io.IOException;
  24. import javax.servlet.ServletException;
  25. import javax.servlet.http.HttpServlet;
  26. import javax.servlet.http.HttpServletRequest;
  27. import javax.servlet.http.HttpServletResponse;
  28. public class GoodbyeServlet extends HttpServlet {
  29. private static final long serialVersionUID = 1L;
  30. private String msg = "Goodbye!";
  31. public GoodbyeServlet() {
  32. }
  33. public GoodbyeServlet(String msg) {
  34. this.msg = msg;
  35. }
  36. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  37. response.setContentType("text/html");
  38. response.setStatus(HttpServletResponse.SC_OK);
  39. response.getWriter().println("<h1>" + msg + "</h1>");
  40. response.getWriter().println("session=" + request.getSession(true).getId());
  41. }
  42. }

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",如下:

  1. package com.google.code.garbagecan.jettystudy.sample5;
  2. import org.eclipse.jetty.server.Handler;
  3. import org.eclipse.jetty.server.Server;
  4. import org.eclipse.jetty.server.handler.ContextHandlerCollection;
  5. import org.eclipse.jetty.servlet.ServletContextHandler;
  6. import org.eclipse.jetty.servlet.ServletHolder;
  7. public class MultiContextServer {
  8. public static void main(String[] args) throws Exception {
  9. Server server = new Server(8080);
  10. // http://localhost:8080/hello/kongxx
  11. ServletContextHandler context1 = new ServletContextHandler(ServletContextHandler.SESSIONS);
  12. context1.setContextPath("/hello");
  13. context1.setResourceBase(".");
  14. context1.setClassLoader(Thread.currentThread().getContextClassLoader());
  15. context1.addServlet(new ServletHolder(new HelloServlet("Hello Kongxx!")), "/kongxx");
  16. // http://localhost:8080/goodbye/kongxx
  17. ServletContextHandler context2 = new ServletContextHandler(ServletContextHandler.SESSIONS);
  18. context2.setContextPath("/goodbye");
  19. context2.setResourceBase(".");
  20. context2.setClassLoader(Thread.currentThread().getContextClassLoader());
  21. context2.addServlet(new ServletHolder(new GoodbyeServlet("Goodbye kongxx!")), "/kongxx");
  22. ContextHandlerCollection contexts = new ContextHandlerCollection();
  23. contexts.setHandlers(new Handler[] { context1, context2 });
  24. server.setHandler(contexts);
  25. server.start();
  26. server.join();
  27. }
  28. }
 
 

版权声明:本文为博主原创文章,未经博主允许不得转载。

Jetty实战之 嵌入式Jetty运行Servlet的更多相关文章

  1. Jetty实战之 嵌入式Jetty运行web app

    Jetty实战之 嵌入式Jetty运行web app 博客分类: 应用服务器 jettywar  转载地址:http://blog.csdn.net/kongxx/article/details/72 ...

  2. Jetty实战之 安装 运行 部署

    本文地址:http://blog.csdn.net/kongxx/article/details/7218767 1. 首先从Jetty的官方网站http://wiki.eclipse.org/Jet ...

  3. (转)Jetty实战之 安装 运行 部署

    http://blog.csdn.net/kongxx/article/details/7218767 本文地址:http://blog.csdn.NET/kongxx/article/details ...

  4. 嵌入式jetty的HTTP实现

    2    嵌入式jetty的HTTP实现 布拉君君 2.1 简单HTTP实现 2.1.1 HTTP SERVER端实现 2.1.1.1 HTTP SERVER端实现概述 在代码中嵌入一个Jetty s ...

  5. web项目嵌入Jetty运行的两种方式(Jetty插件和自制Jetty服务器)

    在开发Java web项目时候,可以在项目中嵌入Jetty服务的方式来运行web程序. 由于最近开发web项目,自己使用的是比较旧的eclipse不支持导入tomcat来运行项目,于是就学习了下使用项 ...

  6. 嵌入式jetty

    一.maven依赖 pom配置 <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId&g ...

  7. Jetty实战(杂七杂八)

    最近开始选择JETTY作为服务器了,乘这现在空闲点学习了些JETTY的部署知识,原来她真的跟TOMCAT很类似,先总结如下: 部署应用方法(下载好jetty); 方法一: 直接将应用的 war包放在j ...

  8. jetty 通过配置文件嵌入式启动web服务

    定义 jetty.xml 启动文件 <?xml version="1.0"?><!DOCTYPE Configure PUBLIC "-//Jetty/ ...

  9. Jetty 开发指南:Jetty 内嵌开发

    Jetty的口号是“不要在Jetty中部署你的应用程序,在你的应用程序中部署Jetty!” 这意味着,作为将应用程序捆绑为要部署在Jetty中的标准WAR的替代方案,Jetty旨在成为一个软件组件,可 ...

随机推荐

  1. WNDCLASS 窗口类结构

    Windows 的窗口总是基于窗口类来创建的,窗口类同时确定了处理窗口消息的窗口过程(回调函数). 在创建应用程序窗口之前,必须调用 RegisterClass 函数来注册窗口类.该函数只需要一个参数 ...

  2. Interview with Oleg

    Interview with Oleg time limit per test 1 second memory limit per test 256 megabytes input standard ...

  3. LightOJ 1370 Bi-shoe and Phi-shoe 数论

    题目大意:f(x)=n 代表1-x中与x互质的数字的个数.给出n个数字a[i],要求f(x)=a[i],求x的和. 思路:每个素数x 有x-1个不大于x的互质数.则f(x)=a[i],若a[i]+1为 ...

  4. 设计模式-中介者模式(Mediator)

    /***中介者模式在消息队列中的应用*/package test.mediator; public abstract class Message { private Messages messages ...

  5. ReactiveX--响应式编程の相关概念 浅析

    在许多软件编程任务中,你或多或少期待你的指令将会按照你已经写好的顺序,依次增量执行和完成.但在ReactiveX,很多指令可以通过“观察者”并行执行,其结果将以任意顺序被捕获.你定义了一种“可观察的形 ...

  6. frame、bounds表示大小和位置的属性以及center、position、anchorPosition

    在iOS开发开发过程中经常会用到界面元素的frame.bounds表示大小和位置的属性以及center.position.anchorPosition等单纯表示位置的属性.这些属性究竟什么含义?彼此间 ...

  7. Udp发送

    string message = "0302"; byte[] sendbytes = Encoding.ASCII.GetBytes(message); remoteIpep = ...

  8. windows程序设计学习笔记(一)

    windows里的变量类型 1.简单重定义windows变量 BOOL (TRUE FALSE) INT UINT(32位,4字节) LONG DWORD(32位,4字节) lParam,wParam ...

  9. 交换数组中两个元素的位置,元素包括key和value 一维数组

    /*author: yangyu@sina.cndescription: 交换数组中两个元素的位置,元素包括key和value,具体用法见下面的例子*/$arr = array(11=>'a', ...

  10. HBase的Shell命令

    1.HBase提供了一个shell的终端给用户交互 2.HBase Shell的DDL操作 (1)先进入HBase的 Shell命令行,即HBASE_HOME/bin/hbase shell …… & ...