Learn the Java Spring Framework: Create a Social Network with Spring Boot
Learn how to get dynamic and secure websites running quickly with Spring Boot
Enroll in Course
This is a course on the Java Spring framework and Spring Boot.
To learn about Spring we'll be creating a simple social network, complete with profiles and real-time messaging.
You'll need to understand basic Java to take this course. Knowledge of HTML/CSS and SQL is also helpful. Knowledge of JSP/JSTL will be useful.
Your Instructor
I worked as a professional developer for 14 years for several different companies including Proquest, CSC and AT&T before going full-time as a course creator. I currently live in Italy, although as a native Brit you get to enjoy (or put up with!) my British English accent while following your chosen courses.
In my spare time I like to write science fiction, often in cafes, and I'm a fan of old books.
Course Curriculum
-
PreviewIntroduction to the course (4:15)
-
PreviewPrerequisites (1:28)
-
PreviewInstalling Software (1:42)
-
PreviewCreating a Maven Spring Boot Project (13:09)
-
PreviewA Basic Web App (12:53)
-
PreviewTemplate Engines (3:31)
-
PreviewAdding a JSP (9:40)
-
PreviewGenerating a Project Without Eclipse (4:07)
-
PreviewPackaging with Maven (6:28)
-
PreviewBuilding with Eclipse (5:14)
-
PreviewExecutable Wars (5:46)
-
PreviewDeploying to Existing Tomcat (12:42)
-
PreviewMultiple Pages and Controllers (10:20)
-
StartAbout Paging (2:09)
-
StartGetting URL Parameters (11:02)
-
StartGetting Pages of Results (7:11)
-
StartOutputting Pages (7:30)
-
StartFormatting the Status Updates (2:37)
-
StartOutputting Page Numbers (12:22)
-
StartCustom Tags (11:35)
-
StartCycling Through Page Blocks (8:10)
-
StartDisplaying Page Number Blocks (9:48)
-
StartFixing the Block Hyperlinks and Separator (4:37)
-
StartJumping to the First Page of Blocks (8:22)
-
StartThe User Domain Object (5:29)
-
StartThe User Service (4:13)
-
StartThe User Service (7:44)
-
StartConfiguring the User Service (5:24)
-
StartRegistration Forms (7:57)
-
StartMaking Registration Work (5:59)
-
StartPassword Encryption (11:39)
-
StartUsing Roles (8:17)
-
StartRestricting Urls on Roles (3:36)
-
StartFake Smtp Test Services (5:48)
-
StartConfiguring a Mail Sender (9:59)
-
StartCreating a Mail Service (8:35)
-
StartTesting Mail Sending (1:26)
-
StartSending as HTML (2:08)
-
StartCreating a Verify Email Page (4:08)
-
StartAdding Thymeleaf Support (5:22)
-
StartCreating a Thymeleaf Template (6:09)
-
StartConfiguring Thymeleaf (5:05)
-
StartRendering the Thymeleaf Template (5:47)
-
Start[Obsolete -- will be removed soon; please skip this video] Creating a Velocity Template (6:37)
-
Start[Obsolete -- will be removed soon; please skip this video] Rendering Velocity Templates (6:48)
-
StartDisabling Users (7:04)
-
StartStoring Verification Tokens (12:12)
-
StartUpdating a User (3:12)
-
StartA VerificationDao (2:12)
-
StartToken User Service Methods (5:00)
-
StartCreating a Message page (9:10)
-
StartInvalid User and Expired Token Pages (2:44)
-
StartCreating the Verification Link (11:54)
-
Start[Obsolete -- will be removed soon. Please skip this video] Creating the Verfication Link (6:05)
-
StartImplementing Verification (8:27)
-
StartDeleting Used Tokens (3:29)
-
StartAsynchronous Methods (5:33)
-
StartAdding a Profile Link (2:59)
-
StartRetrieving the Logged in Username (5:29)
-
StartCreating a Profile Domain Object (8:22)
-
StartAdding a Profile Page (8:54)
-
StartAdding Profile Text (3:44)
-
StartStyling the Profile (6:44)
-
StartThe Profile DAO (2:08)
-
StartThe Profile Service (2:36)
-
StartEnsuring Privacy in Domain Objects (4:27)
-
StartGetting the Current User (3:53)
-
StartCreating Profiles (7:33)
-
StartDisplaying Profile Text (4:27)
-
StartThe Edit About JSP (3:19)
-
StartViewing the Edit About Page (6:17)
-
StartUpdating Profile About Text (7:31)
-
StartValidating the Profile (6:34)
-
StartAdding a Policy Factory (7:25)
-
StartSanitising the HTML (9:36)
-
StartAbout Uploading Files (3:11)
-
StartCreating an Upload Form (7:32)
-
StartThe Upload Directory (2:34)
-
StartFile Upload Code (7:42)
-
StartHandling Errors (5:17)
-
StartGetting File Extensions (4:46)
-
StartChecking Extensions (5:20)
-
StartTesting Private Methods with Reflection (8:22)
-
StartTesting isImageExtension (3:21)
-
StartCreating a Random Subdirectory (6:15)
-
StartTesting Directory Creation (5:17)
-
StartDefining an Exception (1:44)
-
StartCreating an Image Save Method (7:40)
-
StartUploading Photos (5:14)
-
StartTransferring File Information (3:58)
-
StartGetting File Information (3:07)
-
StartStoring File Information (7:05)
-
StartLocating the Default Avatar (1:09)
-
StartReturn the Full Photo Path (2:28)
-
StartServing the Photo (11:15)
-
StartUsing the Photo (4:15)
-
StartDeleting Old Photos (3:40)
-
StartEnsuring Name Uniqueness (4:29)
-
StartStructuring the Resize Code (6:28)
-
StartResizing the Profile Photo (13:10)
-
StartTranslating Upload Status (9:03)
-
StartReturning Data from a Method (5:18)
-
StartRunning Javascript (8:42)
-
StartInvoking the File Chooser (5:36)
-
StartSubmitting the Form Automatically (3:11)
-
StartIntercepting Form Submission (6:51)
-
StartUploading Data with Javascript (9:49)
-
StartReturning Http Status Codes (2:55)
-
StartDynamically Refreshing the Image (5:56)
-
StartAdding a Status Message (4:27)
-
StartDisplaying the Status Message (4:24)
-
StartRemoving the Unwanted Form (2:28)
-
StartMethod Based Security (7:09)
-
StartDefining an Interest (8:07)
-
StartInterest Service and Dao (5:08)
-
StartMany to Many (12:48)
-
StartAbout Cascading and Ordering (4:23)
-
StartSaving Interests (5:15)
-
StartMerging and Copying (2:15)
-
StartModifying Classes for Testing (4:19)
-
StartCreating a Profile Test Class (7:32)
-
StartImplementing the Profile Interest Test (11:22)
-
StartFetch Types and Proxies (10:01)
-
StartA REST Method for Saving Interests (12:54)
-
StartA REST Method for Deleting Interests (6:23)
-
StartTest Config for Testing Controller Methods (7:14)
-
StartMocking Users (3:21)
-
StartMocking a Post Request (9:13)
-
StartFinishing the REST Tests (9:57)
-
StartJavascript Tagging Libraries (9:11)
-
StartIncluding CSS and Javascript for Tagging (10:00)
-
StartInvoking the Tagging Library (5:35)
-
StartInspecting Generated HTML (4:46)
-
StartStyling Interest Tags (7:08)
-
StartConfiguring Tagging (6:34)
-
StartDealing with CSRF in Javascript (10:17)
-
StartSetting POST Headers (6:34)
-
StartImplementing the Ajax Post (4:44)
-
StartOutputting the Interest List (6:26)
-
StartRemoving Autocomplete Text (6:14)
-
StartMaking Profiles Read Only (7:54)
-
StartAbout Searching (3:59)
-
StartAdding a Search Box (5:18)
-
StartStyling the Search Box (6:22)
-
StartA Search Controller (8:02)
-
StartCollecting Names (13:25)
-
StartFixing Tests (10:34)
-
StartMocking Data (2:43)
-
StartTest Data (11:05)
-
StartCreating a Stream (4:13)
-
StartStream Operations (14:14)
-
StartMock Users (18:41)
-
StartSaving the Test Data (6:13)
-
StartPerforming the Search (9:28)
-
StartAbout Data Leakage and Layers (6:34)
-
StartReorganising the Model Packages (3:51)
-
StartThe SearchResult DTO (6:38)
-
StartStream Mapping (5:07)
-
StartThe List of Results (7:33)
-
StartFormatting the Results Page (3:21)
-
StartAdding Photos (5:24)
-
StartRearranging the Results (12:59)
-
StartLinking to Profiles (3:04)
-
StartAdding a Register Prompt (4:43)
-
StartCSS for the Results (7:15)
-
StartClickable Interests (5:04)
-
StartImproving Searching (6:30)
-
StartMore About Paging (6:06)
-
StartChecking Paging Functionality (7:18)
-
StartUsing the Debugger (12:13)
-
StartAdding a Page Number Parameter (4:56)
-
StartImplementing Basic Paging (8:06)
-
StartTesting Out Basic Paging (6:10)
-
StartConverting from Lists to Pages (10:20)
-
StartAdding the Pagination Tag (9:36)
-
StartTweaking the Pagination Tag (9:38)
-
StartSending Search Data to the Results Page (4:44)
-
StartUsing the JSTL Contains Function (5:49)
-
StartApplying the Final Pagination Fix (6:05)
-
StartAdjusting Page Numbers and Results (5:19)
-
StartWorking Sets and Filters (7:56)
-
StartSome Simple Package Upgrades (6:26)
-
StartUsing the New Crudrepository Methods (8:42)
-
StartUpgrading Test Annotations (6:49)
-
StartConfiguring Servers in Spring Boot 2 (6:49)
-
StartUpgrading PageRequests (5:52)
-
StartUsing a Test Database (12:54)
-
StartRunning the Tests (5:38)
-
StartMaking the Tests Rerunnable (6:08)
-
StartFixing Image Upload Bugs (6:43)
-
StartFixing Search Results Bug (4:20)
-
StartIntroducing Websockets (8:00)
-
StartWebjars (6:31)
-
StartChecking Webjars Javascript (1:26)
-
StartWebsocket Configuration (13:36)
-
StartGetting the CSRF Token (9:20)
-
StartEstablishing a Web Socket Connection (9:07)
-
StartA Chatview Page (7:42)
-
StartAdding Chatview Script (6:51)
-
StartCompleting the Chat Form (7:28)
-
StartResponding to Clicks and the Enter Key (4:35)
-
StartGetting the Logged In User ID (9:21)
-
StartGetting the Chat User Details (10:34)
-
StartA SimpleMessage Class (5:10)
-
StartMessage Handling Controller Method (3:32)
-
StartMessage Sending Additional Code (12:01)
-
StartSending the Message (7:26)
-
StartSending the Message Back to the User (11:42)
-
StartReceiving Messages
-
StartA Javascript Connection Manager Class (12:59)
-
StartThe Subscription Array (10:55)
-
StartGetting the ConnectionManager Working (12:34)
-
StartTransferring Code to ConnectionManager (10:07)
-
StartA Custom User Details Class (5:51)
-
StartAdding the Profile Name (9:25)
-
StartWorking with Profiles (5:43)
-
StartAdding a Chat Icon (7:19)
-
StartAbout Queues (8:29)
-
StartSending and Receiving (5:59)
-
StartDisplaying Formatted Messages (4:54)
-
StartStyling Messages (2:21)
-
StartDifferentiating Replies from Sent Messages (6:19)
-
StartA Message Class (6:55)
-
StartMessage Service and Repository (6:17)
-
StartFetchConversation Controller Method (7:32)
-
StartFetchConversation Message Service Method (8:11)
-
StartQuerying the Conversation Messages (8:54)
-
StartRetrieving the Conversation (8:15)
-
StartUsing Javascript to Retrieve the Conversation (5:20)
-
StartPosting the Conversation Request (6:45)
-
StartDisplaying Past Messages (5:24)
-
StartOrdering Messages (8:04)
-
StartRetrieving Previous Message Pages (6:39)
-
StartAdding Previous Messages (5:43)
-
StartSizing the Chat Window (11:39)
-
StartSending a Message Notification (5:43)
-
StartBrowser Notifications (8:17)
-
StartMaking Notifications Clickable (2:20)
-
StartAdding a Messages Page (3:52)
-
StartRetrieving the Message List (7:52)
-
StartDisplaying the Message List (5:43)
-
StartFormatting Messages (6:10)
-
StartGetting the Message ID (4:41)
-
StartMarking Messages as Read (7:19)