TechWriterDev
  • Cloud
    • AWS
      • 00_Doubts
      • CloudPractitioner
        • Cloud Computing
        • AWS Global Infrastructure
        • Introduction to AWS EC2
        • Elastic load balancer(ELB)
        • 04_Messaging_Queuing
        • Aditional Computing Service
        • Accessing AWS resources
        • AWS Networking
        • Storage
        • Amazon Database Solutions
        • Monitoring Tools
        • AWS Security
        • Distributed Denial Of Service Attacks
      • DeveloperAssociate
        • References
        • AWS DVA-C02 Services Index
        • Services
          • 00_IAM
            • Identity and Access Management (IAM)
            • Account Protection Mechanisms
            • Access Mechanism of AWS Resources
            • Security Tools
            • Responsibility Model
            • Advanced Concepts
          • 01_EC2
            • Elastic Compute Cloud (EC2)
            • EC2 Volume Types
            • Amazon Machine Image (AMI)
            • AWS charges for IPv4 address
          • 02_SecurityGroups
            • Security Groups
          • 03_Elastic_LoadBalancing
            • Terminology
            • Elastic load balancer
            • Features
            • Basics
          • 04_AutoScaling
            • Auto Scaling
          • 05_RDS
            • Relational Database Service (RDS)
            • Aurora
            • Security
            • RDS Proxy
          • 06_ElastiCache
            • Cache
            • Cache Offerings
          • 07_Route53
            • Basics of DNS
            • Route 53
          • 08_VPC
            • Virtual Private Cloud (VPC)
          • 09_S3
            • Simple Storage Service (S3)
            • S3 Features
            • S3 Encryption
            • S3 Features
            • S3 Bucket Policy and IAM Policy
          • 10_ECS
            • Elastic Container Service (ECS)
            • Elastic Container Registry (ECR)
            • AWS Copilot
          • 11_EKS
            • Elastic Kubernetes Service (EKS)
          • 12_SDK_CLI_Tips
            • Access AWS Resources
          • 13_CloudFront
            • Cloud Front
          • 14_Messaging
            • Simple Queue Service (SQS)
            • Simple Notification Service (SNS)
            • Fan Out Pattern
            • Kinesis
            • Compare and Contrast
          • 15_ElasticBeanStalk
            • Elastic Beanstalk
          • 16_CloudFormation
            • CloudFormation
            • Dynamic References
          • 17_Monitoring
            • AWS Monitoring
            • AWS CloudWatch
            • CloudWatch Alarms
            • Synthetics Canary
            • Amazon EventBridge (formerly CloudWatch Events)
            • X-Ray
            • OpenTelemetry
            • CloudTrail
          • 18_Lambda
            • Lambda
            • Lambda Integrations
            • Configuring Lambda
            • Lambda Layers
          • 19_API_Gateway
            • API Gateway
            • API Gateway Integrations
          • 20_DynamoDB
            • DynamoDB
            • Operations
            • Indexes
            • DynamoDB Accelerator (DAX)
            • DynamoDB Streams
            • Transactions
            • Integrations
          • 21_CICD
            • CICD
            • CodeCommit
            • CodePipeline
            • CodeBuild
            • CodeDeploy
            • CodeArtifact
            • CloudGuru
          • 22_SAM
            • Serverless Application Model (SAM)
          • 23_CDK
            • Cloud Development Kit (CDK)
          • 24_StepFunctions
            • Step Functions
            • Types of step function
          • 25_AppSync
            • AppSync
          • 26_Amplify
            • Amplify
          • 27_STS
            • Security Token Service (STS)
          • 28_DirectoryService
            • Active Directory
          • 29_KMS
            • Encryption
            • KMS API
            • Features
            • Cloud Hardware Security Module (HSM)
          • 30_SSM_Store
            • SSM Parameter Store
          • 31_SecretsManager
            • Secrets Manager
          • 32_Cognito
            • Cognito
      • Questions
        • AWS_Region
        • EC2
        • IAM
  • Database
    • MongoDb
      • Mongo db Basics
      • Mongo DB Atlas
      • Document
      • Import-Export based on Data Format
      • Mongo Shell Commands
      • Query Operators
      • Indexes
      • Upsert
      • MongoDB Aggregation Framework
      • Aggregation Framework Operators
    • PostgreSQL
      • POSTGRE SQL DataTypes
      • About table
      • Constraints
  • Technologies
    • RabbitMQ
      • RabbitMQ Concepts
      • Introduction to Exchanges
      • Introduction to Queues
    • Terraform
      • 00_Introduction
      • Configuration blocks
      • Commands
      • Variables
      • Terraform Cloud
      • Modules
  • Languages
    • Java
      • Logging
        • Getting Started
      • 00_Core
        • 00_Basics
          • Java Vs C++
          • Object oriented principles
          • Steps to compile a java program
          • JVM Internals
          • Understanding Java Development Kit
          • What is JIT Compiler?
          • Java data types
          • 07_identifiers_type_conversion
          • 08_references_and_packages
          • Steps for attaching scanner
        • Concurrency
          • 00_Threads
            • Threads
          • 01_ExecutorFramework
            • Executor Framework
            • Asynchronous Computation
      • 01_Backend
        • 01_HttpAndWebServerBasics
          • HTTP
          • Content Type
          • Web Server
        • 02_J2EE_Basics
          • J2EE_Basics
          • Why HttpServlet classs is declared as abstract class BUT with 100 % concrete functionality ?
        • 03_TomCatAndSession
          • What is a Session?
          • WebContainer
        • 04_PageNavigation
          • Cookies Additional Information
          • Page Navigation Techniques
        • 05_AboutServlet
          • CGI v/s Servlet
          • Executor Framework
          • Servlet Life cycle
          • SERVLET CONFIG
          • Servlet Context
          • Servlet Listener (web application listener)
        • 08_SpringBoot
          • Spring Boot
          • Some common annotations used in spring eco system
        • 09_SpringDataJPA
          • Spring Data JPA
        • Java_Language_Changes
          • JDK enhancement tracking reference
        • 06_ORM_Hibernate
          • readmes
            • Hibernate
            • Advantages of Hibernate
            • Hibernate Caching
            • Hibernate API
            • Hibernate Query API
            • Hibernate Annotations and JPQL
            • Entity and Value Type
        • 07_SpringFramework
          • bean_validation
            • Bean Validation
          • core
            • readme
              • Spring
              • Spring Framework Modules
              • Spring MVC Request flow
              • Dependency Injection
              • Spring Beans
              • 06_Spring_Framework_Annotations
      • 03_Tools
        • Maven
          • Maven
  • SoftwareEngineering
    • DesignPatterns
      • Notes
        • Basics
        • OOP
        • SOLID Principles
        • 03_Creational
          • Abstract Factory (aka Kit)
          • Builder
          • Factory Method (aka Virtual constructor)
          • Prototype
          • Singleton
        • 04_Structural
          • Adapter (aka Wrapper)
          • Bridge (aka Handle | Body)
          • Composite
          • Decorator (aka Wrapper)
          • Facade
          • Flyweight
          • Proxy (aka Surrogate)
        • 05_Behavioral
          • Chain of Responsibility
          • Command (aka Action | Transaction)
          • Iterator (aka Cursor)
          • Observer (aka Publish-Subscribe | Dependents)
          • Strategy (aka Policy)
    • Principles
      • REST
        • REST
  • Tools
    • Containers
      • Docker
        • Docker
        • Docker Image
        • Commands
        • Compose
        • Best Practices
      • Kubernetes
        • Kubernetes
    • VCS
      • Git
        • Quick reference of useful Git commands
Powered by GitBook
On this page
  • 2 Ways
  • 1. Client Pull
  • 2. Server Pull (Request Dispatching)
  • Forward v/s include
  1. Languages
  2. Java
  3. 01_Backend
  4. 04_PageNavigation

Page Navigation Techniques

2 Ways

1. Client Pull

  • 1.1 Client Pull

    • Taking the client to the next page in the NEXT request

      • User takes some action

        • eg : clicking on a button or link & then client browser generates new URL to take user to the next page.

  • 1.2 Redirect Scenario

    • User doesn't take any action. Client browser automatically generates new URL to take user to the next page. (next page can be from same web application, or different web application on same server or any web page on any server).

    • Here a temporary redirection happens, web container creates a response such that,

      • body: Empty (printwriter buffer emptied before redirection).

      • location header: Location of the next page.

      • status code: 302

      • Cookie header: name: ..., value...(If any)

    • Client browser on getting the 302 status code redirects the client to the location based on location header, on next request-response cycle. This newly created request by the client browser will have,

      • Cookie: name...,value...

      • method: GET (default http method) Note: URL on client browser URL bar will change as per location on the location header received in previous response.

    //API of HttpServletResponse
    public void sendRedirect(String redirectURL)

    //eg : For redirecting client from Servlet1('/s1') to Servlet2('/s2'), use
    //written ins /s1 servlet page
    response.sendRedirect("s2");

Note: If the response already has been committed(printwriter flushed or closed), this method throws(WC) an IllegalStateException.(since WC can't redirect the client after response is already committed).

Note: If session is not created before flushing or committing the response, then it throws IllegalStateException .

2. Server Pull (Request Dispatching)

  • Taking the client to the next page in the same request. Also known as resource chaining or request dispatching technique.

  • Client sends the request to the servlet/JSP. Same request can be chained to the next page for further servicing of the request.

  1. Forward Scenario

  • Steps

    • Create Request Dispatcher object for wrapping the next page resource, which can be static or dynamic.

        //API of ServletRequest
        javax.servlet.RequestDispatcher getRequestDispatcher(String path)
        //API of RequestDispatcher
        public void forward(ServletRequest rq,ServletResponse rs) throws ServletException, IOException, IllegalStateException 
    • This method allows one servlet to do initial processing of a request and another resource to generate the response. (i.e division of responsibility)

    • Uncommitted output in the response buffer is automatically cleared before the forward just like send redirect scenario.

    • If the response already has been committed (by flushing the print writer or closing), this method throws an IllegalStateException as client cannot be forwarded after commiting the response.

    • If a post request is received from the client to server, the forward() scenario will forward to the next resource and call the next resource's doPost() method. Like wise for other http methods.

    • Limitation

      • Only last page in the chain can generate dynamic response.

  1. Include scenario

  • Same as above, get a request dispatcher object from the request object and then on that call the include() method.

    // API of RequestDispatcher
    public void include(ServletRequest rq,ServletResponse rs) throws ServletException, IOException
  • Includes the content of a resource @run time (servlet, JSP page, HTML file) in the response. -- server-side includes.

  • If the response already has been committed (by flushing the print writer), the container doesn't need to clear the print writer buffer, rather when flush is called, the container just sends the reponse. It doesn't close the buffer and further responses get added to this buffer. Hence, no IllegalStateException is encountered.

  • If a post request is received from the client to server, the forward() scenario will forward to the next resource and call the next resource's doPost() method. Like wise for other http methods.

  • Limitation

    • The included servlet/JSP cannot change the response status code or set headers; any attempt to make these changes are ignored.

Forward v/s include

PreviousCookies Additional InformationNext05_AboutServlet

Last updated 4 months ago

RD-forward
include-scenario