Chinaunix首页 | 论坛 | 博客
  • 博客访问: 150689
  • 博文数量: 38
  • 博客积分: 1718
  • 博客等级: 上尉
  • 技术积分: 350
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-13 14:47
文章分类

全部博文(38)

文章存档

2012年(1)

2011年(11)

2010年(8)

2009年(18)

我的朋友

分类: Java

2009-07-18 15:38:14

Jetty是用纯java语言编写的开源软件,它具有如下功能:
1. 提供Http服务器功能;
2. 提供http客户端功能;
3. 提供javax.servlet容器功能。
同时Jetty可以嵌入到Java项目中,为java项目提供web功能,因此,与使用Apache + Tomcat实现web服务器相比,是有Jetty更容易部署。

Jetty的结构如下图所示:


如 上图所示,Jetty Server是Connector和Handler之间的通道,其中Connector用来接收http连接,Handler用来接收http连接的请求 并产生响应信息。处理http请求的过程由单独的线程来完成,这些线程由ThreadPool来管理。

为了初步了解基于Jetty的开发过程,现举一个简单的例子,该例子的源代码可以在上查看。
现在把创建该示例的过程记录下来,供以后参考。
1. 在eclipse上创建一个Java Project,命名为JettyDemo;
2. 在JettyDemo项目的库目录中添加jetty-6.1.19.jar, jetty-util-6.1.19.jar,
   servlet-api-2.5-20081211.jar.添加完成后项目的.classpath文件内容类似下图:



3. 在项目中添加一个java文件,内容见后面的源代码,需要注意的是该文件需要引入的一些包;
4. 最后运行该项目并在浏览器中输入""可以参看效果。


import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Handler;
import org.mortbay.jetty.HttpConnection;
import org.mortbay.jetty.Request;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.bio.SocketConnector;
import org.mortbay.jetty.handler.AbstractHandler;

public class OneHandler {
    public static void main(String[] args) throws Exception {
        Server server = new Server();
        Connector connector = new SocketConnector();
        connector.setPort(8080);
        server.setConnectors(new Connector[] { connector });

        Handler handler = new HelloHandler();
        server.setHandler(handler);

        server.start();
        server.join();
    }

    public static class HelloHandler extends AbstractHandler {
        public void handle(String target, HttpServletRequest request,
                HttpServletResponse response, int dispatch) throws IOException,
                ServletException {
            Request base_request = (request instanceof Request) ? (Request) request
                    : HttpConnection.getCurrentConnection().getRequest();
            base_request.setHandled(true);

            response.setContentType("text/html");
            response.setStatus(HttpServletResponse.SC_OK);
            response.getWriter().println("

Hello LYG!

");
        }
    }
}

阅读(2184) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~