mirror of
https://github.com/Estom/notes.git
synced 2026-02-04 11:04:21 +08:00
Java内容重新整理删除过期的东西
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
/**
|
||||
* 创建时间:2016-8-18
|
||||
*/
|
||||
package cn.aofeng.demo.httpclient.server;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.URI;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.sun.net.httpserver.Headers;
|
||||
import com.sun.net.httpserver.HttpExchange;
|
||||
import com.sun.net.httpserver.HttpHandler;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:aofengblog@163.com">聂勇</a>
|
||||
*/
|
||||
public abstract class AbstractHandler implements HttpHandler {
|
||||
|
||||
private static Logger _logger = Logger.getLogger(AbstractHandler.class);
|
||||
|
||||
protected String _charset = "utf-8";
|
||||
|
||||
public AbstractHandler(String charset) {
|
||||
this._charset = charset;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理请求头。
|
||||
*/
|
||||
public void handleHeader(HttpExchange httpEx) {
|
||||
InetSocketAddress remoteAddress = httpEx.getRemoteAddress();
|
||||
_logger.info("收到来自"+remoteAddress.getAddress().getHostAddress()+":"+remoteAddress.getPort()+"的请求");
|
||||
|
||||
URI rUri = httpEx.getRequestURI();
|
||||
_logger.info("请求地址:"+rUri.toString());
|
||||
|
||||
String method = httpEx.getRequestMethod();
|
||||
_logger.info("请求方法:"+method);
|
||||
|
||||
Headers headers = httpEx.getRequestHeaders();
|
||||
Set<Entry<String, List<String>>> headerSet = headers.entrySet();
|
||||
_logger.info("请求头:");
|
||||
for (Entry<String, List<String>> header : headerSet) {
|
||||
_logger.info(header.getKey()+":"+header.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理响应。
|
||||
*/
|
||||
public void handleResponse(HttpExchange httpEx, String content)
|
||||
throws UnsupportedEncodingException, IOException {
|
||||
String rc = "冒号后面是收到的请求,原样返回:"+content;
|
||||
byte[] temp = rc.getBytes(_charset);
|
||||
Headers outHeaders = httpEx.getResponseHeaders();
|
||||
outHeaders.set("ABC", "123");
|
||||
httpEx.sendResponseHeaders(200, temp.length);
|
||||
OutputStream outs = httpEx.getResponseBody();
|
||||
outs.write(temp);
|
||||
IOUtils.closeQuietly(outs);
|
||||
}
|
||||
|
||||
}
|
||||
66
Java/JavaDemo/codedemo/httpclient/server/BinaryHandler.java
Normal file
66
Java/JavaDemo/codedemo/httpclient/server/BinaryHandler.java
Normal file
@@ -0,0 +1,66 @@
|
||||
/**
|
||||
* 创建时间:2016-8-18
|
||||
*/
|
||||
package cn.aofeng.demo.httpclient.server;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.sun.net.httpserver.HttpExchange;
|
||||
import com.sun.net.httpserver.HttpHandler;
|
||||
|
||||
/**
|
||||
* 二进制处理器。
|
||||
*
|
||||
* @author <a href="mailto:aofengblog@163.com">聂勇</a>
|
||||
*/
|
||||
public class BinaryHandler extends AbstractHandler implements HttpHandler {
|
||||
|
||||
private static Logger _logger = Logger.getLogger(BinaryHandler.class);
|
||||
|
||||
private String _dir = "/home/nieyong/temp/JavaTutorial";
|
||||
|
||||
public BinaryHandler(String charset) {
|
||||
super(charset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(HttpExchange httpEx) throws IOException {
|
||||
super.handleHeader(httpEx);
|
||||
handleRequest(httpEx);
|
||||
String content = "收到一个二进制的请求";
|
||||
super.handleResponse(httpEx, content);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理请求。
|
||||
* @throws IOException
|
||||
*/
|
||||
public String handleRequest(HttpExchange httpEx) throws IOException {
|
||||
OutputStream outs = null;
|
||||
InputStream ins = null;
|
||||
try {
|
||||
File file = new File(_dir, ""+System.currentTimeMillis());
|
||||
if (!file.exists()) {
|
||||
file.createNewFile();
|
||||
}
|
||||
outs = new FileOutputStream(file);
|
||||
ins = httpEx.getRequestBody();
|
||||
IOUtils.copyLarge(ins, outs);
|
||||
} catch (Exception e) {
|
||||
_logger.error("read request or write file occurs error", e);
|
||||
} finally {
|
||||
IOUtils.closeQuietly(ins);
|
||||
IOUtils.closeQuietly(outs);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* 创建时间:2016-8-18
|
||||
*/
|
||||
package cn.aofeng.demo.httpclient.server;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URLDecoder;
|
||||
|
||||
import org.apache.commons.io.IOUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.sun.net.httpserver.HttpExchange;
|
||||
import com.sun.net.httpserver.HttpHandler;
|
||||
|
||||
/**
|
||||
* 字符串处理器。
|
||||
*
|
||||
* @author <a href="mailto:aofengblog@163.com">聂勇</a>
|
||||
*/
|
||||
public class CharacterHandler extends AbstractHandler implements HttpHandler {
|
||||
|
||||
static Logger _logger = Logger .getLogger(CharacterHandler.class);
|
||||
|
||||
public CharacterHandler(String charset) {
|
||||
super(charset);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void handle(HttpExchange httpEx) throws IOException {
|
||||
super.handleHeader(httpEx);
|
||||
String content = handleRequest(httpEx);
|
||||
super.handleResponse(httpEx, content);
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理请求。
|
||||
*/
|
||||
public String handleRequest(HttpExchange httpEx)
|
||||
throws UnsupportedEncodingException, IOException {
|
||||
InputStream ins = httpEx.getRequestBody();
|
||||
String content = URLDecoder.decode(
|
||||
IOUtils.toString(ins, _charset), _charset);
|
||||
_logger.info("请求内容:"+content);
|
||||
IOUtils.closeQuietly(ins);
|
||||
return content;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* 创建时间:2016-8-5
|
||||
*/
|
||||
package cn.aofeng.demo.httpclient.server;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.sun.net.httpserver.HttpServer;
|
||||
|
||||
/**
|
||||
* 简单的HTTP Server。
|
||||
*
|
||||
* @author <a href="mailto:aofengblog@163.com">聂勇</a>
|
||||
*/
|
||||
public class SimpleHttpServer {
|
||||
|
||||
private static Logger _logger = Logger.getLogger(SimpleHttpServer.class);
|
||||
|
||||
private static String _charset = "utf-8";
|
||||
|
||||
/**
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
int port = 8888;
|
||||
try {
|
||||
HttpServer server = HttpServer.create(new InetSocketAddress(port), 128);
|
||||
server.createContext("/get", new CharacterHandler(_charset));
|
||||
server.createContext("/post", new CharacterHandler(_charset));
|
||||
server.createContext("/file", new BinaryHandler(_charset));
|
||||
server.start();
|
||||
_logger.info("http server already started, listen port:"+port);
|
||||
} catch (IOException e) {
|
||||
_logger.error("", e);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user