Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
9 views19 pages

Servlet Chaining

Servlet chaining allows data from one Servlet to be made available to other resources such as HTML, JSP, or another Servlet. It can be achieved using RequestDispatcher for internal resource chaining or sendRedirect for external resource chaining, with the former maintaining the URL and the latter changing it. Cookies are also discussed as a mechanism for maintaining state across multiple client requests, with details on their creation, deletion, and usage in a login/logout example.

Uploaded by

Shakti Patole
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views19 pages

Servlet Chaining

Servlet chaining allows data from one Servlet to be made available to other resources such as HTML, JSP, or another Servlet. It can be achieved using RequestDispatcher for internal resource chaining or sendRedirect for external resource chaining, with the former maintaining the URL and the latter changing it. Cookies are also discussed as a mechanism for maintaining state across multiple client requests, with details on their creation, deletion, and usage in a login/logout example.

Uploaded by

Shakti Patole
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

SERVLET CHAINING

Definition: Chaining from one Servlet to another resource which can


either be Html, JSP or another Servlet is known as Servlet Chaining.

Need for Servlet Chaining: Servlet Chaining is needed to make the


data present in one Servlet available to other resources which can either
be a Html, JSP or another Servlet.


There are two different ways in which we can perform Servlet Chaining
namely:

a) RequestDispatcher
b) sendRedirect

a) RequestDispatcher

RequestDispatcher is an Interface present in javax.servlet package.


Since it is an Interface, an implementation object can be created by the
JEE Container by using a factory or helper method by name called
getRequestDispatcher( ) whenever a client makes any request to a

Servlet.

RequestDispatcher rd = req.getRequestDispatcher( );


We can get the reference of RequestDispatcher Interface in two different
ways namely:

i) request(req)

ii) context

Whenever we use req.getRequestDispatcher( ), then we can chain from
one Servlet to another resources of the same Application.


Whenever we use context.getRequestDispatcher( ), then we can chain
from one Servlet to another resources of different Application.


There are two different methods present in RequestDispatcher namely
forward( ) and include( )

+ void forward(ServletRequest req, ServletResponse resp)

+ void include(ServletRequest req, ServletResponse resp)



In case of forward( ), the request is forwarded from one Servlet to another
resources(Html, JSP, Servlet) and finally the chained resource gets back
the response.


In case of include( ), all the chained resources are included into main or
source Servlet and finally the main or source Servlet gets back the
response.
Note:

In case of forward( ) and include( ), the URL remains the same.

Hence, both forward( ) and include( ) works at the Server Side i.e.
RequestDispatcher works at the Server Side.
b) sendRedirect


sendRedirect is a method of HttpServletResponse Interface present
in javax.servlet.http package.

Using sendRedirect( ), we can chain to external resources also.

sendRedirect( ) can be used to chain to other resources where the
data are not involved.

Note:


In case of sendRedirect( ), the URL pattern changes which is displayed
on the Browser.

CODE FOR REQUEST DISPATCHER BY USING


ANNOTATION.
INDEX.HTML
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="Ad">
Enter the First number:<input type="text" name="num1"/><br/>
Enter the Second number:<input type="text" name="num2"/><br/>
<input type="submit" /><br/>
</form>

</body>
</html>

AddServlet.java

package com.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

@WebServlet("/Ad")

public class AddServlet extends HttpServlet {

protected void doGet(HttpServletRequest req, HttpServletResponse res)


throws ServletException, IOException {

int i = Integer.parseInt(req.getParameter("num1"));

int j = Integer.parseInt(req.getParameter("num2"));

int k = i + j;

req.setAttribute("k", k);

RequestDispatcher rd = req.getRequestDispatcher("/Sq");

rd.forward(req,res);
}

SqServlet.java

package com.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

@WebServlet("/Sq")

public class SqServlet extends HttpServlet {

protected void doGet(HttpServletRequest req, HttpServletResponse res)


throws IOException {

int k = (int)req.getAttribute("k");

k = k*k;

PrintWriter out = res.getWriter();

out.println("result = "+k);

CODE FOR sendRedirect USING ANNOTATION


Index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<form action="Ad">
Enter the First number:<input type="text" name="num1"/><br/>
Enter the Second number:<input type="text" name="num2"/><br/>
<input type="submit" /><br/>

</form>
</body>
</html>

AddServlet.java

package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/Ad")
public class AddServlet extends HttpServlet {
protected void doGet(HttpServletRequest req,
HttpServletResponse res) throws IOException {
int i = Integer.parseInt(req.getParameter("num1"));
int j = Integer.parseInt(req.getParameter("num2"));
int k = i + j;
res.sendRedirect("Sq?k="+k);
}
}
SqServlet.java
package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/Sq")
public class SqServlet extends HttpServlet {
protected void doGet(HttpServletRequest req,
HttpServletResponse res) throws IOException {
int k =Integer.parseInt(req.getParameter(“k”));
k = k*k;
PrintWriter out = res.getWriter();
out.println("result = "+k);
}
}

Cookies in Servlet
A cookie is a small piece of information that is persisted between the
multiple client requests.

A cookie has a name, a single value, and optional attributes such as a


comment, path and domain qualifiers, a maximum age, and a version
number.

How Cookie works?


By default, each request is considered as a new request. In
cookies technique, we add cookie with response from the
servlet. So cookie is stored in the cache of the browser. After
that if request is sent by the user, cookie is added with request
by default. Thus, we recognize the user as the old user.
Types of Cookie
There are 2 types of cookies in servlets.

1. Non-persistent cookie
2. Persistent cookie
Non-persistent cookie

It is valid for single session only. It is removed each time when user
closes the browser.

Persistent cookie
It is valid for multiple session . It is not removed each time when user closes the
browser. It is removed only if user logout or signout.

Advantage of Cookies
1. Simplest technique of maintaining the state.
2. Cookies are maintained at client side.

Disadvantage of Cookies
1. It will not work if cookie is disabled from the browser.
2. Only textual information can be set in Cookie object.

Cookie class
javax.servlet.http.Cookie class provides the functionality of using cookies. It provides a
lot of useful methods for cookies.

Constructor of Cookie class


Constructor Description

Cookie() constructs a cookie.

Cookie(String name, String value) constructs a cookie with a specified name and value.

For adding cookie or


adding cookie or getting the value from the cookie, we need some methods
provided by other interfaces. They are:

1. public void addCookie(Cookie ck):method of HttpServletResponse interface is used to


add cookie in response object.
2. public Cookie[] getCookies():method of HttpServletRequest interface is used to return
all the cookies from the browser

How to create Cookie?


Let's see the simple code to create cookie.

1. Cookie ck=new Cookie("user","vijayalaxmi");//creating cookie object


2. response.addCookie(ck);//adding cookie in the response

How to delete Cookie?


Let's see the simple code to delete cookie. It is mainly used to logout or signout the user.

1. Cookie ck=new Cookie("user","");//deleting value of cookie


2. ck.setMaxAge(0);//changing the maximum age to 0 seconds
3. response.addCookie(ck);//adding cookie in the response

How to get Cookies?


Let's see the simple code to get all the cookies.

1. Cookie ck[]=request.getCookies();
2. for(int i=0;i<ck.length;i++){
3. out.print("<br>"+ck[i].getName()+" "+ck[i].getValue());//printing name and value of cookie
4. }

Simple example of Servlet Cookies


In this example, we are storing the name of the user in the cookie object and
accessing it in another servlet. As we know well that session corresponds to the
particular user. So if you access it from too many browsers with different values,
you will get the different value.

index.html
1. <form action="servlet1" method="post">
2. Name:<input type="text" name="userName"/><br/>
3. <input type="submit" value="go"/>
4. </form>

FirstServlet.java
1. import java.io.*;
2. import javax.servlet.*;
3. import javax.servlet.http.*;
4.
5.
6. public class FirstServlet extends HttpServlet {
7.
8.

public void doPost(HttpServletRequest request, HttpServletResponse response){

9. try{
10.
11. response.setContentType("text/html");
12. PrintWriter out = response.getWriter();
13.
14. String n=request.getParameter("userName");
15. out.print("Welcome "+n);
16.
17. Cookie ck=new Cookie("uname",n);//creating cookie object
18. response.addCookie(ck);//adding cookie in the response
19.
20. //creating submit button
21. out.print("<form action='servlet2'>");
22. out.print("<input type='submit' value='go'>");
23. out.print("</form>");
24.
25. out.close();
26.
27. }catch(Exception e){System.out.println(e);}
28. }
29.}

SecondServlet.java
1. import java.io.*;
2. import javax.servlet.*;
3. import javax.servlet.http.*;
4.
5. public class SecondServlet extends HttpServlet {
6.
7. public void doPost(HttpServletRequest request, HttpServletResponse response){
8. try{
9.
10. response.setContentType("text/html");
11. PrintWriter out = response.getWriter();
12.
13. Cookie ck[]=request.getCookies();
14. out.print("Hello "+ck[0].getValue());
15.
16. out.close();
17.
18. }catch(Exception e){System.out.println(e);}
19. }
20.
21.
22.}

web.xml
1. <web-app>
2.
3. <servlet>
4. <servlet-name>s1</servlet-name>
5. <servlet-class>FirstServlet</servlet-class>
6. </servlet>
7.
8. <servlet-mapping>
9. <servlet-name>s1</servlet-name>
10.<url-pattern>/servlet1</url-pattern>
11.</servlet-mapping>
12.
13.<servlet>
14.<servlet-name>s2</servlet-name>
15.<servlet-class>SecondServlet</servlet-class>
16.</servlet>
17.
18.<servlet-mapping>
19.<servlet-name>s2</servlet-name>
20.<url-pattern>/servlet2</url-pattern>
21.</servlet-mapping>
22.
23.</web-app>

Servlet Login and Logout Example using


Cookies
A cookie is a kind of information that is stored at client side.

In the previous page, we learned a lot about cookie e.g. how to create cookie, how
to delete cookie, how to get cookie etc.

Here, we are going to create a login and logout example using servlet cookies.

In this example, we are creating 3 links: login, logout and profile. User can't go to
profile page until he/she is logged in. If user is logged out, he need to login again
to visit profile.

In this application, we have created following files.

1. index.html
2. link.html
3. login.html
4. LoginServlet.java
5. LogoutServlet.java
6. ProfileServlet.java
7. web.xml

1. <!DOCTYPE html>
2. <html>
3. <head>
4. <meta charset="ISO-8859-1">
5. <title>Servlet Login Example</title>
6. </head>
7. <body>
8.
9. <h1>Welcome to Login App by Cookie</h1>
10.<a href="login.html">Login</a>|
11.<a href="LogoutServlet">Logout</a>|
12.<a href="ProfileServlet">Profile</a>
13.
14.</body>
15.</html>

File: link.html

1. <a href="login.html">Login</a> |
2. <a href="LogoutServlet">Logout</a> |
3. <a href="ProfileServlet">Profile</a>
4. <hr>

File: login.html

1. <form action="LoginServlet" method="post">


2. Name:<input type="text" name="name"><br>
3. Password:<input type="password" name="password"><br>
4. <input type="submit" value="login">
5. </form>

File: LoginServlet.java

1. package com.javatpoint;
2.
3. import java.io.IOException;
4. import java.io.PrintWriter;
5. import javax.servlet.ServletException;
6. import javax.servlet.http.Cookie;
7. import javax.servlet.http.HttpServlet;
8. import javax.servlet.http.HttpServletRequest;
9. import javax.servlet.http.HttpServletResponse;
10.public class LoginServlet extends HttpServlet {
11.

protected void doPost(HttpServletRequest request, HttpServletResponse respon


se)
12. throws ServletException, IOException {
13. response.setContentType("text/html");
14. PrintWriter out=response.getWriter();
15.
16. request.getRequestDispatcher("link.html").include(request, response);
17.
18. String name=request.getParameter("name");
19. String password=request.getParameter("password");
20.
21. if(password.equals("admin123")){
22. out.print("You are successfully logged in!");
23. out.print("<br>Welcome, "+name);
24.
25. Cookie ck=new Cookie("name",name);
26. response.addCookie(ck);
27. }else{
28. out.print("sorry, username or password error!");
29. request.getRequestDispatcher("login.html").include(request, response);
30. }
31.
32. out.close();
33. }
34.
35.}

File: LogoutServlet.java

1. package com.javatpoint;
2.
3. import java.io.IOException;
4. import java.io.PrintWriter;
5. import javax.servlet.ServletException;
6. import javax.servlet.http.Cookie;
7. import javax.servlet.http.HttpServlet;
8. import javax.servlet.http.HttpServletRequest;
9. import javax.servlet.http.HttpServletResponse;
10.public class LogoutServlet extends HttpServlet {
11.

protected void doGet(HttpServletRequest request, HttpServletResponse respons


e)
12. throws ServletException, IOException {
13. response.setContentType("text/html");
14. PrintWriter out=response.getWriter();
15.
16.
17. request.getRequestDispatcher("link.html").include(request, response);
18.
19. Cookie ck=new Cookie("name","");
20. ck.setMaxAge(0);
21. response.addCookie(ck);
22.
23. out.print("you are successfully logged out!");
24. }
25.}

File: ProfileServlet.java

1. package com.javatpoint;
2.
3. import java.io.IOException;
4. import java.io.PrintWriter;
5. import javax.servlet.ServletException;
6. import javax.servlet.http.Cookie;
7. import javax.servlet.http.HttpServlet;
8. import javax.servlet.http.HttpServletRequest;
9. import javax.servlet.http.HttpServletResponse;
10.public class ProfileServlet extends HttpServlet {
11.

protected void doGet(HttpServletRequest request, HttpServletResponse respons


e)
12. throws ServletException, IOException {
13. response.setContentType("text/html");
14. PrintWriter out=response.getWriter();
15.
16. request.getRequestDispatcher("link.html").include(request, response);
17.
18. Cookie ck[]=request.getCookies();
19. if(ck!=null){
20. String name=ck[0].getValue();
21. if(!name.equals("")||name!=null){
22. out.print("<b>Welcome to Profile</b>");
23. out.print("<br>Welcome, "+name);
24. }
25. }else{
26. out.print("Please login first");
27. request.getRequestDispatcher("login.html").include(request, response);
28. }
29. out.close();
30. }
31.}

File: web.xml

1. <?xml version="1.0" encoding="UTF-8"?>


2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3.

xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.c
om/xml/ns/javaee
4. http://java.sun.com/xml/ns/javaee/web-
app_2_5.xsd" id="WebApp_ID" version="2.5">
5.
6. <servlet>
7. <description></description>
8. <display-name>LoginServlet</display-name>
9. <servlet-name>LoginServlet</servlet-name>
10. <servlet-class>com.javatpoint.LoginServlet</servlet-class>
11. </servlet>
12. <servlet-mapping>
13. <servlet-name>LoginServlet</servlet-name>
14. <url-pattern>/LoginServlet</url-pattern>
15. </servlet-mapping>
16. <servlet>
17. <description></description>
18. <display-name>ProfileServlet</display-name>
19. <servlet-name>ProfileServlet</servlet-name>
20. <servlet-class>com.javatpoint.ProfileServlet</servlet-class>
21. </servlet>
22. <servlet-mapping>
23. <servlet-name>ProfileServlet</servlet-name>
24. <url-pattern>/ProfileServlet</url-pattern>
25. </servlet-mapping>
26. <servlet>
27. <description></description>
28. <display-name>LogoutServlet</display-name>
29. <servlet-name>LogoutServlet</servlet-name>
30. <servlet-class>com.javatpoint.LogoutServlet</servlet-class>
31. </servlet>
32. <servlet-mapping>
33. <servlet-name>LogoutServlet</servlet-name>
34. <url-pattern>/LogoutServlet</url-pattern>
35. </servlet-mapping>
36.</web-app>

You might also like