Chapters

  1. 1. Introduction and Setup
    1. 1.1. Why Learn Java?
    2. 1.2. Setup For Java
    3. 1.3. Java in the Terminal
    4. 1.4. IntelliJ
    5. 1.5. Your First Java Project
    6. 1.6. Java Web Dev Exercises
    7. 1.7. Java Naming Conventions
  2. 2. Data Types
    1. 2.1. Data Types
    2. 2.2. Some Java Practice
    3. 2.3. More Data Types
    4. 2.4. Exercises: Data Types
    5. 2.5. Studio: Area of a Circle
  3. 3. Control Flow and Collections
    1. 3.1. Conditionals
    2. 3.2. Loops
    3. 3.3. Collections
    4. 3.4. ArrayList
    5. 3.5. Array
    6. 3.6. HashMap
    7. 3.7. Exercises: Control Flow and Collections
    8. 3.8. Studio: Counting Characters
  4. 4. Classes in Java, Part 1
    1. 4.1. Classes for Java
    2. 4.2. Modifiers in Java
    3. 4.3. Encapsulation
    4. 4.4. Constructors
    5. 4.5. Methods
    6. 4.6. Single Responsibility Principle
    7. 4.7. Exercises: Classes and Objects
    8. 4.8. Studio: Restaurant Menu
  5. 5. Classes and Objects, Part 2
    1. 5.1. Customizing Fields
    2. 5.2. Instance and Static Methods
    3. 5.3. Special Methods
    4. 5.4. IntelliJ Generator Shortcut
    5. 5.5. Exercises: Objects and Classes, Part 2
    6. 5.6. Studio: Restaurant Menu Continued
  6. 6. Unit Testing
    1. 6.1. Testing in Java
    2. 6.2. JUnit
    3. 6.3. Exercises: Unit Testing
    4. 6.4. Studio: Unit Testing
  7. 7. Inheritance
    1. 7.1. Inheritance in OOP
    2. 7.2. Inheritance in Java
    3. 7.3. A Tale of Two Cats
    4. 7.4. Inheriting from Abstraction
    5. 7.5. Casting
    6. 7.6. Testing Inheritance
    7. 7.7. Class Diagrams
    8. 7.8. Exercises: Inheritance
    9. 7.9. Studio: Fun with Quizzes
  8. 8. Interfaces and Polymorphism
    1. 8.1. Introduction
    2. 8.2. Interfaces
    3. 8.3. Interfaces and Abstract Classes
    4. 8.4. Interfaces In The Wild
    5. 8.5. Unit Testing and Interfaces
    6. 8.6. Exercises: Interfaces and Polymorphism
    7. 8.7. Studio: Spinning the Discs
  9. 9. Spring Into MVC
    1. 9.1. Design Patterns, MVC, and Spring, Oh My!
    2. 9.2. Initialize Spring
  10. 10. Controllers and Routing
    1. 10.1. Simple Controllers
    2. 10.2. Controllers with Parameters
    3. 10.3. Controllers with Forms
    4. 10.4. Class Level Controller Annotations
    5. 10.5. Exercises: Controllers and Routing
    6. 10.6. Studio: Skills Tracker
  11. 11. Rules to the Exceptions
    1. 11.1. Check the Temperature with Exceptions
    2. 11.2. Exercises: Exceptions
  12. 13. Thymeleaf Views
    1. 13.1. Templates
    2. 13.2. Creating a Template
    3. 13.3. Using a Template
    4. 13.4. Iterating in a Template
    5. 13.5. Conditionals in a Template
    6. 13.6. Thymeleaf Forms
    7. 13.7. Template Fragments
    8. 13.8. Static Resources
    9. 13.9. Bootstrap
    10. 13.10. Exercises: Thymeleaf Views
    11. 13.11. Studio: Spa Day!
  13. 14. Models and Model Binding
    1. 14.1. Models in MVC
    2. 14.2. Create a Model
    3. 14.3. Models and Data
    4. 14.4. Model-Binding
    5. 14.5. Exercises: Edit Model Classes
    6. 14.6. Studio: Spa User Signup
  14. 15. Model Validation
    1. 15.1. Server-Side Validation
    2. 15.2. Validation Annotations
    3. 15.3. Validating Models in a Controller
    4. 15.4. Thymeleaf Form Tools
    5. 15.5. Exercises: Model Validation
    6. 15.6. Studio: Spa User Validation
  15. 16. Enumeration Types
    1. 16.1. Introduction to Enums
    2. 16.2. Enums in Model Classes
    3. 16.3. Exercises: Enum Practice
  16. 17. Introduction to Object-Relational Mapping
    1. 17.1. Object-Relational Mapping
    2. 17.2. Accessing Data
    3. 17.3. Repositories
    4. 17.4. Exercises: OMG the ORM!
    5. 17.5. Studio: Creating an AbstractEntity
  17. 18. Relationships in Object-Relational Mapping
    1. 18.1. Types of Relationships
    2. 18.2. Creating a Many-to-One Relationship
    3. 18.3. Creating a One-to-Many Relationship
    4. 18.4. Creating a One-to-One Relationship
    5. 18.5. Creating a Many-to-Many Relationship
    6. 18.6. Exercises: The Early Bird Gets the ORM!
  18. 19. Authentication
    1. 19.1. Introduction to Authentication
    2. 19.2. Hashing Passwords
    3. 19.3. Creating a User Model
    4. 19.4. Login and Registration Forms
    5. 19.5. Filtering Requests
    6. 19.6. Studio: TechJobs Authentication