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. UVA 571 Jugs ADD18 小白书10 数学Part1 专题

    只能往一个方向倒,如c1=3,c2=5,a b从0 0->0 5->3 2->0 2->2 0->2 5->3 4->0 4->3 1->0 1- ...

  2. Webkit之HTML解析

    加载部分HTML文本(即主资源)后便可以开始解析HTML元素(对输入字节流进行逐字扫描,识别HTML元素),最后生成DOM树,本文只讲HTML解析. HTML解析部分时序图: 其中最为重要的过程是(1 ...

  3. linux命令chown和chmod什么区别

    chown一般用来 更改属主.也就是文件所属用户.chmod功能要比chown要强大.可更改文件所有属性和权限.只有管理员账户才有权限用此命令. chown 是修改文件的所有者(owner),和所属组 ...

  4. cell reuse & disposebag

    For my project I've made base cell class TableViewCell: UITableViewCell { private(set) var disposeBa ...

  5. hdu_3886_Final Kichiku “Lanlanshu”(数位DP)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=3886 题意:这题的题意有点晦涩难懂,大概意思就是给你一个区间,让你找一些满足递增递减条件的数,举个列: ...

  6. Django: 之数据库完美解析

    Python的web矿建有Django.Tornado.Flask等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定,模版引擎.缓存.Session等诸多功能. ...

  7. acm的第一场比赛的总结

    6.4-6.5号很激动的去湖南湘潭打了一场邀请赛,这是第一次acm的旅程吧.毕竟大一上册刚开始接触c,然后现在就能抱着学长的大腿(拖着学长的后腿)打比赛,也是有一点小小的激动. 第一天很早就起床了,由 ...

  8. java的property

    System.currentTimeMillis() 返回以毫秒为单位的当前时间.System.gc() 垃圾回收System.getProperties().返回当前的系统属性System.getP ...

  9. 从零深入 tomcat

    1.tomcat的安装使用 tomcat是实现了J2EE标准的最简单轻巧的WEB服务器,所以使用tomcat必须安装JDK咯! ① 安装JDK并设置环境变量: ②设置tomcat的环境变量: 这两小步 ...

  10. C#入门经典-第15章Windows 编程

    在使用Windows窗体时,就是使用System.Windows.Forms名称空间. .NET中的大多数控件都派生于System.Windows.Forms.Control类.