Servlets Tuts

Introduction

RequestDispatcher

RequestDispatcher is an interface in Java Servlet API that allows request forwarding or including the content of another resource (like another servlet, JSP, or HTML) into the response.

Method Description
forward(ServletRequest req, ServletResponse res Forwards the request to another resource. The client is not aware of this internal forwarding.
include(ServletRequest req, ServletResponse res) Includes content of another resource in the current response. The response is a combined output.

How to get RequestDispatcher

RequestDispatcher rd = request.getRequestDispatcher(“targetServletOrJSP”);

RequestDispatcher rd = request.getRequestDispatcher(“SecondServlet”);
rd.forward(request, response);

RequestDispatcher rd = request.getRequestDispatcher(“header.html”);
rd.include(request, response);

index.html

<!DOCTYPE html>

<html>

<head>

<meta charset=“UTF-8”>

<title>Insert title here</title>

</head>

<body>

<form action=“first”>

<label>Enter Number : </label>

<input type=“text” name=“txtnum” size=“10” />

<input type=“submit” value=“Get Value” />

</form>

</body>

</html>

ServletOne.java

package requestdispatcher;

import java.io.IOException;

import jakarta.servlet.RequestDispatcher;

import jakarta.servlet.ServletException;

import jakarta.servlet.http.HttpServlet;

import jakarta.servlet.http.HttpServletRequest;

import jakarta.servlet.http.HttpServletResponse;

public class FirstServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException, ServletException

{

int n = Integer.parseInt( req.getParameter(“txtnum”));

req.setAttribute(“num”, n);

RequestDispatcher rd = req.getRequestDispatcher(“second”);

rd.forward(req, res);

}

}

ServletTwo.java

package requestdispatcher;

import java.io.IOException;

import java.io.PrintWriter;

import jakarta.servlet.http.HttpServlet;

import jakarta.servlet.http.HttpServletRequest;

import jakarta.servlet.http.HttpServletResponse;

public class SecondServlet extends HttpServlet {

public void doGet( HttpServletRequest req, HttpServletResponse res) throws IOException

{

int n = (int)req.getAttribute(“num”);

int res1 = n*n;

PrintWriter pw = res.getWriter();

pw.println(“square is : “+res1);

}

}

web.xml

<?xml version=“1.0” encoding=“UTF-8”?>

<web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns=“https://jakarta.ee/xml/ns/jakartaee” xsi:schemaLocation=“https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd” id=“WebApp_ID” version=“5.0”>

<display-name>requestdispatcher</display-name>

 

<servlet>

<servlet-name>one</servlet-name>

<servlet-class>requestdispatcher.FirstServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>one</servlet-name>

<url-pattern>/first</url-pattern>

</servlet-mapping>

 

<servlet>

<servlet-name>two</servlet-name>

<servlet-class>requestdispatcher.SecondServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>two</servlet-name>

<url-pattern>/second</url-pattern>

</servlet-mapping>

</web-app>

sendRedirect() is a method of the HttpServletResponse interface used to redirect the client (browser) to a different resource, such as another servlet, JSP, or an external website.

Syntax:

response.sendRedirect(“newURL”);

index.html

<!DOCTYPE html>

<html>

<head>

<meta charset=“UTF-8”>

<title>Insert title here</title>

</head>

<body>

<form action=“first”>

<label>Enter First Number : </label>

<input type=“text” size=“20” name=“txtnum1” /> <br>

<label>Enter Second Number : </label>

<input type=“text” size=“20” name=“txtnum2” /> <br>

<input type=“submit” value=“Click Me” />

</form>

</body>

</html>

package sendredirect;

import java.io.IOException;

import jakarta.servlet.http.HttpServlet;

import jakarta.servlet.http.HttpServletRequest;

import jakarta.servlet.http.HttpServletResponse;

public class FirstServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException

{

int a = Integer.parseInt( req.getParameter(“txtnum1”));

int b = Integer.parseInt( req.getParameter(“txtnum2”));

 

int c = a + b;

 

res.sendRedirect(“second?sum=”+c);

 

}

}

 

package sendredirect;

import java.io.IOException;

import java.io.PrintWriter;

import jakarta.servlet.http.HttpServlet;

import jakarta.servlet.http.HttpServletRequest;

import jakarta.servlet.http.HttpServletResponse;

public class SecondServlet extends HttpServlet {

public void doGet( HttpServletRequest req, HttpServletResponse res) throws IOException

{

int n = Integer.parseInt( req.getParameter(“sum”));

 

int sq = n*n;

 

PrintWriter pw = res.getWriter();

 

pw.println(“Square is : “+sq);

 

}

}

 

<?xml version=“1.0” encoding=“UTF-8”?>

<web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns=“https://jakarta.ee/xml/ns/jakartaee” xsi:schemaLocation=“https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd” id=“WebApp_ID” version=“5.0”>

<display-name>sendredirect</display-name>

 

<servlet>

<servlet-name>one</servlet-name>

<servlet-class>sendredirect.FirstServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>one</servlet-name>

<url-pattern>/first</url-pattern>

</servlet-mapping>

 

<servlet>

<servlet-name>two</servlet-name>

<servlet-class>sendredirect.SecondServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>two</servlet-name>

<url-pattern>/second</url-pattern>

</servlet-mapping>

</web-app>

Definition

HttpSession is an interface in Java Servlets used to store user-specific information (data) across multiple requests from the same client during a session.

Purpose
  • Maintains state between requests (HTTP is stateless by default).

  • Commonly used to track login status, user preferences, shopping cart, etc.

HttpSession session = request.getSession();

  • Creates a new session if one doesn’t exist.

  • Use request.getSession(false) to return null if no session exists.

session.setAttribute(“username”, “suresh”);
String name = (String) session.getAttribute(“username”);

session.invalidate();

Method Description
getId() Returns unique session ID
setAttribute(String, Object) Stores data in session
getAttribute(String) Retrieves stored data
invalidate() Destroys the session
getCreationTime() Returns session creation time
getLastAccessedTime() Returns last access time

index.html

<!DOCTYPE html>

<html>

<head>

<meta charset=“UTF-8”>

<title>Insert title here</title>

</head>

<body>

<form action=“first” method=“get”>

<label>Enter a Value : </label>

<input type=“text” size=“20” name=“txtname”>

<input type=“submit” value=“Click Me” />

</form>

</body>

</html>

FirstServlet.java

package sessiondemo;

import java.io.IOException;

import jakarta.servlet.http.HttpServlet;

import jakarta.servlet.http.HttpServletRequest;

import jakarta.servlet.http.HttpServletResponse;

import jakarta.servlet.http.HttpSession;

public class FirstServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {

String na = req.getParameter(“txtname”);

 

HttpSession session = req.getSession();

session.setAttribute(“na”,na);

 

res.sendRedirect(“second”);

}

}

 

SecondServlet.java

package sessiondemo;

import java.io.IOException;

import java.io.PrintWriter;

import jakarta.servlet.http.HttpServlet;

import jakarta.servlet.http.HttpServletRequest;

import jakarta.servlet.http.HttpServletResponse;

import jakarta.servlet.http.HttpSession;

public class SecondServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {

HttpSession session = req.getSession();

 

String na = (String)session.getAttribute(“na”);

 

PrintWriter pw = res.getWriter();

pw.println(“Hello, “+na+” this is second servlet”);

 

}

}

 

web.xml

<?xml version=“1.0” encoding=“UTF-8”?>

<web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns=“https://jakarta.ee/xml/ns/jakartaee” xsi:schemaLocation=“https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd” id=“WebApp_ID” version=“5.0”>

<display-name>sessiondemo</display-name>

<servlet>

<servlet-name>abc</servlet-name>

<servlet-class>sessiondemo.FirstServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>abc</servlet-name>

<url-pattern>/first</url-pattern>

</servlet-mapping>

 

<servlet>

<servlet-name>xyz</servlet-name>

<servlet-class>sessiondemo.SecondServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>xyz</servlet-name>

<url-pattern>/second</url-pattern>

</servlet-mapping>

</web-app>

Definition

Cookies are small pieces of data stored on the client’s browser to maintain state between client and server in stateless HTTP protocol.

Purpose
  • Track user sessions

  • Store user preferences

  • Implement login systems

Cookie ck = new Cookie(“username”, “suresh”);
response.addCookie(ck);

Cookie[] cookies = request.getCookies();
for (Cookie ck : cookies) {
if (ck.getName().equals(“username”)) {
String name = ck.getValue();
}
}

Method Description
getName() Returns the cookie's name
getValue() Returns the cookie's value
setMaxAge(int seconds) Sets the cookie’s lifetime
getMaxAge() Gets cookie expiration time

index.html

<!DOCTYPE html>

<html>

<head>

<meta charset=“UTF-8”>

<title>Insert title here</title>

</head>

<body>

<form action=“first”>

<label>Enter Name : </label>

<input type=“text” name=“txtname” />

<input type=“submit” value=“Click Me” />

</form>

</body>

</html>

.

FirstServlet.java

package cookiedemo;

import java.io.IOException;

import jakarta.servlet.http.Cookie;

import jakarta.servlet.http.HttpServlet;

import jakarta.servlet.http.HttpServletRequest;

import jakarta.servlet.http.HttpServletResponse;

public class FirstServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res ) throws IOException {

String name = req.getParameter(“txtname”);

 

Cookie c = new Cookie(“na”,name);

res.addCookie(c);

 

res.sendRedirect(“second”);

}

}

 

SecondServlet.java

package cookiedemo;

import java.io.IOException;

import java.io.PrintWriter;

import jakarta.servlet.http.Cookie;

import jakarta.servlet.http.HttpServlet;

import jakarta.servlet.http.HttpServletRequest;

import jakarta.servlet.http.HttpServletResponse;

public class SecondServlet extends HttpServlet {

public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {

String na=null;

Cookie cookies[] = req.getCookies();

for(Cookie c : cookies) {

if(c.getName().equals(“na”)) {

na = c.getValue();

}

}

PrintWriter pw = res.getWriter();

pw.println(“Hello “+na+” Welcome to 2nd Servlet”);

}

}

 

web.xml

<?xml version=“1.0” encoding=“UTF-8”?>

<web-app xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xmlns=“https://jakarta.ee/xml/ns/jakartaee” xsi:schemaLocation=“https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd” id=“WebApp_ID” version=“5.0”>

<display-name>cookiedemo</display-name>

<servlet>

<servlet-name>abc</servlet-name>

<servlet-class>cookiedemo.FirstServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>abc</servlet-name>

<url-pattern>/first</url-pattern>

</servlet-mapping>

 

<servlet>

<servlet-name>xyz</servlet-name>

<servlet-class>cookiedemo.SecondServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>xyz</servlet-name>

<url-pattern>/second</url-pattern>

</servlet-mapping>

</web-app>