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
  •  Advanced Servlets
    •  Servlet Lifecycle
      •  Overview
      •  Instantiation
      •  Initialization
        •  init(ServletConfig) Method
        •  init() Method
        •  Lazy Initialization
      •  Service
        •  Service() Method
        •  Relationship of service() to doGet()/doPost()
      •  Destruction
        •  Destroy() <ethod
    •  Servlet Configuration
      •  ServletConfig Interface
      •  Reading Initialization Parameters
    •  Deployment Descriptors
      •  Web.xml
        •  <servlet> Element
        •  <servlet-mapping> Element
        •  <welcome-file-list> Element
      •  Vendor-web.xml
    •  Servlet Threading
      •  Servlets are Singletons
      •  Servlets are Multithreaded
      •  Synchronization Techniques
  •  Session Tracking
    •  HttpSession
      •  Need for Sessions
      •  HttpSession Class
      •  Accessing the Session
      •  Session Invalidation
      •  Session Timeout
    •  Cookies
      •  Overview
      •  Cookie Class
      •  Cookie Expiration
      •  Sending Cookies to the Client
      •  Retrieving Cookies from the Client
      •  JSESSIONID
    •  URL Rewriting
      •  Overview and Need for URL Rewriting
      •  URL Rewriting and HttpSession
    •  Scopes
      •  Request Scope – ServletRequest Class
      •  Session Scope – HttpSession Class
      •  Application Scope – ServletContext Class
      •  API for Using the Scopes
  •  Model-View-View-Model (MVVM) and Model-View-Controller (MVC)
    •  Interactions
    •  Model, View, Controller
  •  Advantages of MVC
    •  MVVM Overview
      •  ViewModel vs Controller
    •  Leveraging both patterns
  •  Introduction to RESTful Services
    •  SOA fundamentals
      •  JAX-WS vs JAX-RS
      •  REST Features
      •  REST Principles
    •  Defining resources and sub-resources
    •  Consuming data
    •  Using Application and ApplicationPath
    •  Resource locators
  •  Introduction to JAX-RS
    • APIs and Implementations
    •  JAX-RS Overview, Annotations
    •  JAX-RS Implementations
  •  Runtime Environment
    • Application Server, Servlet-Only Container
    •  Architectural and Implementation Perspectives
    •  Configuring the Application
  • Applications, Resources and Providers
    •  JAX-RS Applications
    •  Resource Classes and @Path
    •  Provider Classes and @Provider
    •  Default Lifecycles
    •  The Application Class and rest-path