how2j.cn

下载区
文件名 文件大小
runnable_diytomcat.rar 61m

解压rar如果失败,请用5.21版本或者更高版本的winrar

点击下载 winrar5.21

13分32秒
本视频采用html5方式播放,如无法正常播放,请将浏览器升级至最新版本,推荐火狐,chrome,360浏览器。 如果装有迅雷,播放视频呈现直接下载状态,请调整 迅雷系统设置-基本设置-启动-监视全部浏览器 (去掉这个选项)。 chrome 的 视频下载插件会影响播放,如 IDM 等,请关闭或者切换其他浏览器

步骤 1 : 运行演示   
步骤 2 : 运行界面   
步骤 3 : 重复运行   
步骤 4 : 功能演示   
步骤 5 : 首页   
步骤 6 : 多端口   
步骤 7 : Web应用   
步骤 8 : 欢迎文件   
步骤 9 : 404页面   
步骤 10 : 500   
步骤 11 : 纯文本文件   
步骤 12 : 图片   
步骤 13 : 二进制文件   
步骤 14 : Servlet   
步骤 15 : Servlet 单例   
步骤 16 : get方式 获取参数   
步骤 17 : post 方式获取参数   
步骤 18 : Cookie   
步骤 19 : Session   
步骤 20 : jsp   
步骤 21 : 客户端跳转   
步骤 22 : 服务端跳转   
步骤 23 : 服务端跳转传参   
步骤 24 : 过滤器   
步骤 25 : 监听器   
步骤 26 : 非演示功能   

自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
这个站长所谓的自己徒手做的 Tomcat 都有些什么功能呢?
下面站长就来演示一下都做了哪些功能。

下载右上角的 runnable_diytomcat.rar , 然后运行其中的 startup.bat
注: 已经自带了 jdk8.
运行演示
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
运行成功之后,就会看到,使用的端口号是: 18080,18081,18082 3个端口。
注: 支持多端口。
运行界面
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
如果重复运行,就会看到如图所示界面,表示端口被占用了。
解决办法:Tomcat 端口被占用了怎么办?
重复运行
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
接下来挨个演示DiyTomcat 具备的一些功能。
有些功能是可以演示的,这里会展示出来。
有些功能不好演示,就在最后有个总结。
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/index.html

访问首页
首页
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18081/index.html

不仅支持 18080 ,还支持 18081,18082 端口访问。
多端口
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/a/index.html

访问 web应用 a 下的 index.html
Web应用
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/a

访问 web应用 a,会自动访问 index.html
欢迎文件
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/not_exist.html

故意访问一个不存在的页面,显示 404 错误页面
404页面
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/500.html

访问一个会故意抛出异常的 500.html 页面
500
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/a.txt

纯文本文件
纯文本文件
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/image.html

访问之后可以显示图片
图片
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/etf.pdf

访问之后可以显示 pdf 文件
二进制文件
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/javaweb/hello

javaweb 是一个新的应用,访问 hello 会访问对应的 HelloServlet
Servlet
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/javaweb/hello

访问同一个地址多次,可以看到 Servlet 对象是同一个
Servlet 单例
步骤 16 :

get方式 获取参数

edit
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/javaweb/param?name=meepo

访问地址的时候带上参数,可以看到获取参数的页面效果
get方式 获取参数
步骤 17 :

post 方式获取参数

edit
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/javaweb/post.html

访问如上地址,然后点击 submit 可以看到 post 方式提交数据后的结果
post 方式获取参数
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/javaweb/setCookie

先访问如上地址设置 Cookie


http://127.0.0.1:18080/javaweb/getCookie

然后访问如上地址获取 Cookie
可以看到里获取到了 Cookie 里的 name: Garren(cookie)
Cookie
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/javaweb/setSession

先访问如上地址设置 Session


http://127.0.0.1:18080/javaweb/getSession

然后访问如上地址获取 Session
可以看到 获取了 Session 里获的 name: Garren(session)

注: 我用的 chrome 版本很奇怪地不支持 jsessionid ,用火狐就可以了。
Session
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/javaweb/index.jsp

访问如上地址,可以显示 index.jsp
jsp
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/javaweb/jump1

访问 jump1 ,会观察到客户端跳转到 hello 去了
客户端跳转
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/javaweb/jump2

访问 jump2 会观察到服务端跳转到 hello
服务端跳转
步骤 23 :

服务端跳转传参

edit
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/javaweb/jump2

同样是访问 jump2 ,可以观察到name 参数传递过去了
服务端跳转传参
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买

http://127.0.0.1:18080/javaweb/hello

访问 hello, 可以观察到两个过滤器 Filter 在起作用
过滤器
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
启动的时候,可以观察到监听器在其作用
监听器
自己写一个Tomcat, 几乎使用到了除开框架外的所有Java 技术,如多线程,Socket, J2EE, 反射,Log4j, JSoup, JUnit, Html 等一整套技术栈, 从无到有,循序渐进涵盖全部74个知识点,549个开发步骤, 为竞争高薪资职位加上一个有吸引力的砝码.
增值内容,点击购买
DiyTomcat 的功能不少,还有一些不便于演示,这里简单列罗一下:
迷你浏览器
自动测试框架
耗时任务
多线程
内置对象们
mime-type
Connector
Processor
WebClassLoader
热加载
Servlet单例的实现
Servlet生命周期的实现
gzip 压缩
JspClassLoader
责任链
war文件的静态部署
war文件的动态部署
等等。
这些没有界面,不方便在浏览器观察的现象,就不一一演示了,在后续的学习过程中就会了解到了。


HOW2J公众号,关注后实时获知最新的教程和优惠活动,谢谢。


问答区域    
2021-05-24 请问这个学下来大概需要多久呢,难度如何?
zosin

学习时长和难度




1 个答案

how2j
答案时间:2021-06-05
这个很难,建议先把j2ee项目做完再说了。 时间因人而异,至少 2-3周



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2020-09-17 站长,为什么我下载下来解压不了
fgyong

解压时提示压缩文件格式未知或者已损坏




1 个答案

how2j
答案时间:2020-09-20
请用最新版本 winrar 试试, 或者试试我提供的: https://how2j.cn/k/18/18-143/143.html



回答已经提交成功,正在审核。 请于 我的回答 处查看回答记录,谢谢
答案 或者 代码至少填写一项, 如果是自己有问题,请重新提问,否则站长有可能看不到




2020-08-19 这个DIY tomcat能代替真正的tomcat吗?




提问之前请登陆
提问已经提交成功,正在审核。 请于 我的提问 处查看提问记录,谢谢
关于 实践项目-DiyTomcat-运行演示 的提问

尽量提供截图代码异常信息,有助于分析和解决问题。 也可进本站QQ群交流: 578362961
提问尽量提供完整的代码,环境描述,越是有利于问题的重现,您的问题越能更快得到解答。
对教程中代码有疑问,请提供是哪个步骤,哪一行有疑问,这样便于快速定位问题,提高问题得到解答的速度
在已经存在的几千个提问里,有相当大的比例,是因为使用了和站长不同版本的开发环境导致的,比如 jdk, eclpise, idea, mysql,tomcat 等等软件的版本不一致。
请使用和站长一样的版本,可以节约自己大量的学习时间。 站长把教学中用的软件版本整理了,都统一放在了这里, 方便大家下载: https://how2j.cn/k/helloworld/helloworld-version/1718.html

上传截图