Attributes are key-value pairs you can attach to an object like:
ServletRequestHttpSessionServletContext
They are used to share data between:
- Different parts of your servlet (methods, filters)
- Different servlets
- Requests across time (session)
🔥 Why Use Attributes?
- Pass information between servlets when forwarding or including.
- Share objects (like database connections, user info, calculation results).
- Avoid putting sensitive data into URL or forms (more secure).
⚙️ Where You Can Store Attributes:
| Object | Lifetime | Scope | Example |
|---|---|---|---|
ServletRequest | Only during the current request | Short (request-level) | Passing a result from Servlet A to Servlet B when forwarding |
HttpSession | Until session timeout or logout | Medium (user-level) | Saving user login info |
ServletContext | Until server restarts or undeploys | Long (application-level) | Sharing application-wide settings |
🛠️ How to Work With Attributes
1. On Request (ServletRequest)
✅ Set attribute:
request.setAttribute("userName", "Alice");
✅ Get attribute:
String name = (String) request.getAttribute("userName");
✅ Remove attribute:
request.removeAttribute("userName");
2. On Session (HttpSession)
✅ Set attribute:
HttpSession session = request.getSession();
session.setAttribute("userName", "Alice");
✅ Get attribute:
String name = (String) session.getAttribute("userName");
✅ Remove attribute:
session.removeAttribute("userName");
3. On Application Context (ServletContext)
✅ Set attribute:
ServletContext context = getServletContext();
context.setAttribute("appName", "My Cool App");
✅ Get attribute:
String appName = (String) context.getAttribute("appName");
✅ Remove attribute:
context.removeAttribute("appName");
🎯 Real-world Example
Suppose:
LoginServletauthenticates user and needs to pass user’s role toDashboardServlet.
✅ In LoginServlet:
request.setAttribute("userRole", "admin");
RequestDispatcher dispatcher = request.getRequestDispatcher("/dashboard");
dispatcher.forward(request, response);
✅ In DashboardServlet:
String role = (String) request.getAttribute("userRole");
out.println("Welcome, your role is: " + role);
Boom! — No URL params needed. Cleaner and more secure. 🚀
🧩 Quick Summary:
| Object | Typical Use | Scope |
|---|---|---|
| Request attribute | Passing data during 1 request | Short (only 1 request) |
| Session attribute | Storing user data across multiple requests | Medium (user session) |
| Context attribute | Sharing global data across app | Long (application lifetime) |