乞丐版servlet容器第4篇】的更多相关文章

本系列参照pkpk1234大神的BeggarServletContainer,具体请访问:https://github.com/pkpk1234/BeggarServletContainer. 一步一步从无到有写一个servlet容器. 一开始不会涉及复杂的部分,中间会进行多次重构,直到完成复杂的功能. 1. Server接口编写 Maven开发环境搭建好了,可以开始写代码了. 但是应该怎么写呢,完全没头绪. 还是从核心基本功能入手,Servlet容器,说白了就是一HTTP服务器嘛,能支持Ser…
6. NIOConnector 现在为Server添加NIOConnector,添加之前可以发现我们的代码其实是有问题的.比如现在的代码是无法让服务器支持同时监听多个端口和IP的,如同时监听 127.0.0.1:18080和0.0.0.0:18443现在是无法做到的.因为当期的端口号是Server的属性,并且只有一个,但是端口其实应该是Connector的属性,因为Connector专门负责了Server的IO. 重构一下,将端口号从Server中去掉,取而代之的是Connector列表:将当期…
4 EventListener接口 让我们继续看SocketConnector中的acceptConnect方法: @Override protected void acceptConnect() throws ConnectorException { new Thread(() -> { while (true && started) { Socket socket = null; try { socket = serverSocket.accept(); LOGGER.info(…
2. 监听端口接收请求 上一步中我们已经定义好了Server接口,并进行了多次重构,但是实际上那个Server是没啥毛用的东西. 现在要为其添加真正有用的功能. 大师说了,饭要一口一口吃,衣服要一件一件脱,那么首先来定个小目标--启动ServerSocket监听请求,不要什么多线程不要什么NIO,先完成最简单的功能. 下面还是一步一步来写代码并进行重构优化代码结构. 关于Socket和ServerSocket怎么用,网上很多文章写得比我好,大家自己找找就好. 代码写起来很简单:(下面的代码片段有…
[0]README 0.1)本文是对 一个servlet容器  的补充: 0.2)发这个博文的最终目的是为了请教各位前辈,帮我解决一个问题,问题描述在文末, 谢谢: [1]Servlet容器 1.1)通过一个简单的servlet容器这篇博文,我们看到:其中的核心代码是 类加载器, 然而,在我follow 其代码,分别在命令行 和 Eclipse 执行时,得到了不同的执行结果: 参见我的提问 对于URLClassLoader,Eclipse执行正确,而命令行执行抛出异常 这个问题描述: 1.2)抛…
嵌入式Servlet容器:应用打成可执行的jar 优点:简单.便携: 缺点:默认不支持JSP.优化定制比较复杂 (使用定制器[ServerProperties/自定义EmbeddedServletContainerCustomizer]) (自己编写嵌入式Servlet容器的创建工厂[EmbeddedServletContainerFactory]): 那么如果要使用外置的servlet呢? 应用war包的方式打包: 外置的Servlet容器:外面安装Tomcat--- 步骤 一.必须创建一个w…
EmbeddedServletContainerAutoConfiguration:嵌入式的Servlet容器自动配置? @AutoConfigureOrder(Ordered.HIGHEST_PRECEDENCE) @Configuration @ConditionalOnWebApplication @Import(BeanPostProcessorsRegistrar.class) //导入BeanPostProcessorsRegistrar:Spring注解版:给容器中导入一些组件 //…
什么时候创建嵌入式的Servlet容器工厂?什么时候获取嵌入式的Servlet容器并启动Tomcat: 获取嵌入式的Servlet容器工厂: 1).SpringBoot应用启动运行run方法 2).refreshContext(context);SpringBoot刷新IOC容器[创建IOC容器对象,并初始化容器,创建容器中的每一个 组 件 ] : 如 果 是 web 应 用 创 建 AnnotationConfigEmbeddedWebApplicationContext, 否 则 : Anno…
SpringBoot默认使用Tomcat作为嵌入式的Servlet容器 问题? 一.如何定制和修改Servlet容器的相关配置 1.方法1修改和server有关的配置(ServerProperties[也是EmbeddedServletContainerCustomizer]) server.port=8081 server.context‐path=/crud server.tomcat.uri‐encoding=UTF‐8 //通用的Servlet容器设置 server.xxx //Tomc…
上一篇,我们讲解了如果开发一个简单的Http服务器,这一篇,我们扩展一下,让我们的服务器具备servlet的解析功能. 简单介绍下Servlet接口 如果我们想要自定义一个Servlet,那么我们必须继承Servlet,并且实现下面几个重要的方法 public void init(ServletConfig config) throws ServletException public void service(ServletRequest request,ServletResponse resp…