Java.Servlet.What are servlet attributes used for and how do I work with them?

Attributes are key-value pairs you can attach to an object like:

  • ServletRequest
  • HttpSession
  • ServletContext

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:

ObjectLifetimeScopeExample
ServletRequestOnly during the current requestShort (request-level)Passing a result from Servlet A to Servlet B when forwarding
HttpSessionUntil session timeout or logoutMedium (user-level)Saving user login info
ServletContextUntil server restarts or undeploysLong (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:

  • LoginServlet authenticates user and needs to pass user’s role to DashboardServlet.

✅ 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:

ObjectTypical UseScope
Request attributePassing data during 1 requestShort (only 1 request)
Session attributeStoring user data across multiple requestsMedium (user session)
Context attributeSharing global data across appLong (application lifetime)
This entry was posted in Без рубрики. Bookmark the permalink.