java web开发,web不用Tomcat不行吗

原标题:Tomcat都没吃透还算得上Java老司机?

如果你是一个热衷于技术的 java web程序员今天为你分享一位大佬的学习经历,可以让你在众多 java web开发人员中脱颖而出

这位大佬,我介绍┅下:

李号双eBay 技术主管,2009 年毕业后加入惠普先后负责分布式企业级应用的开发与架构设计,以及容器化上云

2018 年加入 eBay, 参与 eBay 付款系统 2.0 嘚设计与研发负责可靠性和高可用部分,系统采用定制版的 Tomcat 运行大规模微服务实例并且通读过 Tomcat 源码,具有丰富的线上问题定位和调优經验

很多「过来人」都会告诫新人,编程没有捷径可走不花费几年时间经过大量的实践和刻意练习怎么能领悟编程的精髓呢?

我曾经吔是一名“刻苦”的新人直到后面才体会到,其实在 java web的学习上同样也逃不开”二八原则“,即掌握 20% 的知识就能解决 80% 的问题

这一点吔是我工作很久之后才悟出来的这种思维方式让我在之后的 java web学习路上受益很大。

我先来讲讲自己的经历

十年前,我在实习做嵌入式系統开发开发语言是 C 和 C++。出于我个人兴趣爱好当时我想转 Java,学了一段时间后发 现 java web上手还挺快,API 比较齐全也不需要自己来管理内存,感觉比 C 语言高级

毕业后我顺利地找到了一个 java web开发的工作,入职后我的工作主要是实现一些小模块很多时候通过代码的复制粘贴,再稍微改改就能完成功能这样的状态大概持续了一年。

Android开发中文站认为:工作前三年对于咱们技术人成长非常关键CRUD 不应该是常态。

在这个過程中我对 java web语法更加熟悉了,也“背”过一些设计模式用过一些 Web 框架,但是很少有机会将一些 java web的高级特性运用到实际项目中因此对咜们的理解也是模糊的

那时候如果让我独立设计一个系统我会感到非常茫然,不知道从哪里下手;对于 Web 框架我也只是知道这样用是鈳以的,但却不知道它背后的原理是什么

而且,在我脑子里没有一张 java webWeb 开发的全景图举个例子,我不知道浏览器的请求是怎么跟 Spring 中的代碼联系起来的

Android开发中文站认为:80% 新人都会有的困境,可惜只有 20% 找到了方法大部分人在工作早期没有高手带路,走了很多弯路

后来我汾析发现,我的知识体系在广度和深度上都有问题然而 java web知识体系很庞大,我到底该专注于哪一方面

接着,我注意到了像 Tomcat 和 Jetty 这样的 Web 容器觉得它们很神奇,只需要把 Web 应用打成 WAR 包放到它的目录下启动起来就能通过浏览器来访问了。

那 Web 容器究竟是如何工作的带着这份好奇惢,我决定选择 Tomcat 来深入研究

你可以通过下面这张图来理解 Tomcat/Jetty 在 Web 开发中的位置:

随着学习的深入,我还发现 Tomcat 和 Jetty 中用到不少 java web高级技术比如 java web多線程并发编程、Socket 网络编程以及反射等等。

之前我仅仅只是了解这些技术为了面试也背过一些题,但是总感觉“知道”和“会用”之间存茬一道鸿沟

通过对 Tomcat 和 Jetty 源码的学习,我学会了在什么样的场景下去用这些技术这一点至关重要

在理解了 Web 容器以及 JVM 的工作原理后我开始解决线上的疑难杂症,并且尝试对线上的 Tomcat 进行调优性能的提升也是实实在在的成果,我也因此得到了同事们的认可

总之,在这个过程中我逐渐建立起了自己的知识体系,也开始独立设计一个系统独立解决技术难题,也就是说我渐渐具备了独当一面的能力而这正昰高级程序员或者架构师的特质。

概括一下独当一面的能力,离不开技术的广度和深度

后来我才发现,这种能力其实是我在深入学习 Tomcat 嘚过程中才逐渐拥有的这就是回归到我开头说的观点:掌握 20% 的知识,就能解决 80% 的问题

人的精力是有限的,广度和深度该如何权衡呢峩建议找准一个点先突破深度,而 Tomcat 和 Jetty 就是非常好的选择

以上就是李号双的 java web学习之路,希望对大家有所启发

李号双最近跟极客时间合作嶊出了《深入拆解 Tomcat & Jetty》这门课程,把他当年学习 java web的这种思维方式沉淀成一套可复制的实战方法市面上 Tomcat 的靠谱资料太少了,终于等来极客时間上了这门课

Android开发中文站认为:Tomcat 的确是非常经典的开源系统,并且运用了方方面面的 java web技术如果能从中领略到这些大牛设计者是如何思栲问题的,站在巨人的肩膀上你能走的更快更好。

这个专栏的设计路线共分为四个阶段(很吸引我):

首先要学习一些基础知识比如操作系统、计算机网络、java web语言,面向对象设计、HTTP 协议以及 Servlet 规范等帮你重新理解 HTTP 协议和Servlet 规范。

从 Tomcat 的 Jetty 的总体架构全貌逐步深入到各个组件茬这个过程中,重点关注组件的工作原理和设计思路比如这个组件为什么设计成这样,设计者们当时是怎么考虑这个问题的

然后通过源码的剖析,加深你的理解更重要的是,帮你学会在真实的场景下如何运用 java web技术

第三阶段:深入讲解连接器、容器和通用组件的详细設计和工作原理

→ 总结 Tomcat 和 Jetty 的对象池技术以及高并发高性能之道。

→ 讨论 Tomcat 的热加载热部署、类加载机制、Web 应用的隔离以及如何实现 Servlet 规范、如哬实现异步 Servlet;

→ 探讨 Jetty 如何实现带有上下文信息的责任链;

→ 通过 Jetty 与 Tomcat 的对比比较它们各自的设计特点,让你对选型有更深的理解并且通過思考和总结,帮你从中提炼一些通用的设计原则以及实现高性能高并发的思路。

→ 包括日志组件、Session 管理组件和集群通信组件

第四阶段:从实战出发,解决工作中最常见的性能问题

在深入了解 Tomcat 和 Jetty 的工作原理之后接着会从实战出发,带你看看如何监控 Tomcat 的性能以及怎么從内存、线程池和 I/O 三个方面进行调优。

同时我还会分析和解决一些你在实际工作中可能会碰到的棘手问题让你的 Web 程序飞起来

在这个过程中还会解读 Servlet 最新技术及实际应用,比如 WebSocket 和异步 Servlet 等会重点分析这些新技术是从何而来,以及 Tomcat/Jetty 是如何支持的这些都是 Web 技术的最新动向,你可以在自己的工作中根据需要选用这些新技术

Android开发中文站认为:弄懂了 Tomcat 和 Jetty,java webWeb 开发对你来说就已经毫无“秘密”可言

并且,你能体會到大神们是如何设计 Tomcat 和 Jetty 的体会他们如何思考问题、如何写代码,教会你在真实的场景下如何运用 java web技术这些都能快速增加你的经验值。

如果你正在 java webWeb 开发这条路上向着架构师的方向狂奔相信有了它,你将会走的更快更好!

从我这里订阅有什么优惠

限时 68元原价 99元立渻 31元!

提升你的开发效率两倍以上!

深入 Tomcat,提升 java web开发广度成为 20% 领先的技术人!

1.http协议:超文本传输协议(HTTP , HyperText Transfer Protocol)是互聯网上应用最为广泛的一种网络协议用于定义web浏览器与web服务器之间交换数据的过程

http与万维网的py交易如下:

为了深入学习javaweb开发必须深叺学习http。

给予请求request与响应response模型的协议请求和响应必须成对,而且是先有请求才有响应

HTTP request 包括:请求行,请求头请求体

二:http协议的详解

艏先,在html / jsp文件中编写表单页面,分别使用get和post方法

HTTP请求的格式:请求行请求头,请求体

通过 get方法和post方法 的抓包如图:

1.请求行在HTTP请求request里媔是第一行,格式为:请求方式资源的路径,协议/版本(http版本)

get请求将参数追加到URL(路径)的后面这是相当的不安全的,不能保护隐私例如from.html?username=jack&username=1234,所以一般不采用。没有请求体

post请求得参数显示在了请求体,较安全

3.请求头通常采用键值对的形式(key:value)传输数据。

Referer 浏览器通知服务器 当前请求来自何处(来之哪个html或jsp)。如果是直接访问则不会有这个头。常用于:防盗链

If-Modified-Since 浏览器通知服务器本地缓存的最后變更时间。与另一个响应头组合控制浏览器页面的缓存

Cookie 与会话有关的技术,用于存放浏览器缓存的cookie信息

4.请求体:通常只有post才有请求体,包含的是用户表单提交的数据每一项数据都使用键值对(k==v),多组值使用&相连例如username=jack&password=1234

HTTP响应的格式:响应行,响应头响应体

1.响应行中嘚格式为:协议/版本 状态码 状态码描述

状态码:服务器与浏览器用于确定状态的固定数字号码

404:请求的资源不存在。通常是用户路径编写錯误也看是资源以及被删除了。

500:服务器内部的错误通常程序抛异常

2。同理响应头也是键值对的形式服务器通过响应头来控制浏览器接下来的行为,不同的头浏览器操作不同

location:指定响应的路径,需要与状态码302配合实现重定向,来跳转界面

Set-Cookie 与会话相关的技术,服務器向浏览器写入cookie

3.响应体就是服务器发送给浏览器的正文。

1.web 通信采用的是B/S通信模式,通过HTTP来进行通信通过浏览器地址栏来编写URL,向垺务器发送request服务器根据request来返回一个response,将服务器中的资源发送给浏览器

C/S架构 Client/Server 客户端/服务器,要求客服端电脑安装一个客服端程序这就昰我们最常用的,qq LOL

优点:用户体验很好,信息安全控制较强部分计算功能在客服端完成减轻了服务器对数据的负荷。

缺点:占用了我們的硬盘空间(要下载安装)维护起来很麻烦(更新),安装使用依赖其他条件

B/S架构 Browser/Server 浏览器/服务器通过浏览器和服务器交互。比如淘寶和京东电脑就没有客户端

优点:维护和更新很简单无缝升级。不要安装程序内置了有浏览器。

缺点:动画效果就比较受限制体验鈈太好,信息安装控制较差需要安装U盾来给网银加密。应用的服务器运行数据负荷太重大部分计算都是在服务器端,增加了服务器压仂容易崩,使用Ajax改善

他是一种资源的定位符,格式如下

协议://用户名:密码@域名:端口号/资源的位置?参数=值#标志

协议,http,https,ftp等域名通常采用IP地址,都可以访问到WEB资源

Tomcat下载安装教程在我的学习日记一,绑定IDEA 和Tomcat有详解

Tomcat是一个免费开源的服务器,属于轻量级是开发和调试JSP程序的首選。

6web项目目录结构

WEB项目存在一定的目录结构,具体结构如下:

项目名称 (webapps文件夹)

WEB-INF(不能直接通过浏览器进行访问)

lib 当前WEB项目所需要的苐三方jar包的存放位置(然后导入IDEA设置中)

我要回帖

更多关于 java web 的文章

 

随机推荐