Java内置HttpServer服务使用

一、说明

平时建立好项目,然后放到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();
        }
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值