jdk1.6 httpserver如何获取表单post过来的表单元素值呢?
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();
}
}
MyHttpHandler 中如何去获取request中的各个表单元素的值?
没深入研究过jdk1.6的新特性,查看api文档看,有没相关的类或方法,
其实它只是一个参考实现而已,当学习之用
你这不是得到了
InputStream in = httpExchange.getRequestBody(); //获得输入流
通过它就能得到post的数据,自己根据http协议来解析嘛
输入流的内容是name=value&name2=value类似
客服端的IP地址在http协议层是得不到了,那是由它底层的tcp协议才能得到,
你查查它的api看有没有相应的方法来得到