【JETTY SERVER 开发系列之一】搭建JETTY SERVER环境&&HTTP客户端实现交互

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/java-servlet/862.html

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

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

1. 我们下载Jetty :

http://dist.codehaus.org/jetty/    (Himi这里下载的是   jetty-hightide-8.1.3 )

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

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

4. 创建我们的JettyServer 类:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

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”,代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

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;

 

/**

* @author Himi

*/

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("<h1>" + msg + "</h1>");

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

        if(name!=null)

         response.getWriter().println("名字:"+name+"</br>");  

 

        if(password!=null)

         response.getWriter().println(" 密码:"+password+"</br>");  

 

    }

}

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

主要看doGet函数中的内容:

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

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

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

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

1

2

2012-05-25 12:18:59.223:INFO:oejs.Server:jetty-8.1.3.v20120416

2012-05-25 12:18:59.553:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080

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

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

 

 

 

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

 

 注意: 

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

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

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

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

时间: 2024-12-30 12:51:02

【JETTY SERVER 开发系列之一】搭建JETTY SERVER环境&&HTTP客户端实现交互的相关文章

微信公众号开发系列教程一(调试环境部署续:vs远程调试)

原文:微信公众号开发系列教程一(调试环境部署续:vs远程调试) 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南)   前几天决定写个微信公众平台开发系列,在发布第一篇博文后,收到了很多园友的反馈和建议,在这里感谢大家的支持,我会坚持写完这个系列,希望能帮助更多的小伙伴.特别要感谢下@ZIP,是他的一个提醒才有了这篇博文.也希望更多的小伙伴能把你的想法反馈给我. 上一篇中主要介绍的是使用花

Silverlight for Windows Phone 7开发系列(1):环境搭建

前言 随着Windows Phone设备发售日期的临近,作为微软的全新智能设备平台越来越受到关注.我也把重点从Windows Mobile与Windows Embedded CE慢慢转向Windows Phone的开发.因此编写Silverlight for Windows Phone 7开发系列文章,从简单到深入的讲述Silverlight for Windows Phone 的开发.这个系列主要讲述一个网络收音机的开发过程,这一网络收音机程序涉及到Silverlight控件的使用,图片的操作

[cocos2d-x]游戏开发系列教程-搭建cocos2d-x的windows开发环境

1.在上一篇中我们成功运行了HelloCpp和TestCpp工程,我们到目录cocos2d-x-2.2.1\Debug.win32下 查看生成的文件,在我电脑上绝对路径是H:\source\cocos2d-x-2.2.1\Debug.win32. 我们可以看到其中生成了很多文件,我们把其中所有的dll拷贝到系统目录中,如果是32位系统, 将dll拷贝到C:\Windows\System32,如果是64位系统就将dll拷贝到C:\Windows\SysWOW64 . 2.然后在cocos2d-x-

C#微信公众号开发系列教程三(消息体签名及加解密)

原文:C#微信公众号开发系列教程三(消息体签名及加解密)   C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南)    距离上一篇博文已经半个月了,本来打算每两天更新一次的,但可怜苦逼码农无日无夜的加班.第一篇博文发表后,博文视点的编辑就找到我,问我想不想出版这个系列,我当时瞬间就想到了王大锤的独白,想想真的是有点小激动,后面按照那边的要求,提交了申请书,也提交了目录,可惜文笔不行,再加上最近太

C#微信公众号开发系列教程二(新手接入指南)

原文:C#微信公众号开发系列教程二(新手接入指南) 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南)   微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流程是这样的,用户发送消息到微信服务器,微信服务器将接收到的消息post到用

C#微信公众号开发系列教程五(接收事件推送与消息排重)

原文:C#微信公众号开发系列教程五(接收事件推送与消息排重) 微信公众号开发系列教程一(调试环境部署) 微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) C#微信公众号开发系列教程三(消息体签名及加解密) C#微信公众号开发系列教程四(接收普通消息) C#微信公众号开发系列教程五(接收事件推送与消息排重) 在上一篇的博文中讲到,微信的消息可以大体分为两种类型,一种是包括:文本,语音,图片等的普通消息,另一种就是本篇要将的事件类型.包括:关注/

Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程

原文:Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程 Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程 Red Gate系列文章: Red Gate系列之一 SQL Compare 10.2.0.1337 Edition 数据库比较工具 完全破解+使用教程 Red Gate系列之二

【APACHE MINA2.0开发之一】搭建APACHE MINA框架并实现SERVER与CLIENT端的简单消息传递!

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/apache-mina/831.html Hibernate系列学习阶段到此结束了,那么紧接着进入Apache Mina的开发学习,很多童鞋在微薄和QQ中疑问Himi为什么突然脱离游戏开发了,嘿嘿,其实可能更多的童鞋已经看出来了,Himi在偏向服务器Server端开发了,Hibernate.MySQL等都是为了Server端Mina开发而做的

《精通ArcGIS Server 应用与开发》——第 2 章 ArcGIS Server概述2.1 ArcGIS Server简介

第 2 章 ArcGIS Server概述 精通ArcGIS Server 应用与开发 GIS的应用经历了从单机环境向网络环境的发展历程,网络环境的GIS应用也经历了从局域网内C/S(Client/Server)结构向Internet的发展历程,由此出现了WebGIS.早期的WebGIS功能较弱,主要用于电子地图的发布和简单的空间分析,难以取代传统的C/S桌面GIS.随着IT技术的发展,面向服务的体系结构(Service Oriented Arctitecture,简称SOA)越来越成熟.在SO