JavaSE 手写 Web 服务器(一)】的更多相关文章

原文地址:JavaSE 手写 Web 服务器(二) 博客地址:http://www.extlight.com 一.背景 在上一篇文章 <JavaSE 手写 Web 服务器(一)> 中介绍了编写 web 服务器的初始模型,封装请求与响应和多线程处理的内容.但是,还是遗留一个问题:如何根据不同的请求 url 去触发不同的业务逻辑. 这个问题将在本篇解决. 二.涉及知识 XML:将配置信息写到 XML 文件,解决硬编码问题. 反射:读取 XML 文件配置并实例化对象. 三.封装控制器 目前手写的 w…
原文地址:JavaSE 手写 Web 服务器(一) 博客地址:http://www.extlight.com 一.背景 某日,在 Java 技术群中看到网友讨论 tomcat 容器相关内容,然后想到自己能不能实现一个简单的 web 容器.于是翻阅资料和思考,最终通过 JavaSE 原生 API 编写出一个简单 web 容器(模拟 tomcat).在此只想分享编写简单 web 容器时的思路和技巧. 二.涉及知识 Socket 编程:服务端通过监听端口,提供客户端连接进行通信. Http 协议:分析…
Http协议 1.深入概念 Http:HyperText Transfer Protocol,即是超文本传输协议. 2.浅出概念(使用浏览器访问服务器端网页时需要遵循的一系列规则) Http:将各种不同浏览器或各种自研客户端的文字信息组织在一起的网状文本数据. 协议:多方一起约定的一系列规则,然后大家活动必须遵循这些规则,就像法律大家必须遵循才能享受法律提供的保护. 举个栗子:我们平时去饭店吃饭通常会有以下几个步骤: 1.坐到合适的座位上. 2.服务员拿出菜单点餐. 3.服务员按照点餐菜单下单.…
黑马vue---40.结合Node手写JSONP服务器剖析JSONP原理 一.总结 一句话总结: 服务端可以返回js代码给script标签,那么标签会执行它,并且可带json字符串作为参数,这样就成功把数据传过去了 比如客户端有show方法,服务器返回给script标签 show(),那么show 方法会执行 1.跨域访问的原因是什么? 由于浏览器的安全性限制,不允许AJAX访问 协议不同.域名不同.端口号不同的 数据接口,浏览器认为这种访问不安全 2.JSONP的实现原理  是什么? 可以通过…
X_FTP_server 手写FTP服务器-C++实现FTP服务器 项目Gitee链接:https://gitee.com/hsby/ftp_Server 简介 一个基于libevent的高并发FTP服务器,作者 汉森伯逸 目录介绍: code:源代码,其中主要代码目录为 code/X_FTP_server/src doc: 项目文档目录 libs:依赖库,主要为openssl和libevent 在线体验: 47.119.134.217:21, 匿名登录即可 文档 Part I Part II…
预备知识 编写服务器用到的知识点 1) Socket 编程2) HTML3) HTTP 协议4) 反射5) XML 解析6) 服务器编写 Socket编程 https://www.cnblogs.com/bfcs/p/10790130.html HTML知识 HTML:HyperText Markup Language 超文本标记语言用于描述网页文档的一种标记语言 表单(form):与用户之间进行交互 method:请求方式 get/post get 数据量小,安全性低,默认方式 post 数据…
简单web服务器 回忆socket 创建客服端(在httpClient_1包下) public class Client {    public static void main(String[] args) {        //1.创建socket对象        Socket client=null;​        DataOutputStream dos = null;        DataInputStream dis =null;        try {          …
#coding = utf-8 from http.server import BaseHTTPRequestHandler, HTTPServer class RequestHandler(BaseHTTPRequestHandler): Page = ''' <html> <body> <p>Hello, world!</p> </body> </html> ''' #重载do_GET方法 def do_GET(self): se…
在之前的博客中提到过看到html5 的websocket后很感兴趣,终于可以摆脱长轮询(websocket之前的实现方式可以看看Developer Works上的一篇文章,有简单提到,同时也说了websocket基本概念)等方式做一个山寨版的web聊天室. 什么是websocket WebSocket 协议是html5引入的一种新的协议,其目的在于实现了浏览器与服务器全双工通信.看了上面链接的同学肯定对过去怎么低效率高消耗(轮询或comet)的做此事已经有所了解了,而在websocket API…
1.搭建框架 我们只是简单模拟,框架简单分三个模块 a,服务器端server包 b,servlet,根据不同的请求url,利用反射生产对应的servlet c,IO工具包,用来关闭IO流 d,编写web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>login</servlet-name> <s…
minicat 项目介绍 已实现http基础协议.参数接受.servlet.filter.cookie.多文件上传等.支持NIO. 一款轻量化Http服务器.支持bio.nio两种模式.归属Coody Framework下.传送门:https://gitee.com/coodyer/coody-icop 更新说明 2018-07-02:MiniCat正式立项. 2018-07-03:实现Http基本请求与响应. 2018-07-04:实现Session机制.Servlet.Gzip等 2018-…
写在前面的一些P话: 在公司网站开发中,我们往往借助于Flask.Django等网站开发框架去提高网站开发效率.那么在面试后端开发工程师的时候,面试官可能就会问到网站开发的底层原理是什么? 我们不止仅仅会使用框架开发,还需要知其所以然 今天领大家不借助任何框架的基础上手动搭建一个资料查找网站点击此处找管理员免费领取资料 主要内容 TCP网络模型 正则表达式匹配资源 如何编写一个tcp server服务端 开始我们的代码,先是导入模块 如何实现一个静态的服务器呢? 可以使用Python自带的一个通…
package cn.edu.sss.httpServer; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; import java.util.Date; //这个类是对http协议返回的封装 public class HttpResponse…
1.新建目录,起名MyWeb 2.目录下,新建两个目录 WEB-INF, META-INF,,还能够新建一些jsp,html文件 ,如 index.html 3在WEB-INF中必须存在一个文件WEB.xml, 还包括两个目录 lib, classes 4 在WEB.xml中写入最简单的<web-app> ....  </web-app>,,,,,编辑一下index.html 以下是要执行了 1.cmd 2,切换到MyWeb的目录.jar 命令查看一下各个參数的含义 3.jar -…
1,加载Controller     我们需要创建 一个ControllerHelper类,让它来处理下面的逻辑:      通过ClassHelper我们可以获取所有定义了Controller注解的类,可以通过反射获取该类中所有带有Action注解的方法,获取Action注解中的请求表达式,进而获取请求方法与请求路径,封装一个请求对象(Request)和处理对象(Handler),最后将Request与Handler建立一个映射关系,存入一个Action Map中,并提供一个可以根据请求方法与…
我们在Controller中定义了Service成员变量,然后在Controller的Action方法中调用Service成员变量的方法,那么如果实现Service的成员变量? 之前定义了@Inject注解,就用它来实现Service是例话,那么谁来实例化呢. 不是开发者通过new的方式来实例化,而是通过框架自身来实例化,像这类实例化过程称为IOC(控制反转),控制不是由开发者来决定,而是反转给框架了.一般也将控制反转称为DI(依赖注入),可以理解为将某个类需要依赖的成员注入到这个类中,那么我们…
实现Bean容器    使用ClassHelper可以获取所加载的类,但无法通过类来实例化对象,因此我们需要提供一个反射工具类,让它封装java反射相关的API,对外提供更好用的工具方法.将该类命名为ReflectionUtil,代码如下: package org.smart4j.framework.org.smart4j.framework.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.la…
ackage io.renren.common; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.net.JarURLConnection; import java.net.URL; import java.uti…
一  定义框架配置项 在项目的src/main/resources目录下创建一个名为smart.propertiesd的文件,文件的内容如下: smart.framework.jdbc.driver=com.mysql.jdbc.Driver smart.framework.jdbc.url=jdbc:mysql://localhost:3306/jack smart.framework.jdbc.username=root smart.framework.jdbc.password=root…
1.基本概念 1.1.前言 web开发: web,网页的意思,www.baidu.com 静态web html,css 提供给所有人看的数据始终不会发生变化! 动态web 淘宝,几乎是所有的网站: 提供给所有人看的数据始终会发生变化,每个人在不同的时间,不同的地点看到的信息各不相同! 技术栈:Servlet/JSP,ASP,PHP 在Java中,动态web资源开发的技术统称为JavaWeb: 1.2.web应用程序 web应用程序:可以提供浏览器访问的程序: a.html.b.html.....…
转http://www.cnblogs.com/loongsoft/p/7272830.html IIS Web 服务器/ASP.NET 运行原理基本知识概念整理  前言:      记录 IIS 相关的笔记还是从公司笔试考核题开始的,问 Application Pool 与 AppDomain 的区别?      促使我对进程池进了知识的学习,所以记录一下学习的笔记.        我们知道现在 .NET 就业来看,80% 的 .NET 程序员都是从事 Web 开发,      如果对微软唯一…
 前言:      记录 IIS 相关的笔记还是从公司笔试考核题开始的,问 Application Pool 与 AppDomain 的区别?      促使我对进程池进了知识的学习,所以记录一下学习的笔记.        我们知道现在 .NET 就业来看,80% 的 .NET 程序员都是从事 Web 开发,      如果对微软唯一(现在不唯一了)Web 服务器都不熟的话,那就有点儿尴尬了:(不能被微软宠坏了)        Web 站点性能的好坏不在于 Web 服务器本身,IIS 可以说已经…
今天我们来写一个类似于Tomcat的简易服务器.可供大家深入理解一下tomcat的工作原理,本文仅供新手参考,请各位大神指正!首先我们要准备的知识是: Socket编程 HTML HTTP协议 服务器编写 反射 XML解析有了上面的知识,我们可以开始写我们的代码了~~1.首先我们要应用Socket编程写一个简单的服务端用来接收服务器端发来的请求: import java.io.BufferedReader; import java.io.IOException; import java.io.I…
今天我们就仿照Tomcat服务器来手写一个最简单最迷你版的web服务器,仅供学习交流. 1. 在你windows系统盘的F盘下,创建一个文件夹webroot,用来存放前端代码.  2. 代码介绍: (1)ServerThread.java 核心代码,主要用于web文件的读取与解析等.代码如下: 1 package server; 2 3 import java.io.*; 4 import java.net.Socket; 5 import java.util.Date; 6 import ja…
package com.littlepage.testjdbc; import java.io.BufferedReader; import java.io.FileReader; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /* * 手写简易静态服务器 */ public class SimpleServlet { public static void main(Strin…
作为后端开发人员,在实际的工作中我们会非常高频地使用到web服务器.而tomcat作为web服务器领域中举足轻重的一个web框架,又是不能不学习和了解的. tomcat其实是一个web框架,那么其内部是怎么实现的呢?如果不用tomcat我们能自己实现一个web服务器吗? 首先,tomcat内部的实现是非常复杂的,也有非常多的各类组件,我们在后续章节会深入地了解. 其次,本章我们将自己实现一个web服务器的. 下面我们就自己来实现一个看看.([注]:参考了<How tomcat works>这本…
经常用Tomcat,不知道的以为Tomcat很牛,其实Tomcat就是用java写的,Tomcat对jsp的支持做的很好,那么今天我们用java来写一个web服务器 //首先得到一个server, ServerSocket server = new ServerSocket(9999); //等待用户进入 Socket sock = server.accept(); System.out.println("wait"); //创建一个输入流,加上你要发布的页面路径 FileInputS…
手写服务器最终版本; <?xml version="1.0" encoding="UTF-8"?> <web-app> <servlet> <servlet-name>login</servlet-name> <servlet-class>com.bjsxt.servlet.LoginWeb</servlet-class> </servlet> <servlet-m…
这篇文章继续前面的Koa源码系列,这个系列已经有两篇文章了: 第一篇讲解了Koa的核心架构和源码:手写Koa.js源码 第二篇讲解了@koa/router的架构和源码:手写@koa/router源码 本文会接着讲一个常用的中间件----koa-static,这个中间件是用来搭建静态服务器的. 其实在我之前使用Node.js原生API写一个web服务器已经讲过怎么返回一个静态文件了,代码虽然比较丑,基本流程还是差不多的: 通过请求路径取出正确的文件地址 通过地址获取对应的文件 使用Node.js的…