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…
原文地址: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 协议:分析…
手写服务器最终版本; <?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…
前言 Http我们都已经耳熟能详了,而关于Http学习的文章网上有很多,各个知识点的讲解也可说是深入浅出.然而,学习过后,我们对Http还是一知半解.问题出在了哪? Http是一个客户机与服务器之间的通信的协议,真的想学习Http,就必须把客户机和服务器也学了,也就是说,必须立体的学习,不然我们永远都是一知半解. 现在,我们手工搭建一个服务器,立体的学习下Http,将我们以为的知识点连成线. 定义 学习前,简单的了解下定义: Http是超文本传输协议,用于保证客户机与服务器之间的通信.在客户机和…
本次博客的目标 1. 手写spring循环依赖的整个过程 2. spring怎么解决循环依赖 3. 为什么要二级缓存和三级缓存 4. spring有没有解决构造函数的循环依赖 5. spring有没有解决多例下的循环依赖. 一.  什么是循环依赖? 如下图所示: A类依赖了B类, 同时B类有依赖了A类. 这就是循环依赖, 形成了一个闭环 如上图: A依赖了B, B同时依赖了A和C , C依赖了A. 这也是循环依赖. , 形成了一个闭环 那么, 如果出现循环依赖, spring是如何解决循环依赖问…
目录 1 new 运算符简介 2 new 究竟干了什么事 3 模拟实现 new 运算符 4 补充 预备知识: 了解原型和原型链 了解this绑定 1 new 运算符简介 MDN文档:new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例. class Person { constructor(name) { this.name = name; } } // 创建自定义对象类型的实例 const person = new Person('小明') // 创建具有构造函数的内置…
Tomcat 是非常流行的 Web Server,它还是一个满足 Servlet 规范的容器.那么想一想,Tomcat 和我们的 Web 应用是什么关系? 从感性上来说,我们一般需要把 Web 应用打成 WAR 包部署到 Tomcat 中,在我们的 Web 应用中,我们要指明 URL 被哪个类的哪个方法所处理「不论是原始的 Servlet 开发,还是现在流行的 Spring MVC 都必须指明」. 由于我们的 Web 应用是运行在 Tomcat 中,那么显然,请求必定是先到达Tomcat 的.T…
package cn.daheww.demo.juc.reentrylock; import sun.misc.Unsafe; import java.lang.reflect.Field; import java.util.concurrent.locks.LockSupport; /** * @author daheww * @date 2022/7/7 */ public class MiniReentryLock implements Lock { /** * 锁的是什么 --> 资源…
项目工程总览: 1.Dispatcher类(一个请求与响应就是一个Dispatcher) package com.bjsxt.server; import java.io.IOException; import java.net.Socket; import com.bjsxt.servlet.Servlet; import com.bjsxt.util.IOCloseUtil; /** * 一个请求与响应就是一个Dispatcher * @author Administrator * */ p…