import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class StateManagementServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Create or retrieve session
HttpSession session = request.getSession();
String sessionId = session.getId();
// Track number of visits using session
Integer visitCount = (Integer) session.getAttribute(“visitCount”);
if (visitCount == null) {
visitCount = 1;
} else {
visitCount++;
}
session.setAttribute(“visitCount”, visitCount);
// Create or retrieve cookie
Cookie[] cookies = request.getCookies();
Cookie visitCookie = null;
if (cookies != null) {
for (Cookie cookie : cookies) {
if (“visitCount”.equals(cookie.getName())) {
visitCookie = cookie;
break;
}
}
}
if (visitCookie == null) {
visitCookie = new Cookie(“visitCount”, String.valueOf(visitCount));
visitCookie.setMaxAge(60 * 60 * 24 * 365); // 1 year
response.addCookie(visitCookie);
} else {
int cookieVisits = Integer.parseInt(visitCookie.getValue()) + 1;
visitCookie.setValue(String.valueOf(cookieVisits));
response.addCookie(visitCookie);
}
// Response content
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
out.println(“<html>”);
out.println(“<head><title>State Management Example</title></head>”);
out.println(“<body>”);
out.println(“<h1>State Management Example</h1>”);
out.println(“<h2>Using Session:</h2>”);
out.println(“<p>Session ID: ” + sessionId + “</p>”);
out.println(“<p>Number of Visits (Session): ” + visitCount + “</p>”);
out.println(“<h2>Using Cookie:</h2>”);
out.println(“<p>Number of Visits (Cookie): ” + visitCookie.getValue() + “</p>”);
out.println(“</body>”);
out.println(“</html>”);
}
}