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. 直接用request.setAttribute()会报错,在这之前应该先让request获取ServletActionContext.getRequest();方法 // request.getAttribute同理

    正确流程应该是 import javax.servlet.http.HttpServletRequest; HttpServletRequst request = ServletActionConte ...

  2. sql server 的约束的作用 于 理解 [转]

    SQL Server中的约束用来确保系统的完整性.一般约束可以分为:主键约束外键约束检查约束默认约束唯一约束非空约束 但是一般我们需要特别注意前三种约束:主键约束,一就是说跟你系统的实体有很大的关系, ...

  3. MSG 结构

    MSG 消息结构 在 Windows 程序中,消息是由 MSG 结构体来表示的. 结构原型: typedef struct tagMSG { HWND   hwnd; UINT   message; ...

  4. Springmvc默认首页的问题

    之前自己写的springmvc 默认首页都是偷懒方式: web.xml 中定义的默认首页: <welcome-file-list> <welcome-file>index.ht ...

  5. this与super使用总结(java)

    this: Java关键字this只能用于方法方法体内.当一个对象创建后,Java虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是this.因此,this只能在类中的非静态方法 ...

  6. phpmyadmin配置方式

    简单的说,phpmyadmin就是一种mysql的管理工具,安装该工具后,即可以通过web形式直接管理mysql数据,而不需要通过执行系统命令来管理,非常适合对数据库操作命令不熟悉的数据库管理者,下面 ...

  7. 简易控制中心,angular的简单使用

    <html> <head> <meta charset='utf-8'> <script src="js/angular.js">& ...

  8. 学习笔记——装饰器模式Decorator

    装饰器模式,最典型的例子. 工厂新开了流水线,生产了手机外壳,蓝天白云花色.刚准备出厂,客户说还要印奶牛在上面,WTF…… 时间上来不及,成本也不允许销毁了重来,怎么办?弄来一机器A,专门在蓝天白云的 ...

  9. js的阻塞特性

    JS具有阻塞特性,当浏览器在执行js代码时,不能同时做其它事情,即<script>每次出现都会让页面等待脚本的解析和执行(不论JS是内嵌的还是外链的),JS代码执行完成后,才继续渲染页面. ...

  10. 关于mysql 删除数据后物理空间未释放(转载)

    转自 关于mysql 删除数据后物理空间未释放(转载) - NETDATA - 博客园http://www.cnblogs.com/shawnloong/archive/2013/02/07/2908 ...