0% found this document useful (0 votes)
26 views

Java Servlets - Part II-1

This document provides information on session tracking and management in Java servlets. It discusses four main techniques for session tracking: cookies, hidden form fields, URL rewriting, and the HttpSession interface. Cookies are the most common technique, where a cookie containing a session ID is sent from the servlet to the client browser and then sent back on subsequent requests to identify the user session. An example is provided demonstrating how to use cookies to track user sessions across multiple servlet requests by setting cookies in the first servlet and reading them in the second servlet.

Uploaded by

hardik22csu077
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views

Java Servlets - Part II-1

This document provides information on session tracking and management in Java servlets. It discusses four main techniques for session tracking: cookies, hidden form fields, URL rewriting, and the HttpSession interface. Cookies are the most common technique, where a cookie containing a session ID is sent from the servlet to the client browser and then sent back on subsequent requests to identify the user session. An example is provided demonstrating how to use cookies to track user sessions across multiple servlet requests by setting cookies in the first servlet and reading them in the second servlet.

Uploaded by

hardik22csu077
Copyright
© © All Rights Reserved
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 59

Java Servlets – Part II

Contents
• Deploying Web Applications

• Working Example

• Session Tracking/Management

• Cookies

• Hidden Form Fields

• URL Rewriting

• HttpSession Interface
Deploying Web Applications

• There are 2 ways to manually deploy a web application

• One way is to use a Web Archive (WAR) file, which is a Java Archive (JAR) that
contains all the files and directories for a web application

• You’ve to copy the WAR file into Tomcat’s webapps directory

• Tomcat will automatically expand the WAR file into a proper directory structure

• Another way is to manually deploy a web app by copying the directories and
files for the application into Tomcat’s webapps directory
Deploying Web Applications
• Standard directories and files for a Web Application
All web applications that use servlets must In addition, you can also include (optional)

Deploying
have the WEB-INF and WEB-INF\classes other standard directories such as WEB-
directories INF\lib or the META-INF directory

Web
Applications

The WEB-INF directory must contain a The WEB-INF\classes is the root directory
web.xml file for the application for all Java classes & Servlets
Deploying Web Applications
• Summary of the directories and files for a web application
Deploying Web Applications

• The Deployment Descriptor (DD)

• The web.xml file is known as the deployment descriptor which is used to


configure a web application

• It is this file from which the Web Container gets the information about the
servlet to be invoked

• The web container uses an xml parser (such as SAX, DOM & Pull) to get
the desired information from the web.xml file
Deploying Web Application

• Some of the common elements used in web.xml file are

• <web-app> It represents the whole application

• <servlet> represents the servlet

• <servlet-name> represents the name of the servlet

• <servlet-class> represents the class of the servlet

• <servlet-mapping> used to map the servlet

• <url-pattern> used at the client side to invoke the servlet


Working Example
• The servlet example can be created by the following three ways

• By implementing the Servlet interface


• By extending GenericServlet class, or
• By extending HttpServlet class

• The most commonly used approach is to use HttpServlet class as it provide


methods such as doGet(), doPost() etc.

• We will design a dynamic web page that will show up the current date and time
Working Example
• Sample code for Servlet
import javax.servlet.http.*;
import javax.servlet.*;
import java.io.*;
public class DemoServlet extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res) throws ServletException,IOException
{
res.setContentType("text/html");//setting the content type
PrintWriter pw=res.getWriter();//get the stream to write the data
Java.util.Date today = new java.util.Date();
//writing html in the stream
pw.println("<html><body>");
pw.println(“<h1 align = center>Welcome to Servlet Demo</h1>");
Pw.println(“<br>”+ today);
pw.println("</body></html>");
pw.close();//closing the stream
}}
Working Example

• Creating the Deployment Descriptor (DD)


<web-app>

<servlet>
<servlet-name>Demo Web App</servlet-name>
Name of the servlet
Ties the <servlet> element to the <servlet-mapping> element
<servlet-class>DemoServlet</servlet-class>
</servlet> Name of the servlet class

<servlet-mapping>
<servlet-name>Demo Web App</servlet-name>
<url-pattern>/welcome</url-pattern> Name the client uses for the request
</servlet-mapping>

</web-app>
• Start the server and deploy the project

• To start the server type the following in your


command window

C:\tomcat\bin\
Working startup

Example • Copy the project folder and paste it inside the


webapps folder under tomcat directory

• Open any browser window and type the


following under URL tab

http://
localhost:8080/demo/welcome
Session Management

• Session simply means a particular interval of time

• Keeping track of users as they move around a web site is known as session
tracking

• It is a way to maintain state (data) of a user. In servlets, it is known as session


management

• The servlet container uses HttpSession interface to create a session between an


HTTP client and an HTTP server
• Why session tracking/management is difficult with HTTP protocol?

• HTTP is a stateless protocol, which means, every time a client


requests a page from the web server, it treats the request as a new
request

• After the web server returns the page, it drops the connection

• If the browser makes additional requests, the web server has no way
to associate the browser with its previous requests
Session • So we need to maintain the state of a user to recognize a particular
Management connection
Session Management

• Java servlets technology supports four techniques for session tracking:

• Cookies

• Hidden Form Fields

• URL Rewriting

• HttpSession Interface
Session Management

• Cookies in Servlet

• Cookie is a small piece of information that is persisted between multiple client requests

• The servlet API uses a cookie to store the session ID within clients browser

• When a HTTP request is made, a cookie is added to the request

• For the subsequent requests from the client, they can be recognized using the received cookie

• However, if cookies have been disabled within a browser, this type of session tracking won’t
work
• Cookies in Servlet

• By default each request is considered as a new request

• A cookie is added with the response from the servlet

• It will stored inside the browsers cache and will be sent in the
subsequent requests made by the user

• This way we can keep track or recognize a user/connection


Session
Management
• Cookie Types
session & persistent
Session Management

• Cookies Example

• HTML home page

<form action = “login”>


user Name: <input type = “text” name = “username”/><br/>
Password: <input type = “password” name = “userPassword”/><br/>
<input type = “submit” value = “submit”/>
</form>
Session Management
• Cookie Example: I Servlet Class
import java.io.*;
import javax.servlet.*; //Creating two cookies

import javax.servlet.http.*; Cookie c1=new Cookie("userName",name);

public class MyServlet1 extends HttpServlet Cookie c2=new Cookie("userPassword",password);

{
public void doGet(HttpServletRequest request, //Adding the cookies to response header

HttpServletResponse response) { response.addCookie(c1);

try{ response.addCookie(c2);

response.setContentType("text/html"); pwriter.print("<br><a href='welcome'>View Details</a>");

PrintWriter pwriter = response.getWriter(); pwriter.close();


}catch(Exception exp){

String name = request.getParameter("userName"); System.out.println(exp);

String password = request.getParameter("userPassword"); }

pwriter.print("Hello "+name); }

pwriter.print("Your Password is: "+password); }


Session Management
• Cookie Example: II Servlet Class
//Displaying user password value from cookie
import java.io.*; pwriter.print("Password: "+c[2].getValue());
import javax.servlet.*;
import javax.servlet.http.*; pwriter.close();
public class MyServlet2 extends HttpServlet { }catch(Exception exp){
public void doGet(HttpServletRequest request, System.out.println(exp);
HttpServletResponse response){ }
try{ }
response.setContentType("text/html"); }
PrintWriter pwriter = response.getWriter();
//Reading cookies
Cookie c[]=request.getCookies();
//Displaying User name value from cookie
pwriter.print("Name: "+c[1].getValue());
Session Management
• Cookie Example: web.xml

<web-app>
<display-name>BeginnersBookDemo</display-name> <servlet>

<welcome-file-list> <servlet-name>Servlet2</servlet-name>

<welcome-file>index.html</welcome-file> <servlet-class>MyServlet2</servlet-class>

</welcome-file-list> </servlet>

<servlet> <servlet-mapping>

<servlet-name>Servlet1</servlet-name> <servlet-name>Servlet2</servlet-name>

<servlet-class>MyServlet1</servlet-class> <url-pattern>/welcome</url-pattern>

</servlet> </servlet-mapping>

<servlet-mapping> </web-app>

<servlet-name>Servlet1</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
Session Management

• Cookie Example: Output

• Welcome Screen

• After clicking submit


Session Management
• Hidden Form Field

• A hidden text field is used for maintaining the state of a user

• When a client/user submits the form, the browser transfers these hidden values to the server

• Hidden boxes be present in the web pages of the browser window so they do not provide a
burden to the server

• It is widely used in comment form of a website. In such case, we store page id or page name in
the hidden field so as to uniquely identify each web page
• Hidden Form Field Example

• In the given example, we will store the name of a


user in a hidden textfield and get that value from
another servlet object

Session
Management
Session Management
• Hidden Form Field Example

index.html

<form action="servlet1">
Name:<input type="text" name="userName"/><br/>
<input type="submit" value="go"/>
</form>
Session Management

• Example Cont.…
FirstServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class FirstServlet extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response){
try{

response.setContentType("text/html");
PrintWriter out = response.getWriter();

String n=request.getParameter("userName");
out.print("Welcome "+n);
Session Management

• Example Cont.…

//creating form that have invisible textfield


out.print("<form action='servlet2'>");
out.print("<input type='hidden' name='uname' value='"+n+"'>");
out.print("<input type='submit' value='go'>");
out.print("</form>");
out.close();

}catch(Exception e){System.out.println(e);}
}

}
Session Management
• Example Cont.…
SecondServlet.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class SecondServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
try{
response.setContentType("text/html");
PrintWriter out = response.getWriter();

//Getting the value from the hidden field


String n=request.getParameter("uname");
out.print("Hello "+n);

out.close();
}catch(Exception e){System.out.println(e);}
}
}
Session Management

• Example Cont.…
web.xml <servlet>

<web-app> <servlet-name>s2</servlet-name>
<servlet-class>SecondServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>s1</servlet-name>
<servlet-mapping>
<servlet-class>FirstServlet</servlet-class>
<servlet-name>s2</servlet-name>
</servlet>
<url-pattern>/servlet2</url-pattern>
</servlet-mapping>
<servlet-mapping>
</web-app>
<servlet-name>s1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</servlet-mapping>
Session Management

• URL Rewriting

• Session tracking can be achieved by URL rewriting if cookies are disabled in a browser by the client

• URL rewriting is a process of appending or modifying any URL structure while loading a web page

• A token (parameter) is added at the end of the URL. The token consists of a name/value pair
separated by an equal (=) sign

• When the user clicks the hyperlink, the parameter name/value pairs will be passed to the server.

• From a servlet, we can use getParameter() method to obtain a parameter value


Session Management

• URL Rewriting – Example

• In the given example, we will maintain the state of the user by appending the name of the user
in the request URL

Index.html

<form action="servlet1">
Name:<input type="text" name="userName"/><br/>
<input type="submit" value="go"/>
</form>
Session Management

• URL Rewriting Example


FirstServlet.java
import java.io.*;
import javax.servlet.*; //appending the username in the query string
import javax.servlet.http.*; out.print("<a href='servlet2?uname="+n+"'>visit</a>");

public class FirstServlet extends HttpServlet {


out.close();

public void doGet(HttpServletRequest request, HttpServletResponse


response){ }catch(Exception e){System.out.println(e);}
try{ }

response.setContentType("text/html");
}
PrintWriter out = response.getWriter();

String n=request.getParameter("userName");
out.print("Welcome "+n);
Session Management

• URL Rewriting Example


//getting value from the query string

SecondServlet.java String n=request.getParameter("uname");

import java.io.*; out.print("Hello "+n);

import javax.servlet.*;
import javax.servlet.http.*; out.close();

public class SecondServlet extends HttpServlet { }catch(Exception e){System.out.println(e);}


}

public void doGet(HttpServletRequest request, }


HttpServletResponse response)
try{

response.setContentType("text/html");
PrintWriter out = response.getWriter();
Session Management

• URL Rewriting Example


web.xml <servlet>
<web-app>
<servlet-name>s2</servlet-name>
<servlet-class>SecondServlet</servlet-class>
<servlet>
</servlet>
<servlet-name>s1</servlet-name>
<servlet-class>FirstServlet</servlet-class>
<servlet-mapping>
</servlet>
<servlet-name>s2</servlet-name>
<url-pattern>/servlet2</url-pattern>
<servlet-mapping>
</servlet-mapping>
<servlet-name>s1</servlet-name>
<url-pattern>/servlet1</url-pattern>
</web-app>
</servlet-mapping>
Session Management

• HttpSession Interface

• Java servlets provide an interface called HttpSession which creates sessions with a unique
session id for each user

• On client’s first request, the web container generates a unique ID and gives it back to the
client with response

• The client sends back the session ID with each request making it easier for the container to
identify where the request is coming from

• The web container uses this ID, finds the matching session with this ID and associates the
session with the request
Session Management

• HttpSession Interface
Session Management

• HttpSession Interface
getSession() method returns a session, If the session already exist, it
return the existing session else creates a new session
• Creating a new session
• HttpSession session = request.getSession();
getSesssion(true) always return a new
• HttpSessopm session = request.getSession(true); session

• Getting a pre-existing session


Returns a pre-existing session
• HttpSession session = request.getSession(false);

• Destroying a session
Destroying a session
• session.invalidate();
Session Management

• HttpSession Interface – Example

Index.html

<form method="post" action="Validate">


User: <input type="text" name="user" /><br/>
Password: <input type="text" name="pass" ><br/>
<input type="submit" value="submit">
</form>
Session Management

• HttpSession Interface – Example

Validate.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Validate extends HttpServlet {

protected void doPost(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
Session Tracking
• Example Contd…

String name = request.getParameter("user");


String pass = request.getParameter("pass");

if(pass.equals("1234"))
{
//creating a session
HttpSession session = request.getSession();
session.setAttribute("user", name);
response.sendRedirect("Welcome");
}
}
}
Session Management

• Example Contd…
Welcome.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class Welcome extends HttpServlet {

protected void doGet(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
String user = (String)session.getAttribute("user");
out.println("Hello "+user);
}
}
Session Management

<servlet-mapping>

• Example Cont.… <servlet-name>Validate</servlet-name>


<url-pattern>/Validate</url-pattern>
web.xml </servlet-mapping>
<web-app..> <servlet-mapping>
<servlet-name>Welcome</servlet-name>
<servlet> <url-pattern>/Welcome</url-pattern>
<servlet-name>Validate</servlet-name> </servlet-mapping>
<servlet-class>Validate</servlet-class>
</servlet> <welcome-file-list>
<servlet> <welcome-file>index.html</welcome-file>
<servlet-name>Welcome</servlet-name> </welcome-file-list>
<servlet-class>Welcome</servlet-class>
</servlet> </web-app>
Home .html
Newcookies cls
Newcookies cls
Newcookies1
Newcookies1
XML
Output
Output
Output
Thank You

You might also like