Урок 1.00:04:16
Introduction to the Course
Урок 2.00:01:29
Prerequisites
Урок 3.00:06:08
About Spring Boot Versions
Урок 4.00:01:43
Installing Software
Урок 5.00:13:10
Creating a Maven Spring Boot Project
Урок 6.00:12:54
A Basic Web App
Урок 7.00:03:32
Template Engines
Урок 8.00:09:41
Adding a JSP
Урок 9.00:04:08
Generating a Project Without Eclipse
Урок 10.00:06:29
Packaging With Maven
Урок 11.00:05:15
Building With Eclipse
Урок 12.00:05:47
Executable Wars
Урок 13.00:12:43
Deploying to an Existing Tomcat Server
Урок 14.00:10:21
Multiple Controllers
Урок 15.00:10:29
Setting Up Apache Tiles
Урок 16.00:10:39
Creating Tiles Definitions
Урок 17.00:06:28
Adding and Extending Tiles Definitions
Урок 18.00:10:58
Static Resources - Bootstrap
Урок 19.00:07:12
Adding a Bootstrap Navbar
Урок 20.00:10:57
Styling the Navbar
Урок 21.00:15:12
Setting the Context Root
Урок 22.00:08:43
The Bootstrap Grid
Урок 23.00:05:56
Bootstrap Panels
Урок 24.00:03:16
Adding a HTML Form
Урок 25.00:11:10
JUnit
Урок 26.00:05:33
MySQL Databases
Урок 27.00:07:41
Creating a MySQL User
Урок 28.00:12:24
Connecting to MySQL
Урок 29.00:06:09
Creating a Domain Object
Урок 30.00:08:51
Using JPA
Урок 31.00:15:25
Using CrudRepository
Урок 32.00:10:09
Retrieving the Most Recent Status Object
Урок 33.00:03:43
Adding a Service Layer
Урок 34.00:12:00
Model and View
Урок 35.00:11:41
Spring Forms
Урок 36.00:09:06
Displaying Data
Урок 37.00:07:52
Formatting Dates
Урок 38.00:08:41
JSPs, Objects and Classes
Урок 39.00:06:19
Model Attributes
Урок 40.00:07:35
Refreshing and Updating
Урок 41.00:09:58
Validating Forms
Урок 42.00:07:45
Customising Validation Messages
Урок 43.00:02:10
About Paging
Урок 44.00:07:12
Getting Pages of Results
Урок 45.00:11:03
Getting URL Parameters
Урок 46.00:07:31
Outputting Pages
Урок 47.00:02:38
Formatting the Status Updates
Урок 48.00:12:23
Outputting Page Numbers
Урок 49.00:11:36
Custom Tags
Урок 50.00:08:11
Cycling Through Page Blocks
Урок 51.00:09:49
Displaying Page Number Blocks
Урок 52.00:04:38
Fixing the Block Hyperlinks and Separator
Урок 53.00:08:23
Jumping to the First Page of Blocks
Урок 54.00:03:04
What If There Is Only One Page
Урок 55.00:04:36
Redirecting
Урок 56.00:07:10
Editing the Home Page
Урок 57.00:06:15
Javascript Visual Editors
Урок 58.00:09:45
Dropdown Menus
Урок 59.00:07:54
Adding Edit and Delete Links
Урок 60.00:06:47
Deleting Status Updates
Урок 61.00:08:17
Displaying Statuses for Editing
Урок 62.00:10:19
Saving Edits
Урок 63.00:07:39
Adding Spring Security
Урок 64.00:03:42
Conditional Formatting
Урок 65.00:06:59
Additional Security Rules
Урок 66.00:15:23
Adding a Login Form
Урок 67.00:09:13
Authentication
Урок 68.00:04:29
Login Error Messages
Урок 69.00:06:50
Logging Out
Урок 70.00:05:50
The Security Taglib
Урок 71.00:05:30
The User Domain Object
Урок 72.00:07:45
The User Service
Урок 73.00:04:14
The User Service
Урок 74.00:05:25
Configuring the User Service
Урок 75.00:07:58
Registration Forms
Урок 76.00:06:00
Making Registration Work
Урок 77.00:11:40
Password Encryption
Урок 78.00:08:18
Using Roles
Урок 79.00:03:37
Restricting Urls on Roles
Урок 80.00:07:45
Validating the Email Address
Урок 81.00:09:51
Validating the Password
Урок 82.00:05:39
Adding Custom Validation
Урок 83.00:06:48
Custom Validaton Annotation
Урок 84.00:09:35
Adding the Password Match Constraint
Урок 85.00:05:49
Fake Smtp Test Services
Урок 86.00:10:00
Configuring a Mail Sender
Урок 87.00:08:36
Creating a Mail Service
Урок 88.00:01:27
Testing Mail Sending
Урок 89.00:02:09
Sending as HTML
Урок 90.00:04:09
Creating a Verify Email Page
Урок 91.00:05:23
Adding Thymeleaf Support
Урок 92.00:06:10
Creating a Thymeleaf Template
Урок 93.00:05:06
Configuring Thymeleaf
Урок 94.00:05:48
Rendering the Thymeleaf Template
Урок 95.00:07:05
Disabling Users
Урок 96.00:12:13
Storing Verification Tokens
Урок 97.00:03:13
Updating a User
Урок 98.00:02:13
A VerificationDao
Урок 99.00:05:01
Token User Service Methods
Урок 100.00:09:11
Creating a Message page
Урок 101.00:02:45
Invalid User and Expired Token Pages
Урок 102.00:11:55
Creating the Verification Link
Урок 103.00:08:28
Implementing Verification
Урок 104.00:03:30
Deleting Used Tokens
Урок 105.00:05:34
Asynchronous Methods
Урок 106.00:05:14
Tightening the Security Rules
Урок 107.00:06:22
Handling Errors in Spring Boot 2*
Урок 108.00:05:32
Handling 403 Forbidden
Урок 109.00:05:37
Adding an Access Denied Page
Урок 110.00:08:12
Handling Exceptions
Урок 111.00:08:39
Creating an Error Page
Урок 112.00:06:44
Handling Duplicate Users
Урок 113.00:03:00
Adding a Profile Link
Урок 114.00:05:30
Retrieving the Logged in Username
Урок 115.00:08:23
Creating a Profile Domain Object
Урок 116.00:08:55
Adding a Profile Page
Урок 117.00:03:45
Adding Profile Text
Урок 118.00:06:45
Styling the Profile
Урок 119.00:02:09
The Profile DAO
Урок 120.00:02:37
The Profile Service
Урок 121.00:04:28
Ensuring Privacy in Domain Objects
Урок 122.00:03:54
Getting the Current User
Урок 123.00:07:34
Creating Profiles
Урок 124.00:04:28
Displaying Profile Text
Урок 125.00:03:20
The Edit About JSP
Урок 126.00:06:18
Viewing the Edit About Page
Урок 127.00:07:32
Updating Profile About Text
Урок 128.00:06:35
Validating the Profile
Урок 129.00:07:26
Adding a Policy Factory
Урок 130.00:09:37
Sanitising the HTML
Урок 131.00:03:12
About Uploading Files
Урок 132.00:07:33
Creating an Upload Form
Урок 133.00:02:35
The Upload Directory
Урок 134.00:07:43
File Upload Code
Урок 135.00:05:18
Handling Errors
Урок 136.00:04:47
Getting File Extensions
Урок 137.00:05:21
Checking Extensions
Урок 138.00:08:23
Testing Private Methods with Reflection
Урок 139.00:03:22
Testing isImageExtension
Урок 140.00:06:16
Creating a Random Subdirectory
Урок 141.00:05:18
Testing Directory Creation
Урок 142.00:01:45
Defining an Exception
Урок 143.00:07:41
Creating an Image Save Method
Урок 144.00:05:15
Uploading Photos
Урок 145.00:03:59
Transferring File Information
Урок 146.00:03:08
Getting File Information
Урок 147.00:07:06
Storing File Information
Урок 148.00:01:10
Locating the Default Avatar
Урок 149.00:02:29
Return the Full Photo Path
Урок 150.00:11:16
Serving the Photo
Урок 151.00:04:16
Using the Photo
Урок 152.00:03:41
Deleting Old Photos
Урок 153.00:04:30
Ensuring Name Uniqueness
Урок 154.00:06:29
Structuring the Resize Code
Урок 155.00:13:11
Resizing the Profile Photo
Урок 156.00:09:04
Translating Upload Status
Урок 157.00:05:19
Returning Data from a Method
Урок 158.00:08:43
Running Javascript
Урок 159.00:05:37
Invoking the File Chooser
Урок 160.00:03:12
Submitting the Form Automatically
Урок 161.00:06:52
Intercepting Form Submission
Урок 162.00:09:50
Uploading Data with Javascript
Урок 163.00:02:56
Returning Http Status Codes
Урок 164.00:05:57
Dynamically Refreshing the Image
Урок 165.00:04:28
Adding a Status Message
Урок 166.00:04:25
Displaying the Status Message
Урок 167.00:02:29
Removing the Unwanted Form
Урок 168.00:07:10
Method Based Security
Урок 169.00:06:07
Refactoring the Show Profile Code
Урок 170.00:05:11
Using Path Variables
Урок 171.00:04:10
Viewing Other Profiles
Урок 172.00:02:47
Getting Profile-Specific Photos
Урок 173.00:03:46
Using the User ID in the Profile
Урок 174.00:08:08
Defining an Interest
Урок 175.00:05:09
Interest Service and Dao
Урок 176.00:12:49
Many to Many
Урок 177.00:04:24
About Cascading and Ordering
Урок 178.00:05:16
Saving Interests
Урок 179.00:02:16
Merging and Copying
Урок 180.00:04:20
Modifying Classes for Testing
Урок 181.00:07:33
Creating a Profile Test Class
Урок 182.00:11:23
Implementing the Profile Interest Test
Урок 183.00:10:02
Fetch Types and Proxies
Урок 184.00:12:55
A REST Method for Saving Interests
Урок 185.00:06:24
A REST Method for Deleting Interests
Урок 186.00:07:15
Test Config for Testing Controller Methods
Урок 187.00:03:22
Mocking Users
Урок 188.00:09:14
Mocking a Post Request
Урок 189.00:09:58
Finishing the REST Tests
Урок 190.00:09:12
Javascript Tagging Libraries
Урок 191.00:10:01
Including CSS and Javascript for Tagging
Урок 192.00:05:36
Invoking the Tagging Library
Урок 193.00:04:47
Inspecting Generated HTML
Урок 194.00:07:09
Styling Interest Tags
Урок 195.00:06:35
Configuring Tagging
Урок 196.00:10:18
Dealing with CSRF in Javascript
Урок 197.00:06:35
Setting POST Headers
Урок 198.00:04:45
Implementing the Ajax Post
Урок 199.00:06:27
Outputting the Interest List
Урок 200.00:06:15
Removing Autocomplete Text
Урок 201.00:07:55
Making Profiles Read Only
Урок 202.00:04:00
About Searching
Урок 203.00:05:19
Adding a Search Box
Урок 204.00:06:23
Styling the Search Box
Урок 205.00:08:03
A Search Controller
Урок 206.00:13:26
Collecting Names
Урок 207.00:10:35
Fixing Tests
Урок 208.00:02:44
Mocking Data
Урок 209.00:11:06
Test Data
Урок 210.00:04:14
Creating a Stream
Урок 211.00:14:14
Stream Operations
Урок 212.00:18:42
Mock Users
Урок 213.00:06:14
Saving the Test Data
Урок 214.00:09:29
Performing the Search
Урок 215.00:06:35
About Data Leakage and Layers
Урок 216.00:03:52
Reorganising the Model Packages
Урок 217.00:06:39
The SearchResult DTO
Урок 218.00:05:08
Stream Mapping
Урок 219.00:07:34
The List of Results
Урок 220.00:03:22
Formatting the Results Page
Урок 221.00:05:25
Adding Photos
Урок 222.00:13:00
Rearranging the Results
Урок 223.00:03:05
Linking to Profiles
Урок 224.00:04:44
Adding a Register Prompt
Урок 225.00:07:16
CSS for the Results
Урок 226.00:05:05
Clickable Interests
Урок 227.00:06:31
Improving Searching
Урок 228.00:06:07
More About Paging
Урок 229.00:07:19
Checking Paging Functionality
Урок 230.00:12:14
Using the Debugger
Урок 231.00:04:57
Adding a Page Number Parameter
Урок 232.00:08:07
Implementing Basic Paging
Урок 233.00:06:11
Testing Out Basic Paging
Урок 234.00:10:21
Converting from Lists to Pages
Урок 235.00:09:37
Adding the Pagination Tag
Урок 236.00:09:39
Tweaking the Pagination Tag
Урок 237.00:04:45
Sending Search Data to the Results Page
Урок 238.00:05:50
Using the JSTL Contains Function
Урок 239.00:06:06
Applying the Final Pagination Fix
Урок 240.00:05:20
Adjusting Page Numbers and Results
Урок 241.00:07:57
Working Sets and Filters
Урок 242.00:06:27
Some Simple Package Upgrades
Урок 243.00:08:43
Using the New Crudrepository Methods
Урок 244.00:06:50
Upgrading Test Annotations
Урок 245.00:06:50
Configuring Servers in Spring Boot 2
Урок 246.00:05:53
Upgrading PageRequests
Урок 247.00:12:55
Using a Test Database
Урок 248.00:05:39
Running the Tests
Урок 249.00:06:09
Making the Tests Rerunnable
Урок 250.00:06:44
Fixing Image Upload Bugs
Урок 251.00:04:21
Fixing Search Results Bug
Урок 252.00:08:01
Introducing Websockets
Урок 253.00:06:32
Webjars
Урок 254.00:01:27
Checking Webjars Javascript
Урок 255.00:13:37
Websocket Configuration
Урок 256.00:09:21
Getting the CSRF Token
Урок 257.00:09:08
Establishing a Web Socket Connection
Урок 258.00:07:43
A Chatview Page
Урок 259.00:06:52
Adding Chatview Script
Урок 260.00:07:29
Completing the Chat Form
Урок 261.00:04:36
Responding to Clicks and the Enter Key
Урок 262.00:09:22
Getting the Logged In User ID
Урок 263.00:10:35
Getting the Chat User Details
Урок 264.00:05:11
A SimpleMessage Class
Урок 265.00:03:34
Message Handling Controller Method
Урок 266.00:12:02
Message Sending Additional Code
Урок 267.00:07:28
Sending the Message
Урок 268.00:11:43
Sending the Message Back to the User
Урок 269.00:11:31
Receiving Messages
Урок 270.00:13:00
A Javascript Connection Manager Class
Урок 271.00:10:56
The Subscription Array
Урок 272.00:12:35
Getting the ConnectionManager Working
Урок 273.00:10:08
Transferring Code to ConnectionManager
Урок 274.00:05:52
A Custom User Details Class
Урок 275.00:09:26
Adding the Profile Name
Урок 276.00:05:44
Working with Profiles
Урок 277.00:07:20
Adding a Chat Icon
Урок 278.00:08:30
About Queues
Урок 279.00:06:00
Sending and Receiving
Урок 280.00:04:55
Displaying Formatted Messages
Урок 281.00:02:22
Styling Messages
Урок 282.00:06:20
Differentiating Replies from Sent Messages
Урок 283.00:06:56
A Message Class
Урок 284.00:06:18
Message Service and Repository
Урок 285.00:07:33
FetchConversation Controller Method
Урок 286.00:08:12
FetchConversation Message Service Method
Урок 287.00:08:55
Querying the Conversation Messages
Урок 288.00:08:16
Retrieving the Conversation
Урок 289.00:05:21
Using Javascript to Retrieve the Conversation
Урок 290.00:06:46
Posting the Conversation Request
Урок 291.00:05:25
Displaying Past Messages
Урок 292.00:08:05
Ordering Messages
Урок 293.00:06:41
Retrieving Previous Message Pages
Урок 294.00:05:44
Adding Previous Messages
Урок 295.00:11:40
Sizing the Chat Window
Урок 296.00:05:44
Sending a Message Notification
Урок 297.00:08:18
Browser Notifications
Урок 298.00:02:21
Making Notifications Clickable
Урок 299.00:03:53
Adding a Messages Page
Урок 300.00:07:53
Retrieving the Message List
Урок 301.00:05:44
Displaying the Message List
Урок 302.00:06:11
Formatting Messages
Урок 303.00:04:42
Getting the Message ID
Урок 304.00:07:20
Marking Messages as Read
Урок 305.00:07:31
Some notes on deployment
Урок 306.00:01:47
Conclusion