Get Cookie Example of AEM Servlet and Sling Model

In this short article, we will show two code examples; for example, one will be showcasing how cookies values can be accessed for an AEM Servlet, and for example two, Sling Model.


1. AEM Servlet Get Cookie Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
package com.sourcedcode.core.servlet;

import com.cat.wcm.core.util.JSONObject;
import org.apache.commons.lang.StringUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
import org.osgi.service.component.annotations.Component;

import javax.servlet.Servlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

import static org.apache.sling.api.servlets.ServletResolverConstants.SLING_SERVLET_PATHS;

@Component(
  service = { Servlet.class },
  property = {
    SLING_SERVLET_PATHS + "=/bin/getCookieExample"
  }
)
public class GetCookieServletExample extends SlingAllMethodsServlet {

  @Override
  protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws IOException {
    Cookie myCookie = getCookie(request, "myCookie");
    String myCookieValue = "";
    if (myCookie != null && !myCookie.getValue().isBlank()) {
      myCookieValue = myCookie.getValue();
    }

    // server response
    response.setStatus(200);
    response.setContentType("application/json");

    JSONObject jsonResponse = new JSONObject();
    jsonResponse.put("myCookie", myCookieValue);
    response.getWriter().write(jsonResponse.toString());
  }
     
  // extracted helper method
  private Cookie getCookie(HttpServletRequest request, String cookieName) {
    if (StringUtils.isBlank(cookieName)) {
      return null;
    } else {
      Cookie[] cookies = request.getCookies();
      if (cookies == null) {
        return null;
      } else {
        if (cookies.length > 0) {
          Cookie[] var3 = cookies;
          int var4 = cookies.length;
          for(int var5 = 0; var5 < var4; ++var5) {
            Cookie cookie = var3[var5];
            if (StringUtils.equals(cookieName, cookie.getName())) {
              return cookie;
            }
          }
        }
        return null;
      }
    }
  }
}

2. Sling Model Get Cookie Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.sourcedcode.models.pages.page;

import org.apache.commons.lang.StringUtils;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.models.annotations.DefaultInjectionStrategy;
import org.apache.sling.models.annotations.Model;
import org.apache.sling.models.annotations.injectorspecific.SlingObject;

import javax.annotation.PostConstruct;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;

@Model(
  adaptables = {SlingHttpServletRequest.class, Resource.class},
  defaultInjectionStrategy = DefaultInjectionStrategy.OPTIONAL)
public class ExampleModel {

  @SlingObject
  protected SlingHttpServletRequest request;

  @PostConstruct
  private void init() {
    Cookie myCookie = getCookie(request, "myCookie");
    String myCookieValue = "";
    if (myCookie != null && !myCookie.getValue().isBlank()) {
      myCookieValue = myCookie.getValue();
    }
  }

  // extracted helper method
  private Cookie getCookie(HttpServletRequest request, String cookieName) {
    if (StringUtils.isBlank(cookieName)) {
      return null;
    } else {
      Cookie[] cookies = request.getCookies();
      if (cookies == null) {
        return null;
      } else {
        if (cookies.length > 0) {
          Cookie[] var3 = cookies;
          int var4 = cookies.length;
          for(int var5 = 0; var5 < var4; ++var5) {
            Cookie cookie = var3[var5];
            if (StringUtils.equals(cookieName, cookie.getName())) {
              return cookie;
            }
          }
        }
        return null;
      }
    }
  }
}

Hello, I am an enthusiastic Adobe Community Advisor and a seasoned Lead AEM Developer. I am currently serving as an AEM Technical Lead at MNPDigital.ca, bringing over a decade of extensive web engineering experience and more than eight years of practical AEM experience to the table. My goal is to give back to the AEM Full Stack Development community by sharing my wealth of knowledge with others. You can connect with me on LinkedIn.

4 thoughts on “Get Cookie Example of AEM Servlet and Sling Model

    1. Hi there, sorry, I don’t have time to share you HTL code, but how this will work is that if you have a Sightly FE component, which will be rendered apart of the HTML (cached in the dispatcher), I would create JavaScript which will make an aJax call to the AEM servlet, and then use JS to render HTML elements on the page.

    1. It does not get cached if you call it from a servlet. When calling it from a component, and the page is cached, yes thats true. The rendered HTML will be cached apart of the page.

Leave a Reply

Your email address will not be published. Required fields are marked *


Back To Top