This course will get you on your way to building robust web applications leveraging the Java Enterprise platform.  In addition to syntax and the “nuts and bolts” of how to build web applications, we present the important concept of the separation of programmatic and declarative development, i.e., use of configuration and context information in lieu of hard-coded values, resource locations and so on to make the web application as portable and easy to administer as possible.

Course Duration: 5 Days
Prerequisites:

Students should complete an introductory Java class or have at least three months of Java programming experience before taking this course.

Course Objectives:
  • Recognize what technologies are available in JEE
  • Demonstrate understanding of web application file and packaging structure
  • Understand and appreciate the role of Java Servlets in the overall Java Enterprise Edition architecture
  • Use request and response objects provided to a servlet to read parameters and to produce an HTML response
  • Develop interactive web applications using HTML forms and servlets
  • Manage complex conversations with HTTP clients using session attributes
  • Diagram and explain  the differences in MVC and MVVM
  • Create a RESTful web service in Java using JAX-RS
Course Outline:
  • JEE Overview
    • JEE Technologies
    • HTTP Overview
      • Requests (GET/POST)
      • Responses
      • URLs
      • Resource Mappings
      • Request Parameters
    • Web Applications
      • Structure
      • WAR File
      • Context Root
      • Deployment
  • Servlet Basics
    • Overview and API
      • Static versus Dynamic Content
      • Servlets
        • Role in a Web App
        • Servlet Interface
        • GenericServlet Class
        • HttpServlet Class
      • Mapping a URL to a Servlet Class
      • Web Container
    • Requests and Responses
      • HttpServletRequest
        • Reading HTTP Request Headers
        • HTML Forms
        • Reading HTTP Request Parameters
      • HttpServletResponse
        • Setting HTTP Response Headers
      • Monitoring Requests and Responses
  • CDI and JPA
    • CDI fundamentals
      • RequestContext
      • Events
      • Annotation literals
    • JPA
      • CRUD
      • Listeners
      • Validating entities
  • Microservices
    • Core concepts
    • Service components and Granularity
    • Bounded Context
    • Data Exchange
    • Testing
  • JEE and JSON
    • Purpose of JSON
    • JSON Syntax
    • Data Types
    • JSON Objects
    • JSON Arrays
    • Parsing JSON
    • JSON Processing in JEE
    • JSON binding in JEE
  • JavaScript ES6 and TypeScript
    • Variables, data types, template strings
    • Functions and arguments, rest, and spread
    • Destructuring assignments
    • Closures and arrow functions
    • Prototypes
    • Classes
    • Promises, async and await
    • Modules
    • Strongly typed variables and parameters
    • Interfaces
    • Typescript classes
    • Decorators
  • Angular and Components
    • Node Package Manager
    • Angular CLI and project structure
    • Angular Modules and TypeScript Modules
    • Components, templates, and bootstrapping
  • Data and Event Binding
    • String interpolation
    • Property binding
    • Two-way data binding using ngModel
    • Event binding
  • Directives
    • Structural directives: ngFor, ngSwitch, and ngIf
    • Attribute directives: ngStyle, ngClass, and ngModel
    • Custom directives
    • Manipulating the DOM
  • Components
    • Custom property binding: @Input
    • Event emitters: @Output
    • Lifecycle methods: onInIt, onChange, onDestroy
  • Pipes
    • What is a pipe?
    • Using pipes to format information
    • Default/built-in pipes
    • Defining custom pipes
  • Service and Dependency Injection
    • Dependency injection basics
    • What is a service?
    • @Injectable
    • Create a basic service
    • Service injection
  • Unit Tests
    • Testing paradigms
    • Jasmine unit tests and Karma
  • HTTP Requests
    • Basic GET, POST, PUT, DELETE request overview
    • Wrapping HTTP calls into services
    • Using promises to implement HTTP calls
    • Mocking HTTP for unit tests
  • Routing and Navigation
    • RouterModules and routes
    • Default routes
    • Router directives: RouterOutlet, RouterLink, and RouterLinkActive
    • Wildcard routes
    • Redirecting routes
  • Template-Driven forms
    • Preventing default with form submission
    • Field data validation
    • Binding to object variables
    • Data immutability and management
    • Protractor and E2E tests