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. zf-分页后台代码

    java : public ResultPage getDeptList(int page, int pageRows) throws Exception { String hql="fro ...

  2. HDU 5455 Fang Fang 水题,但题意描述有问题

    题目大意:f[1]=f,f[2]=ff,f[3]=ffc,以后f[n]每增加1,字符串增加一个c.给出一个字符串,求最少有多少个f[]组成.(字符串首尾相连,比如:ffcf可看做cfff) 题目思路: ...

  3. Java Concurrent Topics

    To prevent Memory Consistency Errors(MCEs), it is good practice to specify synchronized class specif ...

  4. 单元测试、自动化测试、接口测试过程中的Excel数据驱动(java实现)

    import java.io.FileInputStream;import java.io.InputStream;import java.util.HashMap;import java.util. ...

  5. Swift中的闭包(Closure) 浅析

    转载自:http://www.devtalking.com/articles/closure-expressions-in-swift/ 闭包在Swift中非常有用.通俗的解释就是一个Int类型里存储 ...

  6. Git学习 -- 删除文件

    1 从版本库删除文件 git rm <file> git commit -m "xxx" 2 工作区中文件被误删,但版本库中没有删除,可以恢复到工作区 git chec ...

  7. C++ Builder string相互转换(转)

    源:http://www.cnblogs.com/zhcncn/archive/2013/05/20/3089084.html 1. char*->string (1)直接转换 const ch ...

  8. Java-老夫对泛型的理解。。

    什么是泛型,在我看来 泛型就是能够限制类,方法,数组-变量的类型 比如说  List<String,int> list = new List<String,int> 就是有尖括 ...

  9. 货物搬运(move)

    货物搬运(move) 题目描述 天地无情人有情,一方有难八方支援!汶川大地震发生后,灾区最紧缺的是救灾帐篷,全国各地支援的帐篷正紧急向灾区运送.假设围绕纹川县有环行排列的n个救灾帐篷的存储点,每个存储 ...

  10. PAT (Advanced Level) 1064. Complete Binary Search Tree (30)

    因为是要构造完全二叉树,所以树的形状已经确定了. 因此只要递归确定每个节点是多少即可. #include<cstdio> #include<cstring> #include& ...