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)
Teach online with
Reading Files With File Reader
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock