一、说明
平时建立好项目,然后放到tomcat或weblogic里面启动,然后就可以为外界提供服务了。现在项目并不大,所以可以考虑使用Java内置的HttpServer。
二、代码实现
import com.sun.net.httpserver.Headers;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.net.InetSocketAddress;
public class HttpServerTest {
public static void main(String[] arg) throws Exception {
//在浏览器输入127.0.0.1:8091/test即可进入到此服务
HttpServer server = HttpServer.create(new InetSocketAddress(8091), 0);
server.createContext("/test", new TestHandler());
server.start();
}
static class TestHandler implements HttpHandler{
@Override
public void handle(HttpExchange exchange) throws IOException {
//这里可以通过exchange获取请求和相应,得到请求内容或设置相应内容
System.out.println("url为:"+exchange.getRequestURI());
//下面这些请求头都可以在request中获取
//Accept-encoding : [gzip, deflate, br]
//Accept : [text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9]
//Sec-fetch-user : [?1]
//Connection : [keep-alive]
//Host : [127.0.0.1:8001]
//Sec-fetch-site : [none]
//Sec-fetch-mode : [navigate]
//User-agent : [Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36]
//Accept-language : [zh-CN,zh;q=0.9]
//Upgrade-insecure-requests : [1]
//Cache-control : [max-age=0]
Headers headers=exchange.getRequestHeaders();
Set<Entry<String, List<String>>> headSet = headers.entrySet();
for(Entry e:headSet) {
System.out.println(e.getKey()+" : "+e.getValue());
}
//获取请求体中的内容
InputStream in=exchange.getRequestBody();
byte[] b=new byte[1024];
int length=0;
while((length=in.read(b))>0) {
System.out.println(new String(b,0,length));
}
//设置相应
String response = "hello world";
exchange.sendResponseHeaders(200, 0);
OutputStream os = exchange.getResponseBody();
//将hello world塞入相应中,返回给调用者
os.write(response.getBytes());
os.close();
}
}
}