五分钟学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”即可免费领取对应的资源。

写在最后

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

相关文章
|
6天前
|
XML Java 编译器
Java注解的底层源码剖析与技术认识
Java注解(Annotation)是Java 5引入的一种新特性,它提供了一种在代码中添加元数据(Metadata)的方式。注解本身并不是代码的一部分,它们不会直接影响代码的执行,但可以在编译、类加载和运行时被读取和处理。注解为开发者提供了一种以非侵入性的方式为代码提供额外信息的手段,这些信息可以用于生成文档、编译时检查、运行时处理等。
31 7
|
11天前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
27 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
6天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
14天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
27 6
|
21天前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
36 3
|
23天前
|
监控 前端开发 Java
【技术开发】接口管理平台要用什么技术栈?推荐:Java+Vue3+Docker+MySQL
该文档介绍了基于Java后端和Vue3前端构建的管理系统的技术栈及功能模块,涵盖管理后台的访问、登录、首页概览、API接口管理、接口权限设置、接口监控、计费管理、账号管理、应用管理、数据库配置、站点配置及管理员个人设置等内容,并提供了访问地址及操作指南。
|
29天前
|
Java Maven Spring
Java Web 应用中,资源文件的位置和加载方式
在Java Web应用中,资源文件如配置文件、静态文件等通常放置在特定目录下,如WEB-INF或classes。通过类加载器或Servlet上下文路径可实现资源的加载与访问。正确管理资源位置与加载方式对应用的稳定性和可维护性至关重要。
46 6
|
1月前
|
存储 安全 搜索推荐
理解Session和Cookie:Java Web开发中的用户状态管理
理解Session和Cookie:Java Web开发中的用户状态管理
58 4
|
1月前
|
JSON 前端开发 JavaScript
java-ajax技术详解!!!
本文介绍了Ajax技术及其工作原理,包括其核心XMLHttpRequest对象的属性和方法。Ajax通过异步通信技术,实现在不重新加载整个页面的情况下更新部分网页内容。文章还详细描述了使用原生JavaScript实现Ajax的基本步骤,以及利用jQuery简化Ajax操作的方法。最后,介绍了JSON作为轻量级数据交换格式在Ajax应用中的使用,包括Java中JSON与对象的相互转换。
43 1
|
1月前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
55 1