Session tracking using Hidden form fields in servlet
Http Stateless behaviour
========================
The protocol http creates seperate connection with the web server for browser for every request
due to this one connection data can not be used in another connection i.e one request data
can not be used in another request processing.
in order to get stateful behaviour in web application though protocol http is stateless
we need to use following session tracking techniques
a)Hidden form fields
advantages
==========
1)Basic html knowledge
2)can be used with diff servers
2)Disadvantages
a)we can see the data (no secrecy)
b)hidden box values travel across the multiple requests i.e they increase network traffic
b/w browser and server
c)Hidden boxes can only hold the text data/String values.. i.e they can not hold the java objects
d)if multiple forms are there then adding hidden box values is quite heavy job
Directory
=======
web.xml
========
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>HiiddenFormFields</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>
index.html
========
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
<style type="text/css">
div {
width: 500px;
margin: auto;
margin-top: 100px;
}
</style>
</head>
<body>
<div>
<form action="firsturl" method="post">
Name: <br> <input type="text" name="name"> <br>
Choose any one: <br> <select name="dish">
<option value="sweet">Sweet</option>
<option value="spicy">Spicy</option>
</select> <br> <input type="submit" value="submit">
</form>
</div>
</body>
</html>
FirstServlet.java
===========
import java.io.IOException;
import java.io.PrintWriter;
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("/firsturl")
public class FirstServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
//get PrintWriter
PrintWriter pw = res.getWriter();
//set content type
res.setContentType("text/html");
//get the values
String name = req.getParameter("name");
String dish = req.getParameter("dish");
if(dish.equalsIgnoreCase("sweet")) {
pw.println("<h1>Choose One</h1>");
pw.println("<form action='secondurl' method='post'>");
pw.println("<input type='hidden' name='name' value='"+name+"'>");
pw.println("<select name='dish'>");
pw.println("<option value='gulab jamun'>gulab jamun</option>");
pw.println("<option value='jalebi'>jalebi</option>");
pw.println("</select>");
pw.println("<br>");
pw.println("<input type='submit' value='submit'>");
pw.println("</form>");
}else {
pw.println("<h1>Choose One</h1>");
pw.println("<form action='secondurl' method='post'>");
pw.println("<input type='hidden' name='name' value='"+name+"'>");
pw.println("<select name='dish'>");
pw.println("<option value='samosa'>samosa</option>");
pw.println("<option value='paneer'>paneer</option>");
pw.println("</select>");
pw.println("<br>");
pw.println("<input type='submit' value='submit'>");
pw.println("</form>");
}
//close the stream
pw.close();
}
}
Comments
Post a Comment