This course was created with the
course builder. Create your online course today.
Start now
Create your course
with
Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Java Course For Complete Beginners 2020
Part I : Java Programming tutorials
Introduction and Installation (9:39)
What Java Is and How It Works (12:38)
Programming Core Java
Using Variables (7:53)
Strings: Working With Text (9:21)
While Loops (7:15)
For Loops (9:28)
"If" (12:26)
Getting User Input (8:52)
Do - While (8:05)
Switch (6:52)
Arrays (9:46)
Multi-Dimensional Arrays (8:39)
Arrays of Strings (8:39)
Classes and Objects (11:44)
Methods (11:05)
Getters and Return Values (10:31)
Method Parameters (15:00)
Setters and "this" (10:57)
Constructors (10:18)
Static (and Final) (19:46)
The toString Method (11:06)
String Builder and String Formatting (19:43)
Inheritance (14:09)
Packages (14:03)
Interfaces (19:15)
Public, Private, Protected (19:57)
Polymorphism (10:04)
Encapsulation and the API Docs (11:17)
Casting Numerical Values (11:16)
Upcasting and Downcasting (13:54)
Using Generics (12:40)
Generics and Wildcards (17:50)
Anonymous Classes (8:56)
Runtime vs. Checked Exceptions (8:49)
Multiple Exceptions (12:11)
Handling Exceptions (16:23)
Reading Files Using Scanner (12:55)
Abstract Classes (12:58)
Reading Files With File Reader (17:26)
Try-With-Resources (11:12)
Creating and Writing Text Files (12:40)
The Equals Method (17:21)
Inner Classes (16:33)
Enum Types: Basic and Advanced Usage (19:20)
Recursion: A Useful Trick Up Your Sleeve (34:52)
Serialization: Saving Objects to Files (21:16)
Serializing Arrays (14:42)
The Transient Keyword and More Serialization (16:14)
Passing by Value (21:29)
Java Collections Framework
ArrayList: Arrays the Easy Way (9:58)
Linked Lists (13:56)
HashMap: Retrieving Objects via a Key (9:57)
Sorted Maps (12:02)
Using Custom Objects in Sets and as Keys in Maps (11:20)
Sets (15:54)
Sorting Lists (21:29)
Natural Ordering (19:35)
Queues (18:17)
Using Iterators (9:25)
Implementing Iterable (18:55)
Deciding Which Collection to Use (14:24)
Complex Data Structures (21:52)
Appendix
Eclipse Shortcuts (13:12)
Ten Tips for Improving Your Coding (5:48)
Debugging in Eclipse (15:36)
Course Source Codes
Source Codes (ZIP)
Ebooks
Java - How To Program
Core Java Volume I- Fundamentals
Part II : Full stack development
Introduction (4:15)
Prerequisites (1:28)
About Spring Boot Versions (6:07)
Installing Software (1:42)
Creating a Maven Spring Boot Project (13:09)
A Basic Web App (12:53)
Template Engines (3:30)
Adding a JSP (9:40)
Generating a Project Without Eclipse (4:07)
Packaging With Maven (6:28)
Building With Eclipse (5:14)
Executable Wars (5:46)
Deploying to an Existing Tomcat Server (12:42)
Multiple Controllers (10:20)
Composing Pages With Apache
Setting Up Apache Tiles (10:27)
Creating Tiles Definitions (10:37)
Adding and Extending Tiles Definitions (6:27)
Bootstrap and Static Resources
Static Resources - Bootstrap (10:57)
Adding a Bootstrap Navbar (7:11)
Styling the Navbar (10:56)
Setting the Context Root (15:11)
The Bootstrap Grid (8:42)
Bootstrap Panels (5:55)
Adding a HTML Form (3:15)
Using Data : Hibernate and JPA
JUnit (11:09)
MySQL Databases (5:32)
Creating a MySQL User (7:40)
Connecting to MySQL (12:23)
Creating a Domain Object (6:07)
Using JPA (8:50)
Using CrudRepository (15:24)
Retrieving the Most Recent Status Object (10:08)
Spring Forms and Displaying Data
Adding a Service Layer (3:42)
Model and View (11:59)
Spring Forms (11:40)
Displaying Data (9:05)
Formatting Dates (7:51)
How Forms Work
JSPs, Objects and Classes (8:40)
Model Attributes (6:18)
Refreshing and Updating (7:34)
Form Validation
Validating Forms (9:57)
Customising Validation Messages (7:44)
Pagination
About Paging (2:09)
Getting Pages of Results (7:11)
Getting URL Parameters (11:02)
Outputting Pages (7:30)
Formatting the Status Updates (2:37)
Outputting Page Numbers (12:22)
Custom Tags (11:35)
Cycling Through Page Blocks (8:10)
Displaying Page Number Blocks (9:48)
Fixing the Block Hyperlinks and Separator (4:37)
Jumping to the First Page of Blocks (8:22)
Improving the App Dropdowns, WYSIWYG and Other Stuff
What If There Is Only One Page (3:03)
Redirecting (4:35)
Editing the Home Page (7:09)
Javascript Visual Editors (6:14)
Dropdown Menus (9:44)
Editing and Deleting Data
Adding Edit and Delete Links (7:53)
Deleting Status Updates (6:46)
Displaying Statuses for Editing (8:16)
Saving Edits (10:18)
Spring Security Logging in Users
Adding Spring Security (7:37)
Conditional Formatting (3:40)
Additional Security Rules (6:58)
Adding a Login Form (15:22)
Authentication (9:12)
Login Error Messages (4:27)
Logging Out (6:49)
The Security Taglib (5:49)
User Registration
The User Domain Object (5:29)
The User Service (7:44)
The User Service (4:12)
Configuring the User Service (5:24)
Registration Forms (7:56)
Making Registration Work (5:59)
Password Encryption (11:39)
Using Roles (8:17)
Restricting Urls on Roles (3:35)
Validation
Validating the Email Address (7:44)
Validating the Password (9:50)
Adding Custom Validation (5:37)
Custom Validaton Annotation (6:46)
Adding the Password Match Constraint (9:34)
Email Verification
Fake Smtp Test Services (5:48)
Configuring a Mail Sender (6:02)
Creating a Mail Service (8:35)
Testing Mail Sending (1:25)
Sending as HTML (2:07)
Creating a Verify Email Page (4:08)
Adding Thymeleaf Support (5:22)
Creating a Thymeleaf Template (6:09)
Configuring Thymeleaf (5:05)
Rendering the Thymeleaf Template (5:47)
Token Validation
Disabling Users (7:04)
Storing Verification Tokens (12:12)
Updating a User (1:26)
A VerificationDao (2:12)
Token User Service Methods (5:00)
Creating a Message page (9:10)
Invalid User and Expired Token Pages (2:44)
Creating the Verification Link (11:54)
Implementing Verification (8:27)
Deleting Used Tokens (3:29)
Asynchronous Methods (5:33)
Handling Errors
1. Tightening the Security Rules (5:13)
2. Handling Errors in Spring Boot 2 (6:21)
3. Handling 403 Forbidden (5:31)
4. Adding an Access Denied Page (5:36)
5. Handling Exceptions (8:11)
6. Creating an Error Page (8:38)
7. Handling Duplicate Users (6:43)
User Profiles
Adding a Profile Link (2:59)
Retrieving the Logged in Username (5:29)
Creating a Profile Domain Object (8:22)
Adding a Profile Page (8:54)
Adding Profile Text (3:44)
Styling the Profile (6:44)
The Profile DAO (2:08)
The Profile Service (2:36)
Ensuring Privacy in Domain Objects (4:27)
Getting the Current User (3:53)
Creating Profiles (7:33)
Displaying Profile Text (4:09)
The Edit About JSP (3:19)
Viewing the Edit About Page (6:17)
Updating Profile About Text (7:31)
Validating the Profile (6:33)
Adding a Policy Factory (7:25)
Sanitising the HTML (9:35)
Uploading Photos
About Uploading Files (3:10)
Creating an Upload Form (7:32)
The Upload Directory (1:10)
File Upload Code (7:42)
Handling Errors (5:17)
Getting File Extensions (4:46)
Checking Extensions (5:19)
Testing Private Methods with Reflection (8:22)
Testing isImageExtension (3:20)
Creating a Random Subdirectory (6:15)
Testing Directory Creation (5:17)
Defining an Exception (1:44)
Creating an Image Save Method (7:40)
Uploading Photos (5:13)
Transferring File Information (3:58)
Getting File Information (3:07)
Storing File Information (7:05)
Locating the Default Avatar (1:09)
Return the Full Photo Path (2:28)
Serving the Photo (11:15)
Using the Photo (4:15)
Deleting Old Photos (3:40)
Ensuring Name Uniqueness (4:29)
Structuring the Resize Code (6:27)
Resizing the Profile Photo (13:10)
Improving File Upload with Javascript
Translating Upload Status (9:03)
Returning Data from a Method (5:18)
Running Javascript (8:42)
Invoking the File Chooser (5:35)
Submitting the Form Automatically (3:10)
Intercepting Form Submission (6:51)
Uploading Data with Javascript (9:49)
Returning Http Status Codes (2:55)
Dynamically Refreshing the Image (5:56)
Adding a Status Message (2:05)
Displaying the Status Message (4:24)
Removing the Unwanted Form (2:28)
Method Based Security (7:09)
Viewing Other Profiles
Refactoring the Show Profile Code (6:06)
Using Path Variables (5:10)
Viewing Other Profiles (4:09)
Getting Profile-Specific Photos (2:46)
Using the User ID in the Profile (3:45)
Attaching Tags to Profiles
Defining an Interest (8:06)
Interest Service and Dao (5:07)
Many to Many (12:48)
About Cascading and Ordering (4:23)
Saving Interests (5:15)
Merging and Copying (2:15)
Modifying Classes for Testing (4:19)
Creating a Profile Test Class (7:32)
Implementing the Profile Interest Test (11:22)
Fetch Types and Proxies (10:01)
A REST Method for Saving Interests (12:54)
A REST Method for Deleting Interests (6:22)
Test Config for Testing Controller Methods (7:14)
Mocking Users (3:21)
Mocking a Post Request (9:13)
Finishing the REST Tests (9:57)
Javascript Tagging Libraries (9:11)
Including CSS and Javascript for Tagging (10:00)
Invoking the Tagging Library (5:35)
Inspecting Generated HTML (4:46)
Styling Interest Tags (7:08)
Configuring Tagging (6:34)
Dealing with CSRF in Javascript (10:17)
Setting POST Headers (2:58)
Implementing the Ajax Post (4:44)
Outputting the Interest List (6:26)
Removing Autocomplete Text (6:14)
Making Profiles Read Only (7:54)
Searching
About Searching (3:58)
Adding a Search Box (5:18)
Styling the Search Box (6:22)
A Search Controller (5:37)
Collecting Names (13:25)
Fixing Tests (10:33)
Mocking Data (2:43)
Test Data (11:05)
Creating a Stream (4:13)
Stream Operations (14:13)
Mock Users (18:40)
Saving the Test Data (6:13)
Performing the Search
About Data Leakage and Layers (3:13)
Reorganising the Model Packages (3:51)
The SearchResult DTO (6:38)
Stream Mapping (5:07)
The List of Results (7:33)
Formatting the Results Page (3:21)
Adding Photos (5:24)
Rearranging the Results (12:58)
Linking to Profiles (3:04)
Adding a Register Prompt (4:43)
CSS for the Results (7:15)
Clickable Interests (5:04)
Improving Searching (6:30)
More About Paging (6:06)
Checking Paging Functionality (7:18)
Using the Debugger (12:13)
Adding a Page Number Parameter (4:56)
Implementing Basic Paging (8:06)
Testing Out Basic Paging (6:10)
Converting from Lists to Pages (10:20)
Adding the Pagination Tag (9:36)
Tweaking the Pagination Tag (9:38)
Sending Search Data to the Results Page (4:44)
Using the JSTL Contains Function (5:49)
Applying the Final Pagination Fix (6:05)
Adjusting Page Numbers and Results (5:19)
Upgrading Spring Boot
Working Sets and Filters (7:55)
Some Simple Package Upgrades (6:26)
UsingNew CrudRepository Methods (8:42)
Upgrading Test Annotations (6:49)
Configuring Servers in Spring Boot 2 (6:49)
Upgrading PageRequests (5:52)
Using a Test Database (12:54)
Running the Tests (5:38)
Making the Tests Rerunnable (6:08)
Fixing Image Upload Bugs (6:43)
Fixing Search Results Bug (4:20)
Messaging with Websockets and STOMP
Introducing Websockets (8:00)
Webjars (6:31)
Checking Webjars Javascript (1:26)
Websocket Security Config (13:36)
Getting the CSRF Token (9:20)
Establishing a Web Socket Connection (9:07)
A Chatview Page (7:42)
Adding Chatview Script (6:51)
Completing the Chat Form (7:28)
Responding to Clicks and the Enter Key (4:35)
Getting the Logged In User ID (9:21)
Getting the Chat User Details (10:34)
A Simple Message Class (5:10)
Message Handling Controller Method (3:32)
Message Sending Additional Code (12:01)
Sending the Message (7:26)
Sending the Message Back to the User (11:42)
Receiving Messages (11:30)
A Websocket Connection Manager
A Javascript Connection Manager Class (12:59)
The Subscription Array (10:55)
Getting the Connection Manager Working (12:34)
Transferring Code to Connection Manager (10:07)
A Custom User Details Class (5:51)
Adding the Profile Name (9:25)
Working with Profiles (5:43)
Adding a Chat Icon (7:19)
About Queues (8:29)
Sending and Receiving (5:59)
Formatting and Displaying Messages
Displaying Formatted Messages (4:54)
Styling Messages (2:21)
Differentiating Replies from Sent Messages (6:19)
A Message Class (6:55)
Message Service and Repository (6:17)
Fetch Conversation Controller Method (7:32)
Fetch Conversation Message Service Method (8:11)
Querying the Conversation Messages (8:54)
Retrieving the Conversation (8:15)
Using Javascript to Retrieve the Conversation (5:20)
Posting the Conversation Request (6:45)
Displaying Past Messages (5:24)
Ordering Messages (8:03)
Retrieving Previous Message Pages (6:39)
Adding Previous Messages (5:43)
Sizing the Chat Window (11:39)
Sending a Message Notification (5:43)
Browser Notifications (8:17)
Making Notifications Clickable (2:20)
Adding a Messages Page (3:52)
Retrieving the Message List (7:52)
Displaying the Message List (5:43)
Formatting Messages (6:10)
Getting the Message ID (4:41)
Marking Messages as Read (7:19)
Finishing Up
Deployment Rocommendations (7:30)
Conclusion (1:46)
Adding a Search Box
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock