You are on page 1of 7

Hello World example using servlets:

HelloWorld.java:

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

public class HelloWorld extends HttpServlet{
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
pw.println("<html>");
pw.println("<head><title>Hello World</title></title>");
pw.println("<body>");
pw.println("<h1>Hello World</h1>");
pw.println("</body></html>");
}
}
web.xml:
<web-app>
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>HelloWorld</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
</web-app>

Session Tracking:

Session tracking is a mechanism that servlets use to maintain state about a series of requests
from the same user (that is, requests originating from the same browser) across some period
of time. In other words Session tracking is a techinque where we can track the number of
attempts made by the web browser.

Why Session?

HTTP is a stateless protocol: each time a client retrieves a Web page, the client
opens a separate connection to the Web server and the server does not automatically maintain
contextual information about the client. Even with servers that support persistent (keep-alive)
HTTP connections and keep sockets open for multiple client requests that occur in rapid
succession, there is no built-in support for maintaining contextual information. This lack of
context causes a number of difficulties. For example, when clients at an online store add an
item to their shopping carts, how does the server know whats already in the carts? Similarly,
when clients decide to proceed to checkout, how can the server determine which previously
created shopping carts are theirs? These questions seem very simple, yet, because of the
inadequacies of HTTP, answering them is surprisingly complicated.

There are three typical solutions to this problem: cookies, URL rewriting, and hidden form
fields.

Types of session:

The types include:
1. Cookies
2. URL rewriting
3. Hidden Form Fields
4. Http session

Cookies:

Cookies are small bits of textual information that a Web server sends to a browser and that
the browser returns unchanged when visiting the same Web site or domain later. By having
the server read information it sent the client previously, the site can provide visitors with a
number of conveniences like Identifying a user during an e-commerce session, avoiding
username and password, customizing a site etc.

Simple Example for cookie:
addcookie.java:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class addcookie extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException{
String str=req.getParameter("Name");
System.out.println(str);
//Cookie(key,value);
Cookie ck=new Cookie("key",str);
PrintWriter out=res.getWriter();
res.setContentType("text/html");
//HttpServletResponse.addCookie(Cookie);
res.addCookie(ck);
out.println("Your cookie is set to "+str);
out.close();
}
}
getcookie.java:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class getCookie extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res) throws
ServletException,IOException{
res.setContentType("text/html");
PrintWriter out=res.getWriter();
Cookie ck[]=req.getCookies();
out.println("<html><body>");
out.println("<br>number of cookie="+ck.length);
for(int i=0;i<ck.length;i++){
String str=ck[i].getName();
String value=ck[i].getValue();
out.println("<b><br>Name of the Cookie :"+str);
out.println("<b><br> Value of the cookie :"+value);
}
out.println("</body></html>");
out.close();
}
}

web.xml:
<web-app>

<servlet>
<servlet-name>addcookie</servlet-name>
<servlet-class>addcookie</servlet-class>
</servlet>
<servlet>
<servlet-name>getCookie</servlet-name>
<servlet-class>getCookie</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>addcookie</servlet-name>
<url-pattern>/addcookie/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>getCookie</servlet-name>
<url-pattern>/getCookie/*</url-pattern>
</servlet-mapping>


</web-app>
URL Rewriting:
In URL rewriting we append a token or identifier to the URL of next servlet or next
resource.We can send parameter name/values pairs using the following format:
url?name1=value&name2=value2&??
A name and a value is separated using an= sign, a parameter name/value is separated from
another parameter using ampersand(&).When user clicks the hyperlink the parameter
name/value pairs will be passed to the server.
From the servlet we can use getParameter() method to obtain a parameter value.


URL rewriting is a session management technique that manages user session by modifying a
URL. Usually, this technique is used when information that is to be transferred is not very
critical because the URL can be intercepted easily during transfer. Given below the example
of URL rewriting :

UrlRewriting.html
<HTML>
<TITLE>ONLINE SHOPPING PORTAL</TITLE>
<BODY>
<FORM ACTION =
"http://localhost:8080/ankit/servlet/RewriteServletURL" METHOD = POST
align=CENTER>
Username: <INPUT TYPE = TEXT NAME = "user" align=CENTER><BR>
<INPUT TYPE = SUBMIT VALUE = "Login" align=CENTER>
</FORM>
</BODY>
</HTML>

RewriteServletURL.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class RewriteServletURL extends HttpServlet
{
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
doPost(req, res);
}
public void doPost(HttpServletRequest req, HttpServletResponse
res) throws ServletException, IOException
{
/* Retrieve the parameters bound to user, password and
login from the request object. */
String username = req.getParameter("user");
PrintWriter pw = res.getWriter();
/* Verify the login status */
res.setContentType("text/html");
pw.println("Hello! <a href=\"http://localhost:8080/ankit/servlet/SecondServlet?uname="
+ username + "\"> click here </a>to proceed");
}
}

SecondServlet.java

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
/* Define the SecondServlet that extends HttpServlet. */
public class SecondServlet extends HttpServlet
{
/* Override the doGet() method of HttpServlet. */
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException
{
doPost(req, res);
}
public void doPost(HttpServletRequest req, HttpServletResponse
res) throws ServletException, IOException
{
/* Retrieve the parameters bound to user name through
hidden form field from the request object. */
String uname = req.getParameter("uname");
PrintWriter pw = res.getWriter();
pw.println("Hello! "+uname);
}
}

Hidden Form fields:

One way to support anonymous session tracking is to use hidden form fields. As the name
implies, these are fields added to an HTML form that are not displayed in the client's
browser. They are sent back to the server when the form that contains them is submitted.

In case of hidden form field an invisible text field is used for maintaining state of an user.


Example:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class Hidden extends HttpServlet{
public void doGet(HttpServletRequest req,HttpServletResponse res)throws
ServletException,IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<html>");
String str1=req.getParameter("loginId");
String str2=req.getParameter("company");
out.println("<form action=http://localhost:8086/hidden/Hidden>");
out.println("your login name is " + str1);
out.println("<br>your Company is " + str2);
out.println("<input type=hidden name=loginId value="+str1+">");
out.println("<input type=submit value=press>");
}
}

Web.xml:
<web-app>
<servlet>
<servlet-name>Hidden</servlet-name>
<servlet-class>Hidden</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>Hidden</servlet-name>
<url-pattern>/Hidden/*</url-pattern>
</servlet-mapping>

</web-app>

Http Session:
In this container creates a session id for each user. The container uses this id to identify the
particular user.An object of HttpSession can be used to perform two tasks:
1.bind objects
2.view and manipulate information about session,creation time and last accessed time.
Example:

import java.io.PrintWriter;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class ServerSession extends HttpServlet{
private int sercount=0;
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException,ServletException {

HttpSession ses=req.getSession(true);
int i=0;
Integer t=(Integer)ses.getAttribute("cc");
if(t != null){
i=t.intValue()+1;
}
res.setContentType("text/html");
PrintWriter pw=res.getWriter();
pw.println("<h2><center>you hit this browser" + i + "time(s) and you hit
server"+(++sercount)+"time(s)</center><h2>");
ses.setAttribute("cc",new Integer(i));
}
}
Web.xml:
<web-app>

<servlet>
<servlet-name>ServerSession</servlet-name>
<servlet-class>ServerSession</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>ServerSession</servlet-name>
<url-pattern>/ServerSession/*</url-pattern>
</servlet-mapping>


</web-app>

You might also like