Learning Path: Spring and Spring Boot Projects
4.3 (14 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
130 students enrolled
Wishlisted Wishlist

Please confirm that you want to add Learning Path: Spring and Spring Boot Projects to your Wishlist.

Add to Wishlist

Learning Path: Spring and Spring Boot Projects

Learn how to build powerful and engaging applications in Java using the Spring and Spring Boot framework.
4.3 (14 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
130 students enrolled
Created by Packt Publishing
Last updated 7/2017
Curiosity Sale
Current price: $10 Original price: $200 Discount: 95% off
30-Day Money-Back Guarantee
  • 7.5 hours on-demand video
  • 1 Supplemental Resource
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
What Will I Learn?
  • Developing end-to-end interactive web application forms, web pages, and CRUD functionality
  • Writing new Spring MVC controllers and views
  • Creating a login page and validation for user registration
  • Building complex UIs in the context of an example application
  • Building a Java application from scratch using Spring Initializr
  • Incorporating client-server networking features and functionality
  • Securing the application
View Curriculum
  • If you know Java and have a computer with an internet connection, then that’s all you need to get started!

Have you often felt that when you create complex and robust applications the focus usually drifts from the functionality to the infrastructure?

This is where Spring MVC and Spring Boot come to the rescue. They are lightweight frameworks that will help you develop flexible and robust stand-alone applications without much hassle.

This Learning Path is designed to introduce you to advantages of having frameworks, such as Spring MVC and Spring Boot, while developing apps.

A Video Learning Path from Packt essentially contains multiple video courses that are logically tied together to provide you with a larger learning curve.

Let’s dig into what this Learning Path does. It gets you started with creating, deploying, and running a Spring MVC project using Spring Tool Suite and then moves onto building a Spring Boot application. It will also show you how to integrate model and business services based on an example of an online e-commerce chocolate store!  

Once you have gained hands-on experience with Spring MVC, the course will introduce Spring Boot. Then move on to learn Spring Boot by scaffolding an application and understanding different aspects of it. In addition to that, you will also learn to secure applications against malicious behavior.

After completing the course, you will be able to successfully create stand-alone, Spring-based applications using Java that work on multiple platforms!

About the Authors:

For this Learning Path, Packt has brought the works of two authors who are working very closely with Java, Spring, and Spring Boot.  

Koushik Kothagal has over 12 years of professional experience working with various server-side technologies and developing web applications. He has worked extensively with Java, Spring, Oracle, and other enterprise technologies. He loves teaching, and when he’s not coding Java, he’s probably teaching it! In his spare time, he runs the tutorial website Java Brains which covers various enterprise Java technologies.

Greg L. Turnquist has developed software professionally since 1997. From 2002 to 2010, he was part of the senior software team that worked on Harris' $3.5 billion FAA telco program, architecting mission-critical enterprise apps while managing a software team. He provided after-hours support to a nation-wide telco system and is no stranger to midnight failures and software triages. In 2010, he joined the SpringSource division of VMware, which was spun off into Pivotal in 2013.

Who is the target audience?
  • If you are a Java application developer wanting to improve your skills of building applications using Spring and Spring Boot, then this Learning Path is for you.
Students Who Viewed This Course Also Viewed
Curriculum For This Course
63 Lectures
Building Web Applications with Spring MVC
28 Lectures 03:12:57

We need an IDE and an application server to run the code that we will develop as we learn.

Preview 04:21

We need to create a project to add code. After development, we need to be able to deploy and test our code.

Writing Our First Spring MVC Application

To build effective Spring MVC apps, we need business services that connect to the database. We'll use some built-in business services to help us get started.

Using the Startup Code

We need to understand the methods and logic in the model artifact that we'll use for the Spring MVC project. We will also need to link it to the model's application context.

Preview 07:21

We need to be able to access the methods of the model from the controller layer, make calls, and return results.

Calling the Model

We need to write a new Spring MVC controller to map to a required URL and redirect to a JSP path.

Writing a Controller

The chocolate store web application needs the functionality to have users register themselves. The model has methods to do this. We need to make this functionality available in the web application.

Preview 05:53

Currently, in the application, when the user enters their information and clicks on Save, they see a success message, but there is no way for them to check if the save operation did indeed work fine. You will create a profile view page that the user can access to view their profile, and a save command will be redirected to this profile page instead of a success message page.

Using Path Variables and Redirects

You have implemented a user registration input form that lets users enter their data. But right now, you do not check if the input is valid data. What if the user enters an invalid e-mail or does not fill in some of the fields? To make sure that the user enters appropriate data, you will need to validate it after you receive it in the controller and before you save it to the database.

Implementing Validation

Now that you have let the user create new profiles by using the Register page, and also to view their profile on the View page, next, you'll be providing them with the edit functionality.

Adding the Update Functionality

The Customer entity that you've used so far is what you'd call a "standalone" entity. You haven't really had to worry about relationships between entities so far. We'll now work with two entities that are related.

Preview 06:02

While we have made huge progress and have a web application on our hands that provides considerable functionality, it doesn't look very good. We will incorporate some styles, and better still, let users choose the styles or themes they want.

Implementing Themes

Currently, the chocolate store web application doesn't have a lot of options when it comes to languages. Everything is in English. If you'd like your application to be used by people across the globe, you'll need to provide support for multiple languages.

Implementing Internationalization

In our chocolate store application, there is no way for users to browse for products that are sold on the web store. You'll add a category list display on the home page, and on the category page, and you'll show the products that belong to that category.

Working with Model Objects

You'll be creating a search form that lets users search for products based on a couple of search criteria.

Understanding Data Binding

We will define a couple of search restrictions and validate the user input.

Writing Custom Validators

The Spring chocolate store application has functionality to let users browse for products. However, if for some reason, a request fails, we should be able to provide a good experience to the user. A response in case of an error message should be a well-designed error page, with a brief description of the error and a way for the user to either retry or navigate back to the home page.

Handling Exceptions

To enable purchases in the chocolate store application, you'll need to build the login functionality.

Implementing the Login Functionality

We currently do not have a way for a user of the chocolate store application to shop for products and place an order. In this tutorial, you will implement a shopping cart feature that lets the users do this.

Implementing the Shopping Cart Functionality

You've implemented a shopping cart in the session in the previous tutorial. The user can add items to the cart, but there is no way to view the contents. In this tutorial, you'll implement a cart URL that displays the cart contents, and you will also implement a "Place order" button that lets them order the contents of the cart.

Implementing the Ordering Functionality

The chocolate store application has a shopping cart functionality that's closely tied to the logged-in user. However, there's no way to stop an unauthenticated user from adding items to the cart and placing an order. In this video, you will write a SecurityInterceptor that allows only a logged-in user to access any functionality related to the shopping cart.

Writing Custom Interceptors

In this video, you will publish a URL that shows a list of products in the store, with the view generated not by a JSP but by a Freemarker FTL file.

Integrating with Freemarker

How can we add common elements to every page in our application? An easy way is to use a tiling framework such as Apache Tiles, which is what we will look at in this video.

Integrating with Apache Tiles

Let's say we have a requirement to render product information on our website in various different formats. Right now, you can enter the URL products/product/productid to view the product information in HTML. However, let's say we need to make this information available to the user in XML and JSON formats. What would be the best way to implement a feature like this?

Working with Multiple Content Types

RESTful web services have gained in popularity over the years. It is widely considered by many to be an excellent alternative to the older SOAP web services specification. You'll implement a RESTful API for the Spring Chocolate store application.

Understanding RESTful Web Services

In sections 2 and 3, we saw how to display the product catalog information to the user as HTML that they can read in their browsers. When publishing the same information as RESTful web services, there are a few different factors that you need to account for.

Implementing Your First REST Endpoint

In the previous tutorial, you wrote the category REST controller that lets clients get category information. We'll now see how to implement product information as well as place an order using Spring MVC's REST support.

Implementing CRUD APIs

The REST APIs do not have error handling yet. If there is any error, we get the tc Server error page as the response. For REST APIs, it is important that we provide non-HTML payloads as the response for both success and error scenarios.

Implementing Exception Handling and HATEOAS
Learning Spring Boot
35 Lectures 04:19:03

Building apps with Spring Boot is fast. But nothing can make things faster than having a website where you pick components off the menu and load a prebuilt app into your development environment.

Website Navigation

When constructing an app, our architecture can impact many decisions down the road. For a solid, front-to-back app, we need several components.

Picking Options for Our App

Many platforms in the past have suffered stagnation when you download and install them. Spring Boot solves this by delivering its stack of open source components as a managed collection of versioned components that you can easily update.

Unpacking and Importing the Bundled App into Our IDE

When we upload images, there is always extra data that need to be associated with them. What is the easiest, simplest way to declare that data and associate it with an image?

Preview 03:23

Declare a repository with a Java interface and extend it with a custom finder, writing zero code.

Creating a Repository Interface for the Image Domain Object

We need to find, store, and delete images on disk and in the database. These operations must be made available as web operations.

Creating a Service to Store Images

How do you display, upload, and delete images?

Creating a Spring MVC Controller to Handle Incoming Requests

Interacting with the RESTful image service using the command-line cURL

Handling Images with cURL

Create a web template to display a page of images.

Building a Web Template to Fetch Images

Apps often need static assets to flesh out the UI layer.

Including Basic CSS to Show Thumbnails

How do you pick a file and upload it to a backend website

Adding a Form to Upload an Image

How do you delete an image?

Adding a Delete Button for Each Image

How do you support paging as well as adjusting other backend settings?

Adding Page Navigation and Tuning File Upload Limits

When it's time to go to production, do you really have everything you need?

Touring the Management Endpoints

How do you figure out what Spring Boot automatically configured for you?

Exploring the Auto-configuration Report

How do you tabulate custom measurements?

Creating a Custom Metric

How to you check the health of custom things?

Creating a Custom Health Stat

How do you include custom information with your app, including Git commit details?

Creating Custom App Information

How can you speed up the cycle of updating and changing backend code and frontend templates?

Exploring Hot Swapping of Code and De-caching Templates

How do you code against unique cloud-based resources that are too hard to replicate locally?

Developing Remotely in a Target Environment with Your Local IDE

How do you use breakpoints and other debugging tools against an app deployed remotely?

Debugging a Remote App with DevTools

What if you want to release your app as a service to be launched when the system boots?

Turning Your App into an Executable Unix/Linux Service

What if you wanted a command-line way to manage your application?

Touring the Remote Shell

How do you create CRaSH commands to manage custom aspects of your app via ssh?

Creating Custom Commands

How do you enable a Spring Boot app to send and receive WebSocket messages?

Configuring WebSocket Support on the Server Side

How do you send WebSocket events from various parts of the app?

Defining Events for Image Creation and Deletion

How do you subscribe for WebSocket messages in the frontend?

Adding WebSocket and SockJS Modules to the Frontend

How do you respond to WebSocket events on a website?

Registering WebSocket Message Handlers

How do I lock down a website?

Securing Our Site with a Simple Policy

How do you put in a comprehensive set of users to test-drive the site?

Creating an In-memory Set of Users with Roles

How do you move from an in-memory set of users to a real one based on a database?

Adding User Data to the Domain Model

How do I link an image with the currently logged-in user who uploaded it?

Linking User Session with Image before Storing

How do I restrict access based on the URL?

Adding URL-based Security Controls

How do I write complex authorization rules such as "only the owner can delete an image"?

Applying Method-level Security Controls
About the Instructor
Packt Publishing
3.9 Average rating
7,282 Reviews
51,965 Students
616 Courses
Tech Knowledge in Motion

Packt has been committed to developer learning since 2004. A lot has changed in software since then - but Packt has remained responsive to these changes, continuing to look forward at the trends and tools defining the way we work and live. And how to put them to work.

With an extensive library of content - more than 4000 books and video courses -Packt's mission is to help developers stay relevant in a rapidly changing world. From new web frameworks and programming languages, to cutting edge data analytics, and DevOps, Packt takes software professionals in every field to what's important to them now.

From skills that will help you to develop and future proof your career to immediate solutions to every day tech challenges, Packt is a go-to resource to make you a better, smarter developer.

Packt Udemy courses continue this tradition, bringing you comprehensive yet concise video courses straight from the experts.