天天看点

【Jetty Server 开发系列之一】搭建Jetty Server环境&&Http客户端实现交互

关于Jetty 简单来说就是一个servlet的容器,如同tomcat 等,至于详细的介绍请大家自行baidu~google

那么本篇主要介绍jetty server的环境搭建以及简单交互示例:

1. 我们下载Jetty :

2 . 打开我们的IDE,Himi这里是eclipse,然后新建一个Java项目  "FirstJettyServer"

3. 配置新建的项目加入必要的jar包,如下图:(这些jar包都可以再刚下载的 jetty中找到)

<a href="http://www.himigame.com/wp-content/uploads/2012/05/14.png"></a>

4. 创建我们的JettyServer 类:

import org.eclipse.jetty.server.Server; 

import org.eclipse.jetty.servlet.ServletContextHandler; 

import org.eclipse.jetty.servlet.ServletHolder; 

import servlet.FirstServlet; 

/** 

 * @author Himi 

 */ 

public class ServletServer { 

    public static void main(String[] args) throws Exception { 

        Server server = new Server(8080);   

        ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); 

        context.setContextPath("/");   

        server.setHandler(context);   

        context.addServlet(new ServletHolder(new FirstServlet()), "/himi"); 

        context.addServlet(new ServletHolder(new FirstServlet("Hello FirstServlet!")), "/xiaominghimi");   

        server.start(); 

        server.join(); 

    } 

首先new一个Server并且指定端口,然后我们创建一个ServletContextServer类,用来初始化web应用程序的Context,并且指定Servlet和Servlet匹配的url。因为在Jetty中运行一些的Servlet,需要创建Context,然后让创建的Servlet运行在Context中;

而FirstServlet类是个servlet,通过    ServletContextServer 的 addServlet()函数进行添加;

addServlet 函数有两个参数:

1.  ServletHolder 对象;         2. 客户端访问的字段

下面是我们的Servlet,这里Himi将类名起为“FirstServlet”,代码如下:

package servlet; 

import java.io.IOException; 

import javax.servlet.ServletException; 

import javax.servlet.http.HttpServlet; 

import javax.servlet.http.HttpServletRequest; 

import javax.servlet.http.HttpServletResponse; 

public class FirstServlet extends HttpServlet { 

    private static final long serialVersionUID = 1L; 

    private String msg = "Hello World!";   

    public FirstServlet() { 

    }   

    public FirstServlet(String msg) { 

        this.msg = msg; 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

        String name = request.getParameter("name"); 

        String password = request.getParameter("password");  

        response.setCharacterEncoding("UTF-8"); 

        response.setContentType("text/html"); 

        response.setStatus(HttpServletResponse.SC_OK); 

        response.getWriter().println("&lt;h1&gt;" + msg + "&lt;/h1&gt;"); 

        response.getWriter().println("测试中文&lt;/br&gt;session=" + request.getSession(true).getId()+"&lt;/br&gt;"); 

        if(name!=null) 

            response.getWriter().println("名字:"+name+"&lt;/br&gt;");   

        if(password!=null) 

            response.getWriter().println(" 密码:"+password+"&lt;/br&gt;");   

本类中我们重写doGet函数,关于这个函数不再赘述;

主要看doGet函数中的内容:

  一个是:首先我定义了两个字符串,其值是从Http Client端获取过来的,并且重新写给客户端进行显示。

       另外一个是由于有中文write给Client端,所以我设置了HttpServletResponse 中 CharacterEncod 为“UTF-8”

注意这个设置编码要再写给Client之前设置!

然后测试下我们的JettyServer端,我们运行ServletServer.java 启动Jetty ;如果正常启动你将看到控制台打印如下信息:

<a href="http://blog.51cto.com/xiaominghimi/969798#">?</a>

1

2

<code>2012</code><code>-</code><code>05</code><code>-</code><code>25</code> <code>12</code><code>:</code><code>18</code><code>:</code><code>59.223</code><code>:INFO:oejs.Server:jetty-</code><code>8.1</code><code>.</code><code>3</code><code>.v20120416</code>

<code>2012</code><code>-</code><code>05</code><code>-</code><code>25</code> <code>12</code><code>:</code><code>18</code><code>:</code><code>59.553</code><code>:INFO:oejs.AbstractConnector:Started SelectChannelConnector</code><code>@0</code><code>.0.</code><code>0.0</code><code>:</code><code>8080</code>

启动成功后,我们来测试我们书写的第一个FirstServlet 这个Servlet。

1.打开你的safari 或者其他浏览器,然后观察如下图的地址和返回的数据显示:

<a href="http://www.himigame.com/wp-content/uploads/2012/05/16.png"></a>

<a href="http://www.himigame.com/wp-content/uploads/2012/05/23.png"></a>

当然除了基本的访问外,Himi还在我们的FirstServlet中可以接收Client端的两个参数,所以继续观察:

<a href="http://www.himigame.com/wp-content/uploads/2012/05/17.png"></a>

<a href="http://www.himigame.com/wp-content/uploads/2012/05/24.png"></a>

 注意: 

          1. 虽然网址前都有个Tomcat标志,但是当前Himi访问的是我们的Jetty Server的8080端口,而tomcat我是关闭着的;

         2. 对于Himi使用   "/xiaominghimi"  跟 "/himi" 进行访问我们的Servlet其实访问的是同一个Servlet,只是Himi为了掩饰服务器端一个是无参数构造,另外一个是有参数构造而已;

         3. localhost 等同于  127.0.0.1  ,都是访问本地,测试而用;

         4.一般在浏览器中输入网址访问都是 GET方式

本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/969798,如需转载请自行联系原作者

继续阅读