JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,它支持Http和Https协议,提供了HTTP1.1的部分实现,没有被实现的那部分可以通过扩展已有的Http Server API来实现,程序员必须自己实现HttpHandler接口,HttpServer会调用HttpHandler实现类的回调方法来处理客户端请求,在这里,我们把一个Http请求和它的响应称为一个交换,包装成HttpExchange类,HttpServer负责将HttpExchange传给HttpHandler实现类的回调方法
我想开发一个j2se的小程序,它能接受网页传来的参数,并对传来参数做些处理。我希望这个小程序即可能接受网页传过来的参数,也能接受OutputStream流传来参数,JDK6新特性能够实现。
- package com.tdt.server.httpserver;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.net.InetSocketAddress;
- import com.sun.net.httpserver.HttpExchange;
- import com.sun.net.httpserver.HttpHandler;
- import com.sun.net.httpserver.HttpServer;
- import com.sun.net.httpserver.spi.HttpServerProvider;
- /**
- * @project SimpleHttpServer
- * @author sunnylocus
- * @vresion 1.0 2009-9-2
- * @description 自定义的http服务器
- */
- public class MyHttpServer {
- //启动服务,监听来自客户端的请求
- public static void httpserverService() throws IOException {
- HttpServerProvider provider = HttpServerProvider.provider();
- HttpServer httpserver =provider.createHttpServer(new InetSocketAddress(6666), 100);//监听端口6666,能同时接 受100个请求
- httpserver.createContext("/myApp", new MyHttpHandler());
- httpserver.setExecutor(null);
- httpserver.start();
- System.out.println("server started");
- }
- //Http请求处理类
- static class MyHttpHandler implements HttpHandler {
- public void handle(HttpExchange httpExchange) throws IOException {
- String responseMsg = "ok"; //响应信息
- InputStream in = httpExchange.getRequestBody(); //获得输入流
- BufferedReader reader = new BufferedReader(new InputStreamReader(in));
- String temp = null;
- while((temp = reader.readLine()) != null) {
- System.out.println("client request:"+temp);
- }
- httpExchange.sendResponseHeaders(200, responseMsg.length()); //设置响应头属性及响应信息的长度
- OutputStream out = httpExchange.getResponseBody(); //获得输出流
- out.write(responseMsg.getBytes());
- out.flush();
- httpExchange.close();
- }
- }
- public static void main(String[] args) throws IOException {
- httpserverService();
- }
- }
二、测试类
- package com.tdt.server.test;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.util.concurrent.ExecutorService;
- import java.util.concurrent.Executors;
- /**
- * @project SimpleHttpServer
- * @author sunnylocus
- * @vresion 1.0 2009-9-2
- * @description 测试类
- */
- public class Test {
- public static void main(String[] args) {
- ExecutorService exec = Executors.newCachedThreadPool();
- // 测试并发对MyHttpServer的影响
- for (int i = 0; i < 20; i++) {
- Runnable run = new Runnable() {
- public void run() {
- try {
- startWork();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- };
- exec.execute(run);
- }
- exec.shutdown();// 关闭线程池
- }
- public static void startWork() throws IOException {
- URL url = new URL("http://127.0.0.1:6666/myApp");
- HttpURLConnection urlConn = (HttpURLConnection) url.openConnection();
- urlConn.setDoOutput(true);
- urlConn.setDoInput(true);
- urlConn.setRequestMethod("POST");
- // 测试内容包
- String teststr = "this is a test message";
- OutputStream out = urlConn.getOutputStream();
- out.write(teststr.getBytes());
- out.flush();
- while (urlConn.getContentLength() != -1) {
- if (urlConn.getResponseCode() == 200) {
- InputStream in = urlConn.getInputStream();
- BufferedReader reader = new BufferedReader(new InputStreamReader(in));
- String temp = "";
- while ((temp = reader.readLine()) != null) {
- System.err.println("server response:" + temp);// 打印收到的信息
- }
- reader.close();
- in.close();
- urlConn.disconnect();
- }
- }
- }
- }
相关推荐
JDK6的新特性之一:Desktop类和SystemTray类 JDK6的新特性之二:使用JAXB2来实现对象与XML之间的映射 JDK6的新特性之三:理解StAX ...JDK6提供了一个简单的Http Server API,据此我们可以构建自己的嵌入式Http Server,
JDK6的新特性之五_轻量级HttpServer JDK6的新特性之七_用Console开发控制台程序 JDK6的新特性之八_嵌入式数据库Derby JDK6的新特性之六_插入式注解处理API JDK6的新特性之九_CommonAnnotations JDK6的新特性...
ThinServer是基于JDK提供的HttpServer开发的Web服务容器和以socket开发的ftp server,体积小。仅43K大小。提供windows,linux启动、停止脚本。Http应用开发简单只需要实现...
jdk-6u20-windows-x64.exe linx64位下载: 第1部分:http://download.csdn.net/detail/love254443233/5263081 第2部分:http://download.csdn.net/detail/love254443233/5263160 附:java配置方法.txt 1:找到JDK...
JDK1.5配置+Tomcat5.0配置
http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA-jdk6.zip/download 3.配置JBOSS环境变量 JBOSS_HOME=D:\jboss-5.1.0.GA 然后在path中添加 ;%JBOSS_HOME%\bin; 4.测试安装...
EmbedWeb 是一个方便的类,它包装了 HttpServer Sun,现在是 Oracle, 与 JDK6+ 捆绑。 这提供了一种非常简单的方法来实现任何基于 Java 的应用程序中的 HTTP 侦听器,无论是桌面应用程序还是应用程序像Tomcat这样的...
Oracle SQL Developer 1.5.5.59.69-with-jdk6下载地址: part1: http://download.csdn.net/source/1986539 part2: http://download.csdn.net/source/1986547 ====================================================...
jdk.httpserver Defines the JDK-specific HTTP server API. jdk.incubator.httpclient Defines the high-level HTTP and WebSocket API. jdk.jartool Defines tools for manipulating Java Archive (JAR) files,...
jdk1.6新特性 1.Desktop类和SystemTray类 ...5.轻量级Http Server API 6.插入式注解处理API(Pluggable Annotation Processing API) 7.用Console开发控制台程序 8.对脚本语言的支持 9.Common Annotations
NIOHTTP服务器 带有 JDK 的 NIO 示例 HTTP 服务器 使用以下命令也使用 Maven build 构建项目 ... java -jar target/NIOHTTPServer-1.0-jar-with-dependencies.jar N2 -port 8000 -webroot /www/mysite/
JDK1.6的九大新特性 九:Common Annotations 八:对脚本语言的支持 ...五:轻量级Http Server API 四:使用Compiler API 三:理解StAX 二:使用JAXB2来实现对象与XML之间的映射 一:Desktop类和SystemTray类
$ git clone https://github.com/lisahamm/HTTPServer 然后cd进入目录 $ cd HTTPServer 使用gradle包装器构建JAR $ ./gradlew build 运行服务器 从命令行启动服务器 $ java -jar build/libs/...
JDK6新特性目录导航: Desktop类和SystemTray类 JAXB2实现对象与XML之间的映射 StAX Compiler API 轻量级 Http Server API 插入式注解处理API(Pluggable Annotation Processing API) 用Console开发控制台程序 对...
java jdk api帮助文档中文版 JavaTM Platform Standard Ed. 6 所有类 软件包 java.applet java.awt java.awt.color java.awt.datatransfer java.awt.dnd java.awt.event java.awt.font java.awt.geom ...
2.修改tomcat的端口为8088,修改方法如下,打到conf下的文件 server.xml,因为zookeeper会用到8080的端口,所以为了不冲突,把Tomcat的端口改一下。 3 .先启动zookeeper,然后再启动tomcat,在浏览器输入 ...
分布式系统测试–使用HttpServer的一个并发问题上周发布的一个系统,出现了一个很诡异的现象。抽象一下描述,问题大概就是这样的:需求:一次http请求,通过url的params来读取服务器上的一个日志,并将日志内容返回给...
Oracle SQL Developer 1.5.5.59.69-with-jdk6下载地址: part1: http://download.csdn.net/source/1986539 part2: http://download.csdn.net/source/1986547 ====================================================...
使用批处理安装jdk并配置环境变量,已在windows7、windows10、windows server2003和windows server2012环境下测试
java.rmi.server 提供支持服务器端 RMI 的类和接口。 java.security 为安全框架提供类和接口。 java.security.acl 此包中的类和接口已经被 java.security 包中的类取代。 java.security.cert 提供用于解析和管理...