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

简介: 原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 系列文章介绍 本文是《五分钟学Java》系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年多的Java学习和工作经历,总结和沉淀下来的方法论,希望能让Java学习这件事变得更简单,作者目前在阿里做Java,忙里偷闲分享一些技术文章 系列文章将会把一些技术学习方法、过程、要领与我的学习经验相结合,更加浅显易懂,并且我也会把我学习时用的资料,书籍和文章拿出来分享给大家,节省你我的时间。

副本_未命名.jpg

原创声明

本文作者:黄小斜

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

系列文章介绍

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

本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年多的Java学习和工作经历,总结和沉淀下来的方法论,希望能让Java学习这件事变得更简单,作者目前在阿里做Java,忙里偷闲分享一些技术文章

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

本文思维导图

在这里插入图片描述

什么是Java Web

不知道Java Web这个词是从什么时候开始出现的,但是,据Java官方记载,只有JavaSE和JavaEE这类表述,似乎并没有Java Web这么一个说法,所以,我更愿意认为,Java Web是各位Java前辈们对于Java在Web方向应用的相关技术栈,正如现在的Python Web,golang web等等,只不过是通过某种语言来实现web应用而已。

让我们先看看百度百科对于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这么初级的东西他们才不愿意碰呢,当然这也是后话了。

Java Web发展了这么多年,各种新鲜技术层出不穷,不管是spring全家桶,还是ORM框架,还是各种基于Java开发的中间件,都有很多新的应用和场景。像是最典型的电商场景,淘宝、京东、拼多多,都是把Java Web技术做到极致的公司,当然了,在Java Web之后,是能够支持起亿万级流量和用户的后端架构。

这样看来,Java Web似乎还有不少名堂,简单的可以做个后台系统,复杂的也可以支持海量用户访问的电商平台,那么要如何学习,才能对Java 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周边的一些开源技术组件,它们有的是大工程,有的是小项目,总之,它们都是这个技术生态中不可缺少的一部分

1、Maven
做一个成熟的构建工具,Maven不仅可以帮你管理依赖,还能帮你管理工程目录,比如我们的工程为什么目录格式都是一样的,有src包也有test包,这就是遵守了maven的规范,这种基于约定的管理方式,使得maven可以非常轻量化地帮你管理和构建项目。

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

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

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

进阶后端技术

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

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

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

3、分布式服务
分布式服务区别于本地服务,一般用于多个应用之间的服务调用,比如应用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”即可免费领取对应的资源。

写在最后

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

相关文章
|
10天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
14天前
|
NoSQL Java 数据库连接
深入探索 Java 后台开发的核心技术
【4月更文挑战第5天】本文探讨了Java后台开发的关键技术,包括Spring框架与Spring Boot的使用,MyBatis和Hibernate的ORM选择,关系型与NoSQL数据库的适用场景,线程池与异步处理在并发中的作用,微服务架构及RESTful API设计。这些核心技术有助于开发者打造稳定、高性能的Java后台系统,适应不断发展的云计算和人工智能需求。
|
15天前
|
监控 JavaScript 前端开发
《理解 WebSocket:Java Web 开发的实时通信技术》
【4月更文挑战第4天】WebSocket是Java Web实时通信的关键技术,提供双向持久连接,实现低延迟、高效率的实时交互。适用于聊天应用、在线游戏、数据监控和即时通知。开发涉及服务器端实现、客户端连接及数据协议定义,注意安全、错误处理、性能和兼容性。随着实时应用需求增加,WebSocket在Java Web开发中的地位将更加重要。
|
21天前
|
缓存 Java C#
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍(一)
【JVM故障问题排查心得】「Java技术体系方向」Java虚拟机内存优化之虚拟机参数调优原理介绍
60 0
|
1天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
2天前
|
存储 数据可视化 安全
Java全套智慧校园系统源码springboot+elmentui +Quartz可视化校园管理平台系统源码 建设智慧校园的5大关键技术
智慧校园指的是以物联网为基础的智慧化的校园工作、学习和生活一体化环境,这个一体化环境以各种应用服务系统为载体,将教学、科研、管理和校园生活进行充分融合。无处不在的网络学习、融合创新的网络科研、透明高效的校务治理、丰富多彩的校园文化、方便周到的校园生活。简而言之,“要做一个安全、稳定、环保、节能的校园。
20 6
|
3天前
|
监控 前端开发 算法
Java技术体系
Java技术体系(韩顺平老师整理)
7 0
|
4天前
|
Web App开发 Java 应用服务中间件
【Java Web】在 IDEA 中部署 Tomcat
【Java Web】在 IDEA 中部署 Tomcat
20 0
|
13天前
|
安全 前端开发 Java
Java Web开发知识点学习总结
Java Web开发涉及Java基础、Servlet、JSP、数据库操作(SQL+JDBC)、MVC设计模式、Spring框架、Hibernate ORM、Web服务(SOAP&RESTful)、安全认证(HTTP Basic/Digest/OAuth)及性能优化(缓存、异步、负载均衡)。
15 3
|
13天前
|
存储 安全 Java
Java中实现高效的字符串拼接技术
【4月更文挑战第6天】在Java编程中,字符串拼接是一个常见的操作。然而,由于字符串的不可变性,频繁的拼接操作可能会导致性能问题。本文将探讨Java中实现高效字符串拼接的技术,包括使用StringBuilder类、StringBuffer类以及Java 8中的StringJoiner类。通过对比这些技术的优缺点,我们将为您提供在不同场景下选择合适的字符串拼接方法的建议。

热门文章

最新文章