基于异步Servlet通过Java实现Web的异步编程

为什么要异步编程

在现在大规模高并发的 WEB 应用中,由于硬件及网络的限制,I/O 处理速度相当较慢,往往成为 WEB 系统的性能瓶颈。">Node.js 通过非阻塞的 IO 和事件驱动很好的缓解了 Web 服务器在高并发时的资源占用,极大的提高了 WEB 服务器对高并发的处理能力。同时 Node.js 带来的轻量快捷的异步编程给 WEB 开发带来了一股清新的空气。那么对于广大的 Java 开发者来说,是否可以实现类似的 WEB 开发呢,答案是肯定的。利用 Groovy 动态语言、Jetty 等轻量的 WEB 服务器,可以很方便的进行 WEB 的异步编程。

Groovy 简介

Groovy 是一个基于 Java 虚拟机的动态语言。Groovy 代码能够与 Java 代码很好地结合。为 Java 开发者提供了现代流行的动态编程语言特性,而且学习成本很低。目前最新的发布版本是 1.8. 我们下面示例的代码就是使用这一版本。

Jetty 简介

Jetty 是一个用 Java 实现、开源、基于标准的,并且具有丰富功能的 HTTP 服务器和 Web 容器,可以免费的用于商业。现在已经有非常多的成功产品基于 Jetty,比如 Apache Geromino、Eclipse、Google AppEngine 等。Jetty 可以用来作为一个传统的 Web 服务器,也可以作为一个动态的内容服务器,并且 Jetty 可以非常容易的嵌入到 Java 应用程序当中。目前最新版是 8.1. 我们下面示例的代码就是使用这一版本。

怎样使用 Jetty 快速开发轻量 WEB 服务

Jetty 可以非常方便的嵌入到应用程序当中,就像使用一般的类库一样。示例代码如下:

清单 1. 用 Jetty 快速开发轻量 WEB 服务

class DefaultHandler extends AbstractHandler { void handle(String target, Request baseRequest, Http
ServletRequest request,HttpServletResponse response) { response.contentType = "text/html;charset=utf-8" response.status = HttpServletResponse.SC_OK baseRequest.handled = true response.writer.println "<h1>Hello World!</h1>" } } Server server = new Server(
8080 ) server.setHandler( new DefaultHandler() ) server.start() server.join()

从代码我们可以看到先实例化一个 Server 对象,并指定 Server 监听的端口是 8080。然后为 Server 设定一个处理 Web 请求的 Handler,我们这里是 DefaultHandler,最后调用 start 方法启动 Server。这样一个简单的 Web 服务器就可以使用了,只需要简单的几行代码。

在浏览器中访问 URL:http://localhost:8080,会得到下面的响应 :

图 1. Web 页面响应

Jetty 中 Servlet 编程

在 Jetty 中加入 Servlet 也很方便,下面代码演示了怎样在 Jetty 中用 Servlet 提供 Web 服务。我们只需要将 handler 换成 ServletContextHandler 就可以了。

清单 2. Jetty 中 Servlet 编程

import javax.servlet.http.* import org.eclipse.jetty.server.* import org.eclipse.jetty.servlet.* class HelloWorldServlet extends HttpServlet { void doGet(HttpServletRequest request, HttpServletResponse response) { response.contentType = "text/html;charset=utf-8" response.status = HttpServletResponse.SC_OK response.writer.println "<h1>Hello World ! </h1>" } } Server server = new Server(8080) ServletContextHandler context = new ServletContextHandler(\ ServletContextHandler.SESSIONS ) context.contextPath = "/" server.setHandler(context) context.addServlet( new ServletHolder(new HelloWorldServlet()),"/*") server.start() server.join()

时间: 2024-09-21 10:48:45

基于异步Servlet通过Java实现Web的异步编程的相关文章

servlet+jsp+java实现Web 应用

用java来构建一个web应用是特别容易的事情,jsp和php很像,可以嵌套在html中.程序的结构很简单,也很清楚,本文主要记录下大概的开发过程和环境的搭建. 环境搭建 下载: eclipse  tomcat eclipse tomcat 插件 开发过程 1.建立一个Dynamic Web Project 2.创建一个欢迎页面 页面可以是jsp/html,我们选择一个jsp页面(放在WebContent内) <%@ page language="java" contentTyp

异步操作和Web服务,第2部分:构建异步Web服务的编程模式

在本系列的第一篇文章中,我讨论了异步操作的性质以及它们如何应用于 Web 服务.在某些情况下,对 Web 服务请求的响应并不是立即提供的,而是在初始请求事务完成后的某个时候提供.Web 服务规范和标准并不显式支持这种 异步操作(asynchronous operation):但是,那些标准的确包含可以作为异步操作基础的基础架构和机制.通过本系列的第一部分,您应该已经知道了如何使用现有的基础架构来支持异步行为:如果您还没有看过那篇文章,我强烈建议您去看看,因为那里的信息将帮助您理解现在的这一部分.

基于java得web服务器实现[Z]

web|web服务|web服务器 基于Java的Web服务器工作原理1 一个 Web 服务器也被称为 HTTP 服务器,它通过 HTTP 协议与客户端通信.这个客户端通常指的是 Web 浏览器.一个基于 Java 的 Web 服务器用到二个重要的类,java.net.Socket 与 java.net.ServerSocket ,并通过 HTTP 消息通信.因此,本文从讨论 HTTP 与这二个类开始,然后我将解释一个与本文相关的简单的 Web 应用. The Hypertext Transfer

用Axis开发基于Java的Web服务

概述 本文介绍了一个比较简单实用的基于Java的SOAP引擎--Apache组织推出的 Axis--的安装.配置和应用开发方法,希望对有兴趣做基于Java的Web Services应用开发的朋友有所帮助. Axis简介 Axis是Apache组织推出的SOAP引擎,Axis项目是Apache组织著名的SOAP项目 的后继项目,目前最新版本是采用Java开发的1.1版本,C++的版本正在开发之中 .Axis v1.1软件包可以从http://ws.apache.org/axis/dist/1_1/

java servlet结合Oracle搭建java的web开发环境_java

最近公司领导告诉接下去接的一个产品,可能会涉及到oracle数据库,以前用得最多的是mssql,前些时间学了下mysql也算少许用过.oracle没接触过.应为我之前做过.net开发,所以数据访问接口这块,涉及到的ashx wcf webserver这些,学了下servlet感觉 这些技术比较像 ashx编写的接口. 一. 首先在电脑上安装了 oracle数据库, 安装ORACLE数据库按常理说,直接下载安装就行了,但是中途是遇到了问题的,原因就是我的系统是Win7 64 oracle的clie

使用异步Servlet扩展AJAX应用程序--多路复用客户端套接字

作为Web应用程序模型的AJAX的出现使服务器端的面貌发生了巨大的变化.用户对着Web页面填写表单并单击提交按钮转到下一个链接的典型Web使用模式现在正在转变为更先进的客户端JavaScript以及功能更丰富的用户界面,只要对表单进行操作,比如单击一个复选框.按下一个键或将鼠标移到一个选项卡上,该用户界面就会不断地与服务器交互. 考虑一下从客户端传输到服务器的数据量有多大.从可用性的角度来看,用户在一个薄客户端浏览器上获得了富用户界面,无需安装任何东西.但是,当在服务器端扩展这些应用程序时就要付

使用异步Servlet扩展AJAX应用程序

ajax|servlet|程序|异步 <br /> 作为Web应用程序模型的AJAX的出现使服务器端的面貌发生了巨大的变化.<table border="0" cellspacing="0" cellpadding="0" align="left" style="margin-top:10px;margin-right:7px;margin-bottom:3px;margin-left:0px&qu

Java RESTful Web Service实战(第2版)

Java核心技术系列 Java RESTful Web Service实战 (第2版) 韩陆 著 图书在版编目(CIP)数据 Java RESTful Web Service实战 / 韩陆著. -2版. -北京:机械工业出版社,2016.7 (Java核心技术系列) ISBN 978-7-111-54213-1 Ⅰ. J-   Ⅱ. 韩-   Ⅲ. JAVA语言-程序设计   Ⅳ. TP312 中国版本图书馆CIP数据核字(2016)第156331号 Java RESTful Web Servi

使用异步Servlet改进应用性能

Nikita Salnikov Tarnovski是plumbr的高级开发者,也是一位应用性能调优的专家,他拥有多年的性能调优经验.近日,Tarnovski撰文谈到了如何通过异步Servlet来改进常见的Java Web应用的性能问题. 众所周知,Servlet 3.0标准已经发布了很长一段时间,相较于之前的2.5版的标准,新标准增加了很多特性,比如说以注解形式配置Servlet.web.xml片段.异步处理支持.文件上传支持等.虽然说现在的很多Java Web项目并不会直接使用Servlet进