Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Learn the Java Spring Framework: Create a Social Network with Spring Boot
Creating a Basic Web App
Introduction to the course
Prerequisites
Installing Software
Creating a Maven Spring Boot Project
A Basic Web App
Template Engines
Adding a JSP
Generating a Project Without Eclipse
Packaging with Maven
Building with Eclipse
Executable Wars
Deploying to Existing Tomcat
Multiple Pages and Controllers
Composing Pages with Apache Tiles
Setting up Apache Tiles
Creating Tiles Definitions
Adding and Extending Tiles Definition
Bootstrap and Static Resources
Static Resources - Bootstrap
Adding a Bootstrap Navbar
Styling the Navbar
Setting the Context Root
The Bootstrap Grid
Bootstrap Panels
Adding a HTML Form
Using Data: Hibernate and JPA
JUnit
MySQL Databases
Creating a MySQL User
Connecting to MySQL
Creating a Domain Object
Using JPA
Using CrudRepository
Retrieving the Most Recent Status Object
Spring Forms and Displaying Data
Adding a Service Layer
Model and View
Spring Form Tags
Displaying Data
Formatting Dates
How Forms Work
JSPs, Objects and Classes
Model Attributes
Refreshing and Updating
Form Validation
Validating Forms
Customising Validation Messages
Pagination
About Paging
Getting URL Parameters
Getting Pages of Results
Outputting Pages
Formatting the Status Updates
Outputting Page Numbers
Custom Tags
Cycling Through Page Blocks
Displaying Page Number Blocks
Fixing the Block Hyperlinks and Separator
Jumping to the First Page of Blocks
Improving the App: Dropdowns, WYSIWYG and Other Stuff
What If There Is Only One Page
Redirecting
Editing the Home Page
Javascript Visual Editors
Dropdown Menus
Editing and Deleting Data
Adding Edit and Delete Links
Deleting Status Updates
Displaying Statuses for Editing
Saving Edits
Spring Security: Logging in Users
Adding Spring Security
Conditional Formatting
Additional Security Rules
Adding a Login Form
Authentication
Login Error Messages
Logging Out
The Security Taglib
User Registration
The User Domain Object
The User Service
The User Service
Configuring the User Service
Registration Forms
Making Registration Work
Password Encryption
Using Roles
Restricting Urls on Roles
Validation
Validating the Email Address
Validating the Password
Adding Custom Validation
Custom Validaton Annotation
Adding the Password Match Constraint
Email Verification
Fake Smtp Test Services
Configuring a Mail Sender
Creating a Mail Service
Testing Mail Sending
Sending as HTML
Creating a Verify Email Page
Adding Thymeleaf Support
Creating a Thymeleaf Template
Configuring Thymeleaf
Rendering the Thymeleaf Template
[Obsolete -- will be removed soon; please skip this video] Creating a Velocity Template
[Obsolete -- will be removed soon; please skip this video] Rendering Velocity Templates
Token Validation
Disabling Users
Storing Verification Tokens
Updating a User
A VerificationDao
Token User Service Methods
Creating a Message page
Invalid User and Expired Token Pages
Creating the Verification Link
[Obsolete -- will be removed soon. Please skip this video] Creating the Verfication Link
Implementing Verification
Deleting Used Tokens
Asynchronous Methods
Handling Errors
Tightening the Security Rules
Handling 403 Errors in Spring 2
Handling 403 Forbidden
Adding an Access Denied Page
Handling Exceptions
Creating an Error Page
Handling Duplicate Users
User Profiles
Adding a Profile Link
Retrieving the Logged in Username
Creating a Profile Domain Object
Adding a Profile Page
Adding Profile Text
Styling the Profile
The Profile DAO
The Profile Service
Ensuring Privacy in Domain Objects
Getting the Current User
Creating Profiles
Displaying Profile Text
The Edit About JSP
Viewing the Edit About Page
Updating Profile About Text
Validating the Profile
Adding a Policy Factory
Sanitising the HTML
Uploading Photos
About Uploading Files
Creating an Upload Form
The Upload Directory
File Upload Code
Handling Errors
Getting File Extensions
Checking Extensions
Testing Private Methods with Reflection
Testing isImageExtension
Creating a Random Subdirectory
Testing Directory Creation
Defining an Exception
Creating an Image Save Method
Uploading Photos
Transferring File Information
Getting File Information
Storing File Information
Locating the Default Avatar
Return the Full Photo Path
Serving the Photo
Using the Photo
Deleting Old Photos
Ensuring Name Uniqueness
Structuring the Resize Code
Resizing the Profile Photo
Improving File Upload with Javascript
Translating Upload Status
Returning Data from a Method
Running Javascript
Invoking the File Chooser
Submitting the Form Automatically
Intercepting Form Submission
Uploading Data with Javascript
Returning Http Status Codes
Dynamically Refreshing the Image
Adding a Status Message
Displaying the Status Message
Removing the Unwanted Form
Method Based Security
Viewing Other Profiles
Refactoring the Show Profile Code
Using Path Variables
Viewing Other Profiles
Getting Profile-Specific Photos
Using the User ID in the Profile
Attaching Tags to Profiles
Defining an Interest
Interest Service and Dao
Many to Many
About Cascading and Ordering
Saving Interests
Merging and Copying
Modifying Classes for Testing
Creating a Profile Test Class
Implementing the Profile Interest Test
Fetch Types and Proxies
A REST Method for Saving Interests
A REST Method for Deleting Interests
Test Config for Testing Controller Methods
Mocking Users
Mocking a Post Request
Finishing the REST Tests
Javascript Tagging Libraries
Including CSS and Javascript for Tagging
Invoking the Tagging Library
Inspecting Generated HTML
Styling Interest Tags
Configuring Tagging
Dealing with CSRF in Javascript
Setting POST Headers
Implementing the Ajax Post
Outputting the Interest List
Removing Autocomplete Text
Making Profiles Read Only
Searching
About Searching
Adding a Search Box
Styling the Search Box
A Search Controller
Collecting Names
Fixing Tests
Mocking Data
Test Data
Creating a Stream
Stream Operations
Mock Users
Saving the Test Data
Performing the Search
About Data Leakage and Layers
Reorganising the Model Packages
The SearchResult DTO
Stream Mapping
The List of Results
Formatting the Results Page
Adding Photos
Rearranging the Results
Linking to Profiles
Adding a Register Prompt
CSS for the Results
Clickable Interests
Improving Searching
More About Paging
Checking Paging Functionality
Using the Debugger
Adding a Page Number Parameter
Implementing Basic Paging
Testing Out Basic Paging
Converting from Lists to Pages
Adding the Pagination Tag
Tweaking the Pagination Tag
Sending Search Data to the Results Page
Using the JSTL Contains Function
Applying the Final Pagination Fix
Adjusting Page Numbers and Results
Upgrading Spring Boot
Working Sets and Filters
Some Simple Package Upgrades
Using the New Crudrepository Methods
Upgrading Test Annotations
Configuring Servers in Spring Boot 2
Upgrading PageRequests
Using a Test Database
Running the Tests
New Lecture
Making the Tests Rerunnable
Fixing Image Upload Bugs
Fixing Search Results Bug
Messaging with Websockets and STOMP
Introducing Websockets
Webjars
Checking Webjars Javascript
Websocket Configuration
Getting the CSRF Token
Establishing a Web Socket Connection
A Chatview Page
Adding Chatview Script
Completing the Chat Form
Responding to Clicks and the Enter Key
Getting the Logged In User ID
Getting the Chat User Details
A SimpleMessage Class
Message Handling Controller Method
Message Sending Additional Code
Sending the Message
Sending the Message Back to the User
Receiving Messages
A Javascript Connection Manager Class
The Subscription Array
Getting the ConnectionManager Working
Transferring Code to ConnectionManager
A Custom User Details Class
Adding the Profile Name
Working with Profiles
Adding a Chat Icon
About Queues
Sending and Receiving
Displaying Formatted Messages
Styling Messages
Differentiating Replies from Sent Messages
A Message Class
Message Service and Repository
FetchConversation Controller Method
FetchConversation Message Service Method
Querying the Conversation Messages
Retrieving the Conversation
Using Javascript to Retrieve the Conversation
Posting the Conversation Request
Displaying Past Messages
Ordering Messages
Retrieving Previous Message Pages
Adding Previous Messages
Sizing the Chat Window
Sending a Message Notification
Browser Notifications
Making Notifications Clickable
Adding a Messages Page
Retrieving the Message List
Displaying the Message List
Formatting Messages
Getting the Message ID
Marking Messages as Read
Appendix
Source Code
Upgrading from SpringBoot 1 to 2
Deployment
Conclusion
Handling 403 Forbidden
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock