Java 后端开发 快速入门知识

Java 后端开发 快速入门需要学习的核心知识主要包括 Java、Servlet、JDBC、MySQL、Redis、Spring、MyBatis 等。

0、开发工具

推荐使用idea,当然其他的也可以考虑。可以通过以下路径获取
https://github.com/judasn/IntelliJ-IDEA-Tutorial

1、JAVA

2、Servlet

Servlet 是 Java Web 的底层技术,虽然现在因为有 Spring 框架,我们已经不需要直接编写 Servlet 了,但作为底层技术,我们还是要了解其原理,这样我们才能更好地理解在其之上的 Spring 框架等。

Servlet 其实就是 Server Applet —— 服务器小程序,即运行在服务器上的一个小程序,也是一个基于 Java 技术的 Web 组件。

Servlet 容器也称为 Web 容器,目前主要就是 Tomcat 与 Jetty,Jetty 更满足公有云的分布式环境的需求,而 Tomcat 更符合企业级环境。通常我们使用Tomcat。

目前 Servlet 规范已经演进到 4.0 版本,相比之前的版本,主要是新增了对 HTTP/2 的支持。另外,3.0 版本相比之前的 2.5 版本,最重要的则是新增了对 WebSocket 的支持,3.0 版本之前的 Servlet 只支持 HTTP 请求。那么,对于目前的 Servlet 来说,需要学习哪些知识点呢?这次,我先把核心的知识点罗列出来,后面再来推荐一些相关的学习资源。

  • 环境配置:包括开发环境部署环境,要熟悉这两种环境的搭建,开发环境主要就是 JDK 和 IDEA 的安装配置,部署环境则是 Web 容器 Tomcat 的安装配置。另外,Java Web 普遍使用 Maven 作为构建工具,所以也要了解下 Maven 的用法。虽然 Gradle 比 Maven 更先进,但在 Java 后端大部分项目目前依然还在使用 Maven。

  • 生命周期:要了解 Servlet 的生命周期,并了解 Servlet 容器对 Servlet 实例是如何管理的。

  • API:Servlet 的常用 API 要熟悉,主要包括 Servlet 接口、ServletConfig、ServletContext、RequestDispatcher、ServletRequest、ServletResponse、HttpServlet、HttpServletRequest、HttpServletResponse,尤其是最后两个类 HttpServletRequestHttpServletResponse 必须要非常熟悉,这是在实际开发中会频繁使用到的。

  • 过滤器:Servlet 过滤器可以拦截请求和响应,并进行一些处理。主要用于对用户请求进行鉴权、做日志记录、对数据进行过滤或替换、对数据进行解码或解密等等,多个过滤器可以组成一条过滤器链。

  • 监听器:Servlet 监听器主要用来监听 ServletContext、HttpSession、ServletRequest 对象的生命周期事件,以及这些对象的属性改变事件。

  • WebSocket:需要注意的是,网上有些继承 WebSocketServlet 的实现方式已经是 Deprecated(过期)的,根据 Oracle 发布的 Java 的 WebSocket 的 JSR356规范所展示的实现方式有两种,一种是使用 @ServerEndpoint 注解,另一种是继承 javax.websocket.Endpoint 类,推荐使用注解。关于 WebSocket 的开发入门可以看这篇文章:java WebSocket开发入门WebSocket

  • Servlet 教程:https://www.runoob.com/servlet/servlet-tutorial.html

3、JDBC

JDBC = Java DataBase Connectivity(Java 数据库连接),是一套访问数据库的标准 Java API。通过调用这套 API,就可以连接到数据库,可以执行 SQL 语句,对数据库里的数据进行处理。不过,JDBC API 只是一套规范接口,真正与数据库进行连接的则是 JDBC 驱动程序,不同的数据库采用不同的 JDBC 驱动程序。

JDBC 的核心接口和类就只有几个:Driver、DriverManager、Connection、Statement、ResultSet、SQLException。要了解这几个接口和类的用法,以及了解使用 JDBC 的流程,简单来说就是五个步骤:

注册 JDBC 驱动程序;
建立与数据库的连接;
执行 SQL 语句;
获取结果数据;
清理资源。

另外,也要了解下对事务的处理,包括事务的提交和回滚。以及了解如何对 SQL 进行批量处理。所有这些内容在上面的 JDBC 教程中都有讲述,我就不展开说了。

4、数据库

数据库分为关系型数据库和非关系型数据库两大类。关系型数据库主要就是 MySQL、Oracle、DB2、PostgreSQL 等,标准数据查询语言 SQL 就是一种基于关系型数据库的语言。非关系型数据库也称 NoSQL(Not only SQL),主要包括 Redis、MongoDB、HBase 等。如今,很多项目都会使用一种以上的数据库,其中,Redis 可以说是必选的。另外,MySQL 作为最流行的关系型数据库,开源而且入门简单,因此我们就先熟悉这两个数据库。

对于 MySQL,目前我们也还不需要去研究比较深入的东西,比如存储引擎、存储过程、触发器、事务隔离级别、分布式事务、锁机制等等,最初级的主要了解以下内容:

  • 安装配置:这不用说,最最基本的
  • SQL:对 SQL 肯定要非常熟悉,这也是最基本的
  • 数据类型:要了解 MySQL 有哪些数据类型,以及不同数据类型之间有哪些差异
  • 约束:了解并熟悉各种约束的用法,包括主键约束、非空约束、唯一性约束、自增约束、默认值约束等
  • 索引:索引很重要,必须要懂,当然,如何用好索引也是门学问
  • 函数:了解一些常用的函数,如 count、sum、avg、max、min、now 等等

对于 Redis,因为是基于内存的,所以性能非常高,很多项目用它作缓存。虽然是一个 key - value 数据库,但 value 可以是字符串(String)、哈希(Map)、列表(List)、集合(Sets)、有序集合(Sorted Sets) 等类型。推荐一个菜鸟的简明教程,可以简单入门:

5、Spring

我们入门只先了解两个项目:Spring Boot 和 Spring Framework。其中,Spring Framework 是我们要学习的核心框架,但也不是要了解这个项目的全部内容,只先了解一些基础的东西,能够支撑到我们进行入门级的开发就足够了。

那么,先来聊聊 Spring Framework,目前最新版本是 Spring Framework 5.0。Spring Framework 包含有20多个模块,包括 spring-corespring-aopspring-beansspring-contextspring-jdbcspring-webspring-webmvcspring-websocket 等等,具体列表可以查看 Spring Framework 的 Github 项目。不过,一般我们不需要将所有模块都引入到项目中,根据所需去引入即可。

学习 Spring Framework,有两个核心设计思想是要掌握的,就是 控制反转(Inversion of Control,简称 IoC)面向切面编程(Aspect Oriented Programming,简称 AOP)。说到控制反转,还有一个概念也要理解,叫 依赖注入(Dependency Injection,简称 DI),区别就是,控制反转是一种设计思想,而依赖注入则是其中一种实现的方式,还有另一个实现方式叫依赖查找(Dependency Lookup)。不过,大部分都是采用依赖注入,Spring 使用的也是依赖注入的方式。另外,Spring 核心还有一个控制反转容器(IoC Container),主要就是通过配置文件以及利用反射在运行时创建所需要的实现类。要理解这几个概念,推荐看知乎上的一个回答,深入浅出,非常好理解:

AOP 同样也是一种设计思想,主要是为了分离出一些非业务逻辑的代码,如日志记录、性能统计,安全控制,事务处理,异常处理等。在 Spring 底层是通过动态代理的方式实现了 AOP 的内部机制,另外,上层也支持 AspectJ 的注解方式。AOP 中还有几个相关概念需要理解:AspectJoint pointPointcutAdviceWeaveIntroductionTarget ObjectAOP Proxy。那么,为了帮助大家理解 AOP 这些概念和原理,以及 Spring 中要如何使用 AOP,我找了两篇文章分享给大家学习:

接着,再来了解下 Spring Boot,Spring Boot 能够简化基于 Spring 的应用的搭建和开发,Spring Cloud 就是基于 Spring Boot 的。Spring Boot 从根本上来说就是一些库的集合,这些库的 artifactId 一般都是以 spring-boot-starter- 为前缀。使用 Spring Boot 搭建项目也是非常简单的,我就分享《Spring Cloud微服务实战》一书的作者翟永超博客的两篇文章给大家吧:

要相对系统地入门 Spring,我推荐评价最高的两本书:《Spring实战(第4版)》《精通Spring 4.x:企业应用开发实战》。两本书都是基于 Spring 4 的,基于 Spring 5 的书籍还没有,不过这对于入门来说并没什么影响。另外,《精通Spring 4.x:企业应用开发实战》这本书中还加了 Spring Boot 的章节。Spring Framework 的官方文档也可以看,内容毕竟是最新也是最详细的,只是内容太多了,据说有600多页,所以一时半会是看不完的,一般也不推荐初学者直接看官方文档,只建议对某些点理解得还不是很深的情况下可以去翻来看看,加深理解。Spring Boot 的官方文档也是一样。

6、MyBatis

前面我们知道,Java 访问数据库的标准 API 是 JDBC,只是,直接使用 JDBC API 进行编码操作数据库的话,代码非常繁琐,可扩展性非常低,因此,才会衍生出 HibernateMyBatisSpringJDBC 等对 JDBC 进行了封装的 ORM 框架,以简化开发。那么,为什么选择 MyBatis,而不是 Hibernate 或 SpringJDBC 呢?主要是因为目前最流行的还是 MyBatis,另外 MyBatis 也容易上手。

先来了解下 ORM 这个概念,ORM = Object Relational Mapping,称为对象关系映射,即业务实体对象和关系数据库之间建立起一种映射关系,最简单的映射关系就是:一个类对应一张数据表,类的每个实例对应表中的一条记录,类的每个属性则对应表的每个字段。Hibernate 是一个标准的 ORM 框架,在实体类和数据库之间建立了完整的映射关系,基本不需要开发人员自己写 SQL,内部会自动生成 SQL 语句,因此,对于数据量非常大的应用,想要优化 SQL 语句就比较困难。MyBatis 则是一个半自动化的 ORM 框架,不同于 Hibernate 提供了从实体类到数据库表的全套映射机制,SQL 是自动生成的;而 MyBatis 则只是在实体类和 SQL 之间建立映射关系,并不自动生成 SQL 语句,因此,开发人员是需要自己写 SQL 的。这样,对 SQL 进行优化则比较方便了。

要了解 MyBatis 的用法,直接看官方文档即可,内容不多,且还有中文版本,以下是链接地址:

实战

前面的内容非常多,要通过实战项目将所有知识点全部串起来还真的比较难,主要是如今已经找不到项目会直接编写 Servlet 和 JDBC 了,而这两块是 Java Web 的底层技术,必须要理解透彻。那么,我们只能拆开来学习,Servlet 和 JDBC 原生部分,建议就按照书籍上的 Demo 去练习,主要目的是要通过编码对那些核心的知识点形成深刻理解。Spring、MyBatis、数据库这些,则可以通过一些开源项目进行学习,我找到一个基于 Spring Boot 的不错的学习项目,推荐给大家:

里面的每个小项目都非常简单,建议重点看 springboot-mybatis-redis 这个小项目,最贴合我们需要学习的内容。因为项目太简单,建议对其进行扩展,比如,自己多增加一个表,并通过增加新的 REST 接口对其进行增删改查;或者添加用户注册登录功能,并使用过滤器对用户作统一鉴权;或者再添加对 WebSocket 的支持。最好是将其扩展成一个相对完整的 Java Web 项目,比如做一个简化的电商项目,不需要界面,只需要提供接口。当你能完成这个完整的 Java Web 项目之后,也算真正入门了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 207,113评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,644评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,340评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,449评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,445评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,166评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,442评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,105评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,601评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,066评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,161评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,792评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,351评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,352评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,584评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,618评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,916评论 2 344

推荐阅读更多精彩内容