五分钟学Java:如何才能学好Java Web里这么多的技术

副本_未命名.jpg

原创声明

本文做者:黄小斜css

转载请务必在文章开头注明出处和做者。html

系列文章介绍

本文是《五分钟学Java》系列文章的一篇前端

本系列文章主要围绕Java程序员必须掌握的核心技能,结合我我的三年多的Java学习和工做经历,总结和沉淀下来的方法论,但愿能让Java学习这件事变得更简单,做者目前在阿里作Java,忙里偷闲分享一些技术文章,有兴趣看本系列更多文章能够关注个人公众号【Java技术江湖】java

系列文章将会把一些技术学习方法、过程、要领与个人学习经验相结合,更加浅显易懂,而且我也会把我学习时用的资料,书籍和文章拿出来分享给你们,节省你个人时间。所谓授人以鱼也要授人以渔,是本系列文章但愿达到的目标。react

本文思惟导图

在这里插入图片描述

什么是Java Web

不知道Java Web这个词是从何时开始出现的,可是,据Java官方记载,只有JavaSE和JavaEE这类表述,彷佛并无Java Web这么一个说法,因此,我更愿意认为,Java Web是各位Java前辈们对于Java在Web方向应用的相关技术栈,正如如今的Python Web,golang web等等,只不过是经过某种语言来实现web应用而已。git

让咱们先看看百度百科对于Java Web的定义,Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet,不过使用得不多,Java在服务器端的应用很是的丰富,好比Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。程序员

乍一看来,和咱们上面锁描述的相似,事实上,在Java招聘市场上,一个Java工程师,首先也要是一个Java Web工程师,由于这基本上是Java工程师的最低要求了,至少你要懂得CRUD,懂得写一个后台管理系统,懂得和前端联调吧。固然了,在这基础上,还有不少纯后端的Java后端工程师,他们负责造轮子,开发中间件,Java Web这么初级的东西他们才不肯意碰呢,固然这也是后话了。github

Java Web发展了这么多年,各类新鲜技术层出不穷,无论是spring全家桶,仍是ORM框架,仍是各类基于Java开发的中间件,都有不少新的应用和场景。像是最典型的电商场景,淘宝、京东、拼多多,都是把Java Web技术作到极致的公司,固然了,在Java Web以后,是可以支持起亿万级流量和用户的后端架构。golang

这样看来,Java Web彷佛还有很多名堂,简单的能够作个后台系统,复杂的也能够支持海量用户访问的电商平台,那么要如何学习,才能对Java Web从入门到精通呢,不妨一块儿来看看下面的内容。web

Java Web到底要学习那些东西

那么,做为一个新手Java工程师,如何学习Java Web呢,我先假设你只是一个Java小白,学过了一些Java基础,对于Web开发一窍不通,那么你应该掌握的东西有哪些呢,不怕吓到你,真的很是多。

Java基础知识

首先,请先掌握好Java基础,以前我在第一篇文章已经讲了,如何学习java基础,建议你先去看看那篇文章后,再来看本文,比较容易衔接的上。

要想搞定Java Web,Java基本功必须扎实,像是面向对象基础、集合类、异常处理、IO流、多线程等技术都是常常会用到的。

前端知识

我一个后端工程师,为啥还要懂前端知识呢?想来还有点郁闷,不过其实如今先后端分离的趋势已经很明显了,不多还有哪一个Java工程师须要懂jsp,也不多有Java工程师还在搞全栈了,毕竟如今专业的H5工程师多的是,你一个作Java的外行何须凑热闹。

不过做为一个学习者,不少东西仍是绕不过去的,好比你要写一个简单的web页面,至少也要会个HTML、CSS和JS吧,而后,若是你想用点高级的语法,可能就要上jQuery了,想搞点漂亮的页面,再上个bootstrap,最后,你还想用高大上的框架,结果你掏出了reactjs(很差意思这个我也不会)

对于前端知识,个人建议是,了解一下html、js、css仍是有必要的,至少你要能大概看懂前端的代码,其余的内容就不用太在乎了,懂得在浏览器上使用开发者工具排查请求问题就好了,如今的先后端交互大可能是用json,也不须要你去写前端代码。

HTTP和web基础知识

做为一个Java Web工程师,你每天要打交道的就是http请求,给你一个url,你要如何返回给他一个http的响应报文,不过还好,Tomcat帮你把HTTP报文请求和处理的问题解决了,你只要告诉tomcat你要返回什么内容给前端就行了,通常来讲,先后端用的数据格式就是json。

关于这个http请求,你要了解的东西就很多了,计算机网络的基础知识要知道吧,http协议的报文结构和常见方法你要知道吧,url的dns解析你也须要懂。

这还只是基础的,web应用里面有两个经常使用的技术,叫作session和cookie,session通常存在服务器上,用于记住用户状态,而cookie通常保存在浏览器上,用于记录你的一些经常使用信息,好比登陆某个网站的帐号密码,这两个东西平时你应该不陌生,可是Java Web工程师须要合理地使用这两个东西,以实现本身的应用目的。

session和cookie通常用于解决应用问题,而网络通信里还有一个重要的内容就是安全问题,防止不法分子盗取信息,诈骗盗刷。这里就涉及到了HTTPS协议,以及使用token、加密算法等技术来提高应用的安全性。

除此以外,还有不少web相关的技术知识,这里再也不一一列举,毕竟这些东西,只有真正接触到了以后,多加实践,才能更好地进行学习和理解。

servlet和jsp

绕来绕去,仍是绕不开这两个早已过气的技术,之前咱们用这两个东西是直接用,如今咱们不直接用,框架会把servlet封装起来,咱们只须要写一些喜闻乐见的controller就能够了,而jsp早就已经退出历史舞台了。

这两个东西不必花太多时间,毕竟如今的Java Web其实就是spring全家桶+web相关技术,接下来咱们就来看看spring全家桶应该如何学习。

spring全家桶

spring全家桶主要包括spring、springmvc和springboot,固然还有springcloud,主要是用于分布式服务的,咱们一个小小的Java Web就不请它出来了。对于前面三样技术,不少人早就已经不陌生了。

spring颠覆了Java中实例管理的方式,实例的管理被统一到spring的bean容器中,而不少切面型逻辑也被AOP这种处理方式给解放出来了,IOC和AOP是spring最使人称道的两个特色。

而到了springmvc时代,分层结构开始愈发流行,model层用于映射数据,view用于渲染数据和前端交互,controller则用来分发请求。而对于不少的Javaweb应用,他们的代码结构通常也是controller-service-dao这样的分层结构。springmvc制霸了Java Web应用好久了,直到它的进化版springboot的出现。

springboot横空出世,直接砍掉了复杂的spring配置,转而用注解的方式简化了开发流程,而且直接吃掉了tomcat了,一切从简。springboot的出现使得JavaWeb的学习成本更低了,建议新手朋友直接用springboot开启你的第一个Java web项目,体验必定会比用springmvc好得多。

固然了,spring全家桶要细讲起来可不止这么些东西,因为篇幅优先,后续会单独拎出来写一篇关于如何学习spring全家桶的文章,敬请期待。

数据库

很差意思,把这个老哥给忘了,数据库做为一切web应用的基石,没有它就没有数据,应用就毫无价值,固然了,让咱们每天沉迷于CRUD没法自拔的也是这个东西。

几乎没有哪一个web应用是不用数据库的,如今市面上最流行的仍然是MySQL数据库,想要作一个web应用,先学会sql的基本语法吧,懂得建表,懂得在sql里CRUD,这样你才可以回到代码里继续CRUD(增删改查)固然了,关于数据库要学习的知识远不止于此,因为篇幅优先,后续会单独拎出来写一篇关于数据库的文章,敬请期待。

Java Web实用工具和技术

接下来这些内容,都是Java Web周边的一些开源技术组件,它们有的是大工程,有的是小项目,总之,它们都是这个技术生态中不可缺乏的一部分

一、Maven作一个成熟的构建工具,Maven不只能够帮你管理依赖,还能帮你管理工程目录,好比咱们的工程为何目录格式都是同样的,有src包也有test包,这就是遵照了maven的规范,这种基于约定的管理方式,使得maven能够很是轻量化地帮你管理和构建项目。

二、TomcatTomcat天然是Java Web中的中坚力量,毕竟大部分的Java Web应用都运行在tomcat上,做为一个Java Web工程师,仍是要尽可能多了解Tomcat的实现原理和运行原理,这也有助于你理解web应用的运行模式,即便之后换了别的应用容器你也能够快速上手。

三、日志组件和单元测试组件日志组件和单元测试组件都是很实用的技术组件,平时本身搞项目的话可能不会太在乎,可是在公司里的项目是必定要用好这两个东西的,打好了日志,才可以排查和监控问题,而单元测试组件,能够帮你检查代码的正确性,提升代码质量,把bug挡在门外。

四、orm框架orm框架是什么,其实就是为了更好地进行对数据库的CRUD,而设计出来给Java使用的持久层映射框架,好比mybatis和hibernate,虽然本质上仍是在写sql,可是咱们能够直接经过对一个对象进行操做,而且把这个操做映射成一个sql语句,大大简化了咱们操做数据库的流程。

进阶后端技术

刚刚咱们也说过了,Java Web应用的技术范围很广,小项目可能用到上面这些东西就够了,而大项目,一些分布式应用,要涉及的东西就太多了,这里不展开介绍,由于每一部分的内容都值得用一篇文章来说,这里就简单地给各位介绍一下,有哪些后端技术是值得咱们关注和学习的。

一、缓存缓存能够帮助数据库缓解读写压力,通常用于数据库读写负载没法支撑业务场景的状况,像是Redis、memcache这类缓存,都是比较经常使用的,缓存在web应用中也常用。

二、消息队列消息队列用于处理多个应用的消息,负责在分布式应用之间进行通讯,也适用于高并发大流量的场景,好比电商购物,下单消息太多,下游处理不来,经过消息队列先存储一些,处理另一些,能够达到限流和削峰的目的

三、分布式服务分布式服务区别于本地服务,通常用于多个应用之间的服务调用,好比应用A有一个服务S1,应用B有一天个服务S2,S1要调用S2,只能经过网络传输才能实现,分布式服务解决的就是这个问题。

除此以外,还有像负载均衡、反向代理、分布式事务、分布式数据库等复杂的应用技术,这里再也不一一列举,若是大家感兴趣的话,后续我会再写一篇关于如何学习分布式技术的文章。

推荐资源

这篇文章和以前的几篇不太同样,内容比较多,涉及的技术也不少,主要是想把Java Web的总体样貌给讲清楚,这里推荐一些相关的资源,在精不在多。

这里只推荐Java Web的基础书籍,在后面咱们会有另外的文章介绍如何学习具体的某个后端技术,好比缓存、消息队列,以及分布式服务等等,到那个时候再去推荐书籍也不迟。

书籍

《深刻分析 JavaWeb技术内幕》《Maven实战》《spring实战》《sql必知必会》

视频

关于Java Web的视频应该是市面上最多的,这里我整理了一些还算不错的视频资源分享给你们

博客

Java技术仓库《Java程序员复习指南》https://github.com/h2pl/Java-Tutorial

整合全网优质Java学习内容,帮助你从基础到进阶系统化复习Java

总结

关于Java Web技术栈都有哪些东西,以及如何学习JavaWeb技术,咱们今天就讲到这里了,若是还有什么疑问也能够到我公众号里找我探讨,后续会有更多的文章推出,包括如何系统性地学习JavaWeb,敬请期待。

对了,你想问我文章里提到的书籍和视频去哪找?我已经给你准备好了

文中提到的资源均可以避免费领取,在个人公众号【程序员黄小斜】回复“JavaWeb”便可免费领取对应的资源。

写在最后

对本系列文章有什么建议和意见,也欢迎留言告诉我,期待你的回馈。