Hidden form field is used to store session information of a client. In this method, we create a hidden form which passes the control to the servlet whose path is given in the form action area. Using this, the information of the user is stored and passed to the location where we want to send data.
The main advantage of using Hidden form field that it doesn’t depend on the browser. Even If the cookies are disabled or not hidden form field will work perfectly.
Example
Java
out.print( "<form action='SecondServlet'>" );
out.print("<input type= 'hidden' name= 'username'
value= '" + n + "' >");
out.print( "<input type='submit' value='submit'>" );
out.print( "</form>" );
|
A complete example of Hidden form field method
In this method we are transferring the client detail from firstServlet to Second Servlet
Index.html
HTML
<!DOCTYPE html>
<!DOCTYPE html>
< html >
< head >
< meta charset = "UTF-8" >
< title >Insert title here</ title >
</ head >
< body >
< form action = "FirstServlet" method = "Post" >
Name:< input type = "text" name = "userName" />< br />
< input type = "submit" value = "submit" />
</ form >
</ body >
</ html >
|
Output

FirstServlet.java
Java
package GeeksforGeeks;
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet ( "/FirstServlet" )
public class FirstServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
{
try {
response.setContentType( "text/html" );
PrintWriter out = response.getWriter();
String username = request.getParameter( "userName" );
out.print( "Welcome " + username);
out.print( "<form action='SecondServlet'>" );
out.print( "<input type='hidden' name='username' value='" + username + "'>" );
out.print( "<input type='submit' value='submit'>" );
out.print( "</form>" );
out.close();
}
catch (Exception e) {
System.out.println(e);
}
}
}
|
Output

SecondServlet
Java
package GeeksforGeeks;
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet ( "/SecondServlet" )
public class SecondServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
{
try {
response.setContentType( "text/html" );
PrintWriter out = response.getWriter();
String username = request.getParameter( "username" );
out.print( "WELCOME " + username);
out.close();
}
catch (Exception e) {
System.out.println(e);
}
}
}
|
Output

Step by Step processing of the code
As you Deploy the project and run the code on the server following process goes on.
- Control goes to index.html file and a form is generated on web browser and it will ask for your username.
- In index.html file form, action is FirstServlet so when you hit submit button, control goes to FirstServlet and your session is start.
- In FirstServlet request.getParameter(username), take the input from index.html where the field is username and print it on the browser.
- In firstServlet there is a hidden form field which again takes the input from browser and pass the control to second servlet.
- This method goes on for a number of different Servlet.
Note : This is the main disadvantage of Hidden form field method that you have to fill the form again and again for maintaining a client session. - In Second Servlet we again use request.getParameter for getting input from FirstServlet page.
Advantage and Applications
- It can be used for anonymous session tracking.
- Hidden form field is supported in every Browser. This method of session tracking does not need any special configuration of the browser.
- All the information is stored in client browser, so it increases the security
Disadvantage :
- It works only for a sequence of dynamically generated forms. This breaks down with static documents, emailed documents, bookmarked documents, and browser shutdowns.
- You need to submit an extra form on each request.
- It’s complex than URL rewriting.
- This method use only textual information.