模拟Tomcat

java入门--模拟实现一个tomcat服务器 为了让新同学深入的理解tomcat的运行原理,动手实现一个简单的tomcat服务器。文章比较长,而且需要跟着动手练习,才能有所收获。思路模型图:项目结构图:web.xml映射文件中的内容,用于定义URL请求映射路径和java类之间的对应关系 2 Entity实体类的处理 3 Mapping映射类的处理 4 DOM4j解析xml映射文件 导入DOM4J jar包,帮助我们解析web.xml文件 5处理ServletContext类 全局容器,目前用于存储映射关系 6 编写Web 阅读详情
请求头:GET /aaa/index.html HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*Accept-Language: zh-cnUA-CPU: x86Accept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; CIBA) Host: localhost Connection: Keep-AliveCookie: count=john_123      响应头:HTTP/1.1 200 OK Server:Apache-Coyote/1.1Content-type:text/html;charset=GBKContent-length:100空行……..
class Client implements Runnable{
	private static String basePath="d:/web";
	private Socket socket;
	
	public Client(Socket socket){
		this.socket=socket;
	}
	
	@Override
	public void run() {
		PrintWriter writer=null;
		BufferedReader reader=null;
		BufferedReader freader=null;
		try {
			InputStream in=socket.getInputStream();
			OutputStream out=socket.getOutputStream();
			writer = new PrintWriter(new OutputStreamWriter(out));
			
			reader = new BufferedReader(new InputStreamReader(in));
			
			String firstLine=reader.readLine();
			String url=firstLine.split(" ")[1];
			String path=basePath+url;
			freader = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
			
			writer.write("HTTP/1.1 200 OK\r\n");
			writer.write("Content-type:text/html;charset=GBK\r\n");
			writer.write("\r\n");
			
			String s="";
			while((s=freader.readLine())!=null){
				writer.print(s);
			}
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		finally{
		writer.close();
		try {
			reader.close();
			freader.close();
			socket.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		}
		
	}
	
}

 

package server;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
	
	public void start() throws Exception{
		ServerSocket ser=new ServerSocket(7776);
		while(true){
			Socket socket=ser.accept();
			
			new Thread(new Client(socket)).start();
		}
	}
	
	
	public static void main(String[] args) throws Exception{
		new Server().start();
		
		
	}

}


 


 

模拟tomcat接收GET、POST请求 模拟实现Tomcat,包含核心类和工作流程。关键类包括:MyServer(服务器主类)、MyRequest/MyResponse(请求/响应处理)、MyMapping(URL映射)以及MyHttpServlet/MyServlet(Servlet实现)。当访问http://localhost:10086/mytomcat时,服务器会解析请求,通过映射找到对应Servlet处理并返回响应。该项目展示了Web服务器的基本工作原理,包括请求解析、Servlet调用和响应构建等核心机制。 阅读详情

相关推荐

模拟Tomcat服务器

用Eclipse,编写代码熟悉和模拟Tomcat服务器。希望给你们带来帮助,不对的地方,请指正,大家共同进步。

Java学习之仿写Tomcat

这样的设计有一个问题就是:服务器每次处理来自客户端的数据都必须新建一个线程,如果客户端B一直连接但不是发送数据,那么相应的子线程就会一直处于阻塞状态。因为这是一个BIO,所以需要在服务端用while来防止单个客户端阻塞线程我们应该以byte[]数组的方式收发数据而不是用bit数据流是因为byte[]数组有规整的长度(8bit)分割便于解析,而bit是无法分割的。

m0_48829811的博客 577

Tomcat服务器模拟(TCP/IP)

模拟Tomcat应用服务器的工作原理,有利于理解服务器的工作的模式。简单模拟,不考虑并发性等等因素。

tomcat原理模拟和tomcat优化

servlet 没有主方法main,依赖tomcat才能运行,因为tomcat 有主方法main,由java编写servlet中doGet和doPost方法属于非静态方法,只能依托new对象存在,tomcat无法new出来对象,因此tomcat无法事先知道他们的存在。而任何语言都可以通过类的所在的路径或目录获取类信息,去某个目录下遍历所有子文件,能够获取所有文件的路径信息。tomcat可以通过servlet注解,找到对应的类,servlet注解相当于给类加了标记。

weixin_47480200的博客 1322

模拟TOMCAT工作的全部过程

模拟TOMCAT的原理的全过程,新手理解TOCMAT以及SERVLET有很大的帮助

Origin软件XRD全峰拟合保姆级教程:从数据导入到弱峰处理技巧

本文提供了一份Origin软件进行XRD全峰拟合的深度实战指南。文章重点解析了从数据导入预处理、基线锚点视觉化设置,到弱峰拟合的锁定策略与手动干预等核心技巧,旨在帮助用户避开常见错误,获得可靠、精确的拟合结果,从而有效服务于材料结构分析。

rgv2345678的博客 706

使用java模拟简单的tomcat

使用java模拟最简单的tomcat,让tomcat不再那么神秘

秃头披风侠的博客 886

CloudCompare点云滤波实战:三种植被去除技术的对比与应用

本文详细对比了CloudCompare中三种植被去除技术(低通滤波、CSF滤波和坡度法)的实战应用与效果。通过具体案例和参数优化建议,帮助用户根据地形特征选择最佳滤波方法,提升点云数据处理精度和效率,特别适用于复杂场景下的植被去除需求。

weixin_30689307的博客 84

【模拟Tomcat实现Web容器】干货满满

小鸟WebServer: 模拟Tomcat的基础功能,实现一个简易版的Web容器.基于TCP协议作为通讯协议,使用HTTP协议与客户端进行交互,完成一系列网络操作! 小鸟WebServer1.前言 1.前言 为什么我的项目起名为:小鸟WebServer,因为我觉得我的项目和Tomcat比较起来可能就是一只麻雀,但是麻雀虽小,五脏俱全。其次:我们不仅要实现出功能,代码也要高效,提高程序运行的效率! 用到的知识点:Socket套接字、线程池、Map、List、HTML搭建页面、SAXReader解析HTM.

qq_44682003的博客 546

STM32CubeMX的正交编码器encoder

由于最近干活遇到需要获取正交编码的功能,所以返回来研究一下STM32CubeMX的编码器功能,之前也更新过STM32的定时器功能,但是因为之前搞平衡车的正交编码器没有搞清楚原理,就直接用了脉冲输入功能草草了事,现在也算是为之前的年轻买单了,不过看到现有的Encoder说明都比较简单,所以就当是为开发者做贡献了,我研究清楚之后来一篇博客。

ASWaterbenben的博客 1万+

大数据之VIP(Virtual IP,虚拟IP)负载均衡

VIP(Virtual IP,虚拟IP)负载均衡是一种在计算机网络中常用的技术,用于将网络请求流量均匀地分散到多个服务器上,以提高系统的可扩展性、可靠性和性能。

赵玉的专栏 4124

总结下模拟Tomcat

最近对tomcat进行了下简单的模拟,为啥是简单的呢?第一没有使用nio,第二不能像tomcat那样处理jsp等servlet的动态页面。

Coding的博客 498

Python在Genesis2000 CAM软件中的编程应用

Genesis2000是一款功能强大的计算机辅助制造(CAM)软件,它提供了广泛的功能和工具,用于帮助制造商进行CAD(计算机辅助设计)到CAM的转换。在Genesis2000中,我们可以利用Python的灵活性和功能来扩展软件的自定义能力,并通过编写脚本来自动化各种制造任务。例如,假设我们需要在Genesis2000中添加一个新的操作,用于自动计算零部件的重量。我们可以编写一个Python脚本,通过遍历模型的几何数据并应用相关的计算公式,来实现这个功能。

PixelEnigma的博客 2423

手写模拟一个tomcat

通过自己手写模拟tomcat的核心功能,能够让我们更好的理解tomcat的运行机制,底层也是通过jdk提供的api进一步步封装实现而来,我们作为使用者而言,可能更多关注使用上的方便、敏捷性,通过手写源码,相信我们会对tomcat有更加深刻的理解。

qq_36481984的博客 664

30. 如何使用 SEGW 的 redefine 功能对 SAP 标准 OData 服务进行扩展

SAP 发布了很多标准的 Fiori 应用,可以通过笔者的文章里提到的进行浏览。比如 My Opportunities 就是 SAP CRM 领域的一个 Fiori 应用:下图是 Opportunity 明细页面的 Info 标签页:假设我们想在这些标准字段的末尾增添一个新字段 Created By,用来维护当前 Opportunity 的创建者。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1172

【ffmpeg+cuda实现硬编解码】

最近在搞一个项目,我需要向AI提供视频帧数,本来一开始摄像头是H.264的编码,我直接复制流推到AI层去推理,然后需要将事件回溯成30秒的视频截取。结果摄像头换成了HEVC编码,截取的视频不能在网页直接播放(需要JS实现调用硬解码)。一开始的方案是ffmpeg直接将HEVC转成H.264结果因为事务巨多CPU占用量过大,导致影响到了推理,因为本身选用的模型+杂七杂八的业务逻辑也要占用大量的CPU资源,所以经过研究把ffmpeg和nvcodec结合起来来平衡设备性能,算是解决了这个问题吧。这两个是前提条件,我

jiexijihe945的博客 7232

android模拟器和本机tomcat之间模拟从后台取数据

一、从tomcat里取到资源安装好tomcat,配置好环境变量,在tomcat的bin文件夹中,点击startup.bat启动tomcat,打开浏览器,搜索http://localhost:8080/,如果出现下图所示,则启动成功。把资源放在tomcat的webapps文件夹里的ROOT文件夹中。之后直接搜索http://localhost:8080/mine_cache_one.png等等就可以了

费..的博客 1775

多角度模板匹配的模板创建技巧

基于形状的模板匹配多角度创建技巧

manuoo的专栏 3403

安卓模拟器访问不了Tomcat

导致安卓模拟器访问不了Tomcat,主要是因为android模拟器本身的IP地址就是127.0.0.1或者localhost了,而在Tomcat中默认的host就是电脑的localhost,所以最好的方法就是将Tomcat的server.xml文件中的host配置成电脑的真实IP地址。 1、找到自己的IP地址 1) 2) 3) 4) 2、找到{Tomcat

xyllp的博客 2748

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

模拟springboot内嵌tomcat

模拟springboot内嵌tomcat简述导入依赖第一步,编写启动类第二步,实现SpringApplication,内嵌tomcat并启动tomcat第三步,创建WebApplicationInitializer的实现类第四步,创建一个配置类第五步,创建一个controller最终项目结构如下图所示启动项目进行测试 简述 springboot可以打包成jar包部署是由于内嵌了tomcat,现在我们就来模拟下springboot内嵌tomcat。 导入依赖 下面是pom种需要的依赖 <dependen

weixin_48190926的博客 429

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

java使用socket模拟tomcat访问资源

模拟tomcat之前需要知道HTTP协议状态码的一些信息 HTTP协议状态码,是指在HTTP协议运行中由客户端发出请求连接,服务端建立连接;客户端发出HTTP请求(Request),服务端返回响应信息(Respond),而在这个过程中由于客户端或服务端的问题会返回相应的错误代码并显示给用户,对应的错误代码表示不同的错误信息,根据这个信息用户可以调整相应的操作来修改出现的错误,最终避免错误的再现。 ...

jiatai_的博客 720

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

一个简单的Tomcat模拟

简单模拟tomcat Tomcat帮我们实现了网页与服务器之间的信息交互,这里我实现一下在浏览器中输入ip:端口/资源,出现一个网页的。 我们在写Servlet的时候doGet方法中有两个参数request与response,req是接受网页信息,resp是向网页返回数据。现在我就是基于这两个写代码。 import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.F

童_erp的博客 4361

android模拟器无法访问本地的tomcat

原文地址:http://blog.sina.com.cn/s/blog_5ef524f50100w5dr.html 对于android初学者,经常会碰到android模拟器无法访问本地的tomcat的问题,网上的解决方案也很多。比如使用android内置的ip 10.0.2.2来访问,或者通过内网ip来访问都是可以的。但是今天我碰到一个问题,用android内置的ip和内网ip都

进击的小巨人 2464

模拟简易 Tomcat

TCP(英语:Transmission Control Protocol,传输控制协议) 是一种面向连接的、可靠的、基于字节流的传输层通信协议。是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。客户端程序创建一个套接字,并尝试连接服务器的套接字。,该方法将一直等待,直到客户端连接到服务器上给定的端口。主要内容来源以下代码,可自己 debug 试试。模拟的 tomcat,底层使用了。三次握手的目的:保证消息的可靠。,表示通过服务器上的端口通信。提供了两台计算机之间的。

小菜的博客 604

Android模拟器访问tomcat(夜神的看过来)

Android模拟器访问tomcat接口 一般模拟器访问接口将ip和端口由 localhost:8080 或者 127.0.0.1:8080 改为 10.0.2.2:8080 就可以成功访问了 除非端口号改了 不是8080 但是!!!夜神模拟器真是奇怪, 需要将ip改为 电脑的本机IP 如图: 然后就可以成功访问tomcat部署的接口了 查询本机ip:cmd里面输入 ipconfig 找到上面截图那个ipv4就ok ...

木頭子 1200

Genymotion模拟器连接不上本地tomcat的解决方法

当我们启动tomcat,在本地浏览器访问http://localhost:8080/,可以得到正确访问到tomcat主页。 但是,但我们在Genymotion模拟器中的浏览器中输入http://10.0.2.2:8080/去访问tomcat主页时,却不能访问到。 解决方法我们打开模拟器网络配置,选择修改网络 在弹出的窗口中,选择高级选项,将无 改为手动 然后窗口继续被展开,在展开的列表中,设

D先生的博客 724
上一篇: coco2d-x初学
下一篇: 数据库命令
macandroid
博客等级 码龄14年 35粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值