I was asked in an interview : When do we use servlets and when do we use sling models?
Can someone please help me out with the answer? Thanks!
Solved! Go to Solution.
Views
Replies
Total Likes
@SlingModel:
Sling Models are "pure" POJOs which maps Sling objects (resources, request objects etc.).
They allow you to map resource properties, assign default values, inject OSGi services and much more.
Predominently, if you want to use the property values in Sightly , you can use data-sly-use and call the slingmodel to retrive the property values, while retrieving you can make changes to the values if needed.
We are using @Model annotation to specify that this model class is a Sling Model. Each data member is annotated with @Inject. This class will be mapped to a resource in JCR.
@sling servlet :
Sling servlet can be registered by using paths or resourceType.
2
3
4
5
6
7
8
9
10
11
12
13
|
$.ajax({ type : "GET" , url : '/bin/custom/path' , /*data : { pass your request parameter here, currently we are not passing any data },*/ success : function(data, textStatus, jqXHR) { //write your logic that you need to perform on sucess }, error : function(XMLHttpRequest, textStatus, errorThrown) { //write your logic that you need to perform on error } }); |
@SuppressWarnings
(
"serial"
)
@SlingServlet
(paths =
"/bin/custom/path"
)
public
class
SimpleServlet
extends
SlingSafeMethodsServlet {
}
.
Views
Replies
Total Likes
@arindam6600 A Servlet is used to extend the capabilities of servers that host applications accessed by means of a request-response programming model. In AEM you can extend SlingSafeMethodsServlet for read-only implementation or SlingAllMethodsServlet in order to implement all RESTful operations. Sling Servlets has doGet(..) and doPost() methods.
Sling Models are annotation-driven Java POJOs that facilitate the mapping of data from the JCR to Java variables. In AEM you have Resouces.class and SlingHttpServletRequest.class as adaptable - When using Resource you can access the JCR resource without a UI in mind and when using request you can also access request-info. Sling model has @PostConstruct that gets called when the component is loaded.
Hope this helps!
Views
Replies
Total Likes
@SlingModel:
Sling Models are "pure" POJOs which maps Sling objects (resources, request objects etc.).
They allow you to map resource properties, assign default values, inject OSGi services and much more.
Predominently, if you want to use the property values in Sightly , you can use data-sly-use and call the slingmodel to retrive the property values, while retrieving you can make changes to the values if needed.
We are using @Model annotation to specify that this model class is a Sling Model. Each data member is annotated with @Inject. This class will be mapped to a resource in JCR.
@sling servlet :
Sling servlet can be registered by using paths or resourceType.
2
3
4
5
6
7
8
9
10
11
12
13
|
$.ajax({ type : "GET" , url : '/bin/custom/path' , /*data : { pass your request parameter here, currently we are not passing any data },*/ success : function(data, textStatus, jqXHR) { //write your logic that you need to perform on sucess }, error : function(XMLHttpRequest, textStatus, errorThrown) { //write your logic that you need to perform on error } }); |
@SuppressWarnings
(
"serial"
)
@SlingServlet
(paths =
"/bin/custom/path"
)
public
class
SimpleServlet
extends
SlingSafeMethodsServlet {
}
.
Views
Replies
Total Likes
Views
Likes
Replies
Views
Like
Replies
Views
Likes
Replies
Views
Likes
Replies