Spring web application tutorial (java blogs aggregator)

How to create a web application (Java Blogs Aggregator) from scratch. From nothing to an application up and running on a custom domain.

Spring web app tutorial 0: Java Blog Aggregator overview (00:02:31)
In this tutorial I will create a Java Blog Aggregator
Spring web app tutorial 1: Hello World Maven Java EE 6 (00:05:14)
How to create a Hello World Maven Java EE 6 web application in Eclipse and how to use Jetty plugin (Jetty is a web container like Apache Tomcat).
Spring web app tutorial 2: Setting GitHub & Eclipse (00:01:38)
How to create a GitHub repository and share your project to GitHub in Eclipse. How to commit and push changes to GitHub repository.
Spring web app tutorial 3: Spring Web MVC hello world (00:09)
Spring Web MVC basics explained, using Dispatcher Servlet and web.xml, how to scan Spring annotations and basic example of @Controller and @RequestMapping annotations.
Spring web app tutorial 4: Apache Tiles (00:11:10)
Apache Tiles & Framework Spring integration, Apache Tiles basics, how to use template, tiles definitions and attributes.
Spring web app tutorial 5: Twitter Bootstrap (00:06:10)
How to use Twitter Bootstrap to make our application pretty :-) I will use Twitter Bootstrap and JQuery from CDN (Content Delivery Network). Our web application will have responsive layout (useful for mobile devices).
Spring web app tutorial 6: Servlet and JSP API (00:01:36)
How to resolve error: The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path? If you use Maven, add to pom.xml Servlet and JSP API with scope provided.
Spring web app tutorial 7: Spring root context (00:03:05)
How to use Spring root context using ContextLoaderListener and configuration file applicationContext.xml. How to effectively use context:component-scan with context:exclude-filter.
Spring web app tutorial 8: persistence (00:12:01)
How to integrate Hibernate with Spring and Spring Data JPA using LocalContainerEntityManagerFactoryBean? I will use test HSQL test database (later will be used PostgreSQL).
Spring web app tutorial 9: JPA entities (00:12:22)
How to create Java entities with relationships (OneToMany, ManyToMany, ManyToOne). How to validate relationship using Eclipse JPA Diagram Editor.
Spring web app tutorial 10: Spring Data JPA basics (00:11:13)
How to create and use Spring Data JPA repositories. Also how to create a test database.
Spring web app tutorial 11: MVC (Model View Controller) (00:10:24)
How to use Spring Web MVC (Model View Controller) with Apache Tiles. How to use JSTL (Java Standard Tag Library) - c:forEach. Styling table using Twitter Bootstrap.
Spring web app tutorial 12: Apache Tiles dynamic menu (00:03:14)
How to create a dynamic menu using Apache Tiles and Twitter Bootstrap, how to use tilesx:useAttribute and how to use Expression Language ternary operator.
Spring web app tutorial 13: Path Variable (00:05:12)
How to use Path Variable in Spring Web MVC.
Spring web app tutorial 14: JSP Include Directive (00:01:38)
How to use JSP Include Directive to load JSP taglibs using single line of code.
Spring web app tutorial 15: Hibernate Lazy Initialization Exception (00:06:23)
How to resolve LazyInitializationException using OpenEntityManagerInViewFilter / OpenSessionInViewFilter.
Spring web app tutorial 16: Hibernate Transaction (00:05:04)
How to use Spring Transactional annotation to load entities in service layer instead of using Open Entity Manager In View Filter.
Spring web app tutorial 17: Spring Data JPA Paging and sorting (00:02:29)
How to use Spring Data JPA for paging, sorting and top-n processing? This will generate SQL "SELECT ... ORDER BY ... LIMIT ...".
Spring web app tutorial 18: JSP Form binding using Model Attribute (00:11:57)
How to bind JSP form to Java object using ModelAttribute annotation. The form will have responsive layout using Twitter Bootstrap. Receiving HTTP POST in Spring Web MVC.
Spring web app tutorial 19: Spring Security basics (00:05:33)
Spring Security basics, how to secure Spring web application URLs using Spring Security Filter. Spring Security XML configuration file.
Spring web app tutorial 20: Spring Security login page (00:05:23)
How to change default login page in Spring security. Creating JSP file with Twitter Bootstrap.
Spring web app tutorial 21: Spring Security Logout (00:01:28)
How to set custom logout URL in a Spring Security application.
Spring web app tutorial 22: Spring Security Expressions (00:01:29)
How to use Expression-Based Access Control in Spring Security. Example of hasRole expression.
Spring web app tutorial 23: Spring Security and JSP (00:03:12)
How to use Spring Security JSP taglib and tag security:authorize with isAuthenticated and hasRole expressions.
Spring web app tutorial 24: Spring Security and database (00:03:23)
How to read roles and users using JDBC User Service. Authorities by username query and users by username query.
Spring web app tutorial 25: Spring Security BCrypt (00:01:48)
How to encode password using BCrypt (best practice, contains salt and is best protection against brute-force attacks). Using BCryptPasswordEncoder.
Spring web app tutorial 26: registration form complete (00:04:44)
Complete registration form. Now we will be able to create a user with encrypted password (using bcrypt) and role ROLE_USER, which will be able to login using Spring Security.
Spring web app tutorial 27: Spring Web MVC redirect (00:02:41)
How to implement Post/Redirect/Get design pattern using Spring Web MVC. Best practice for form submit.
Spring web app tutorial 28: User account (00:04:29)
How to create a page with user account. How to retrieve currently logged in user name (using Principal object) in Spring Web MVC. Security is done using Spring security.
Spring web app tutorial 29: Twitter Bootstrap modal (00:08:22)
How to use Twitter Bootstrap modal dialog? Example of a modal dialog with form, which will create a new blog.
Spring web app tutorial 30: Twitter Bootstrap tabs (00:04:31)
Using Twitter Bootstrap tabs with JQuery.
Spring web app tutorial 31: JPA / Hibernate cascade (00:09:37)
How to cascade operations in JPA / Hibernate? Presented on cascade type remove. This will solve ConstraintViolationException.
Spring web app tutorial 32: Twitter Bootstrap dynamic modal (00:06:27)
How to create a dynamic modal dialog using Twitter Bootstrap, which will be used in a list. I will use JQuery to dynamically set link value inside modal window.
Spring web app tutorial 33: Spring Security PreAuthorize (00:07:48)
How to enable and use expressions with annotations in Spring Security. Specifically I will show you how to use PreAuthorize annotation.
Spring web app tutorial 34: utf-8 (00:01:59)
How to force UTF-8 so that forms work on Apache Tomcat. Using CharacterEncodingFilter from Spring framework.
Spring web app tutorial 35: Cross Site Scripting - XSS (00:03:22)
Example of Cross Site Scripting (XSS) and how to solve this problem using c out tag from JSTL.
Spring web app tutorial 36: Hibernate Validator (00:09:45)
How to validate input using Hibernate Validator (Bean Validation)? How to validate email, URL etc.
Spring web app tutorial 37: Refactoring (00:10:40)
Because our application grows more and more, some refactoring was needed. In this video I split single Spring MVC controller into multiple controllers.
Spring web app tutorial 38: JQuery Validation Plugin (00:10:46)
How to validate form on the client side using JQuery Validation Plugin (JavaScript).
Spring web app tutorial 39: Hibernate unique column (00:02:25)
How to set column unique using Hibernate (JPA). This will cause ConstraintViolationException trying to insert non-unique username.
Spring web app tutorial 40: Custom Validation Annotation (00:07:24)
How to create custom validation annotation with Hibernate Validator (Beans Validation) and Framework Spring. How to create a unique username validator.
Spring web app tutorial 41: JQuery Validation Plugin Remote (00:07:07)
How to use custom validation where business rules are defined on the server with JQuery Validation Plugin. Also how to customize messages used in JQuery Validation Plugin.
Spring web app tutorial 42: Generating JAXB classes (00:03:01)
How to generate JAXB classes in Eclipse. Generating JAXB classes from RSS XSD (XML Schema).
Spring web app tutorial 43: Unmarshalling XML file (00:08:09)
How to unmarshall XML file using JAXB. Unmarshalling RSS XML file.
Spring web app tutorial 44: JUnit Test Case (00:09:42)
How to create JUnit Test Case, add JUnit libraries to classpath with Maven and write tests.
Spring web app tutorial 45: Save items (00:06:04)
Saving items from RSS XML file to database.
Spring web app tutorial 46: CLOB (00:04:15)
How to set set column to CLOB (Character Large OBject) with Hibernate (JPA) using StringClobType.
Spring web app tutorial 47: Scheduling (00:03:27)
Scheduling using Spring framework with annotation @Scheduled.
Spring web app tutorial 48: Java blog aggregator homepage (00:05:58)
Creating Java blog aggregator homepage with items from database ordered by published date in descending order.
Spring web app tutorial 49: maven package (00:00:47)
How to create WAR file in Eclipse using Maven package.
Spring web app tutorial 50: Heroku (00:05:55)
How to upload your WAR file to Heroku and have your web. application up and running on your custom domain.
Spring web app tutorial 51: Spring Profiles and PostgreSQL DB (00:11:41)
How to use Spring Profiles to distinguish between development and production environment. How to use Heroku PostgreSQL database. This is the last video in "Java blog aggregator" series.
Spring web app tutorial extras: BOM dependency (00:03:08)
How to use Maven Spring Framework BOM dependency?
Spring web app tutorial extras: Redirect Attributes (00:03:46)
How to use Redirect Attributes in Spring Web MVC (which can contain Flash-scoped attributes).
Spring web app tutorial extras: apache tiles causes server error (00:01:47)
Some people reported that in step 4 of Spring web application tutorial they weren’t able to integrate tiles, because of this error: Server error, caused by javax.servlet.ServletException: Could not resolve view with name 'index' in servlet with name 'dispatcher'.