web服务器怎么配置 免费个人web服务器推荐
web服务器怎么配置
对于许多网友来说web服务器怎么配置和免费个人web服务器推荐方面的内容,具体详情如下:
回想一下一个http请求的过程,你在浏览器输入xxx.com,经过域名解析 –> 发起tcp的3次握手 –> 建立tcp连接后发起http请求 –> 服务器响应http请求,浏览器得到html代码 –> 浏览器解析html代码,并请求html代码中的资源(如js、css、图片等) –> 浏览器对页面进行渲染呈现给用户。

每一个web服务器程序都需要从网络接受http请求,然后提供http回复给请求者。http回复一般包含一个html文件,有时也可以包含纯文本文件、图像或其他类型的文件。
画外音:web服务器就是一个处理http请求的应用程序。
实现大致步骤:
初始化服务端ServerSocket初始化TreadPoolwhile(true)等待客户端连接 <<服务器启动完成>>客户端请求clientHandler处理客户端的请求线程池的线程处理handler根据输入流解析请求(解析请求行,解析消息头,解析消息正文)根据输出流创建响应对象(发送状态行信息,发送响应头信息,发送响应正文信息) <<静态html处理结束>>寻找servlet 根据请求路径找到需要哪个servlet处理(选择handler)通过反射机制加载这个类实例化servletservlet处理请求(执行handler结束) <<跳转html处理结束>>一个应用程序是不是先要启动起来?main函数当然要有,init方法当然有,我们先不管高性能之类的东西,多路复用Reactor之类的,但是总的有处理并发能力吧,线程池大小默认处理器的核心数,多的也处理不过来!服务器通信归根结底都是socket通信,包括redis服务器都是底层都是socket通信。我们怎么知道http请求来了,先长轮询。
private ServerSocket server;private ExecutorService threadPool;public WebServer() { try { System.out.println("init server begin"); server = new ServerSocket(8080); int poolSize = Runtime.getRuntime().availableProcessors(); threadPool = newFixedThreadPool(poolSize - 1); System.out.println("init server end"); } catch (Exception e) { e.printStackTrace(); } }public void start() { try { while (true) { //TODO } } catch (Exception e) { e.printStackTrace(); }}public static void main(String[] args) { WebServer server = new WebServer(); server.start();}
http请求来了,怎么处理?当然需要有定义handler去处理。
Socket socket = server.accept(); ClientHandler handler = new ClientHandler(socket); threadPool.execute(handler);
handler处理客户端请求并完成响应:
private class ClientHandler implements Runnable { private Socket socket; public ClientHandler(Socket socket) { this.socket = socket; } public void run() { try { //根据输入流解析请求 HttpRequest request= new HttpRequest(socket.getInputStream()); //先判断用户请求的是否为后端请求 if (ServerContext.servletMapping.containsKey( request.getRequestLine()) ) { //通过反射机制加载这个类 //实例化这个Servlet } else { //查看请求的该页面是否存在,存在直接跳转 } else { //设置状态代码404等,跳转404页面 } } } catch (Exception e) { e.printStackTrace(); } finally { socket.close(); } }
相关阅读
-
如何优化企业网站的结构 有关网站结构优化的内容
今天介绍如何优化企业网站的结构和有关网站结构优化的内容的相关经验,下面IT袋为您详细介绍 SEO工作涉及到网站优化的方方面面,其中一点便是优化网站结构来便于搜索引擎的爬取收录,
-
服务器地址在哪里看 获取外网ip地址的方法
跟大家说一说服务器地址在哪里看和获取外网ip地址的方法方面的内容,一起跟随小编看看吧! 说到DNS服务器地址,那么就要先科普一下什么是DNS? DNS:是域名系统 (Domain Name System)的缩写,是
-
js分割函数 新手js切割字符串有的方法
这些方法你知道吗?js分割函数和新手js切割字符串有的方法的IT知识,请看下面详细的介绍。 在项目开发中需要js实现千位分隔符来分割一个整数,比如我想将数字 1234567 显示为“1,234,567”。
-
广告设计网页有哪些 广告设计与制作的网站推荐
本文为你介绍广告设计网页有哪些和广告设计与制作的网站推荐方面的介绍,一起来看看吧! 如果你是搞设计的,这四个创意设计网站,你应该知道! 最近粉丝让我推荐一些广告设计类网站,


