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

简介:

关于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. import org.eclipse.jetty.server.Server; 
  2. import org.eclipse.jetty.servlet.ServletContextHandler; 
  3. import org.eclipse.jetty.servlet.ServletHolder; 
  4.  
  5. import servlet.FirstServlet; 
  6.  
  7. /** 
  8.  * @author Himi 
  9.  */ 
  10. public class ServletServer { 
  11.     public static void main(String[] args) throws Exception { 
  12.         Server server = new Server(8080);   
  13.  
  14.         ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); 
  15.         context.setContextPath("/");   
  16.  
  17.         server.setHandler(context);   
  18.  
  19.         context.addServlet(new ServletHolder(new FirstServlet()), "/himi"); 
  20.         context.addServlet(new ServletHolder(new FirstServlet("Hello FirstServlet!")), "/xiaominghimi");   
  21.  
  22.         server.start(); 
  23.         server.join(); 
  24.     } 

 

首先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. package servlet; 
  2.  
  3. import java.io.IOException; 
  4.  
  5. import javax.servlet.ServletException; 
  6. import javax.servlet.http.HttpServlet; 
  7. import javax.servlet.http.HttpServletRequest; 
  8. import javax.servlet.http.HttpServletResponse; 
  9.  
  10. /** 
  11.  * @author Himi 
  12.  */ 
  13. public class FirstServlet extends HttpServlet { 
  14.     private static final long serialVersionUID = 1L
  15.     private String msg = "Hello World!";   
  16.  
  17.     public FirstServlet() { 
  18.     }   
  19.  
  20.     public FirstServlet(String msg) { 
  21.         this.msg = msg; 
  22.     }   
  23.  
  24.     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
  25.         String name = request.getParameter("name"); 
  26.         String password = request.getParameter("password");  
  27.  
  28.         response.setCharacterEncoding("UTF-8"); 
  29.         response.setContentType("text/html"); 
  30.         response.setStatus(HttpServletResponse.SC_OK); 
  31.         response.getWriter().println("<h1>" + msg + "</h1>"); 
  32.         response.getWriter().println("测试中文</br>session=" + request.getSession(true).getId()+"</br>"); 
  33.         if(name!=null) 
  34.             response.getWriter().println("名字:"+name+"</br>");   
  35.  
  36.         if(password!=null) 
  37.             response.getWriter().println(" 密码:"+password+"</br>");   
  38.  
  39.     } 

本类中我们重写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方式










本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/969798,如需转载请自行联系原作者
目录
相关文章
|
Rust 前端开发 API
Tauri 开发实践 — Tauri HTTP 请求开发
本文介绍了如何在 Tauri 中发起 HTTP 请求。首先通过安装 Tauri 生态中的工具包并配置 `tauri.conf.json` 文件来允许特定域名的 HTTP 通信。接着封装了一个简单的 HTTP 客户端类,并在页面中使用该客户端实现 GET 和 POST 请求。最后提供了完整的源码地址以供参考。此功能使得桌面应用能够与远程服务器进行交互,增强了应用的实用性。
1544 1
Tauri 开发实践 — Tauri HTTP 请求开发
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
646 61
|
Linux C语言 iOS开发
C语言结合AWTK开发HTTP接口访问界面
这样,我们就实现了在C语言中使用libcurl和AWTK来访问HTTP接口并在界面上显示结果。这只是一个基础的示例,你可以根据需要添加更多的功能和优化。例如,你可以添加错误处理机制、支持更多HTTP方法(如POST、PUT等)、优化用户界面等。
789 82
|
运维 网络协议 安全
为什么经过IPSec隧道后HTTPS会访问不通?一次隧道环境下的实战分析
本文介绍了一个典型的 HTTPS 无法访问问题的排查过程。问题表现为 HTTP 正常而 HTTPS 无法打开,最终发现是由于 MTU 设置不当导致报文被丢弃。HTTPS 因禁止分片,对 MTU 更敏感。解决方案包括调整 MSS 或中间设备干预。
|
C# 图形学 开发者
Unity开发中使用UnityWebRequest从HTTP服务器下载资源。
总之,UnityWebRequest就是游戏开发者手中的万能钓鱼竿,既可以获取文本数据,也能钓上图片资源,甚至是那声音的涟漪。使用UnityWebRequest的时候,你需要精心准备,比如确定URL、配置请求类型和头信息;发起请求;巧妙处理钓获的数据;还需要机智面对网络波澜,处理各种可能出现的错误。按照这样的过程,数据的钓取将会是一次既轻松愉快也效率高效的编程钓鱼之旅。
829 18
|
XML JSON Linux
Reqable:跨平台HTTP开发与调试工具
Reqable是一款功能强大且易于使用的跨平台HTTP开发与调试工具,具有多平台支持、全面的HTTP请求构建与解析、请求历史记录和环境管理等功能。它简化了HTTP请求的构建、发送和响应分析过程,为开发者提供了极大的便利。通过Reqable,开发者可以更高效地进行HTTP开发和调试,提高工作效率和代码质量。
1425 26
|
人工智能 网络协议 API
开发效率翻倍!Apipost这些协议调试秘籍,从HTTP到金融报文全搞定
Apipost是一款强大的API研发管理工具,支持多种协议与数据格式,包括HTTP(s)、WebSocket、SSE、gRPC、TCP及金融协议(如ISO 8583、FIX)。它内置国密算法库,提供HTTP文件秒传、全局参数配置等实用功能。在SSE调试中,可轻松处理AI模型流式响应;WebSocket与Socket.IO实现高效实时通信;GraphQL支持可视化Query编写;TCP模块解决金融报文编码难题;gRPC则具备服务反射与流式调试能力。Apipost不仅简化了多协议切换的复杂性,还自动生成文档,显著提升开发效率,让开发者专注于核心业务逻辑。
|
缓存 安全 数据处理
Objective-C开发:从HTTP请求到文件存储的实战
Objective-C开发:从HTTP请求到文件存储的实战
|
监控 开发者 Perl
perl use HTTP::Server::Simple 轻量级 http server
使用 **HTTP::Server::Simple** 模块,Perl 开发者可以快速创建和配置一个轻量级的HTTP服务器。通过继承和扩展 `handle_request` 方法,可以实现复杂的请求处理逻辑。结合日志记录功能,可以更好地监控服务器运行情况。无论是用于开发测试还是简单的生产环境应用,这种轻量级解决方案都能提供很好的支持。
507 2
|
缓存 运维 Serverless
函数计算产品使用问题之怎么优化HTTP Server的启动速度
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。