CRM and CX Blogs by Members
Find insights on SAP customer relationship management and customer experience products in blog posts from community members. Post your own perspective today!
cancel
Showing results for 
Search instead for 
Did you mean: 
Harish_Vatsa
Active Contributor
1,933

SAP Commerce Controllers play a crucial role in managing the interactions between the frontend and backend of an SAP Commerce website. In simple terms, a controller is a Java class that handles a specific request from the frontend and provides the relevant data or actions to the user.


Let’s understand the concept of controllers in more detail.


What is a Controller and its Functionality?


In the MVC architecture (Model View Controller), a controller acts as an interface between the frontend and the backend. The controller takes in the user input from the frontend and processes it to fetch the necessary data from the database. The data is then transformed and returned to the user in a desired format.


In an SAP Commerce website, multiple controllers are created to handle different types of requests from the frontend like searching for a product, adding a product to cart, updating the cart, and so on. Each controller is associated with a specific URL pattern and handles the requests that match that pattern.


How are Controllers Managed in SAP Commerce?


In an SAP Commerce website, controllers are organized in packages that follow a specific naming convention. The controller package name must start with the prefix “controllers” and be followed by a dot-separated name that describes the functionality of the controllers.


Each controller class must extend the abstract class “AbstractController” and be annotated with the “@Controller” annotation. The “@RequestMapping” annotation is used to define the URL pattern that the controller will handle.


For example, if we want to create a controller that handles the request to view a product page, we will create a class named “ProductDetailsController” in the package “controllers.product”. The class will extend the abstract class “AbstractController” and be annotated with the “@Controller” annotation. The “@RequestMapping” annotation will define the URL pattern that the controller will map to, like “/product/{productCode}”.


What is the Role of Interceptors in Controllers?


Interceptors are another type of Java class in SAP Commerce that intercepts the requests and responses being passed between the frontend and the backend. Interceptors can be used to carry out common tasks like logging, validation, and authentication.


In SAP Commerce, interceptors can be associated with controllers to handle specific types of requests. For example, an authentication interceptor can be associated with a controller that requires the user to be logged in before accessing a particular page.


Conclusion


SAP Commerce controllers are the key to managing the interactions between the frontend and backend of a website. They provide a structured way of handling user input and fetching the necessary data from the database. When used in conjunction with interceptors, controllers provide a powerful tool for creating a robust and secure web application.


 

Please refer the below SAP link for more information on SAP Commerce Controllers:

https://help.sap.com/docs/SAP_COMMERCE_CLOUD_PUBLIC_CLOUD/aa417173fe4a4ba5a473c93eb730a417/96ab213b1...
3 Comments
former_member809910
Participant
Very beautifully summarized. Thanks for the Blog.
Harish_Vatsa
Active Contributor
Thanks for the motivation Neeraj!!
romitchhabra
Participant
0 Kudos
Nice explanation Harish. Few points which I want to add are as follows -

  1. Most of the things mentioned about controllers are not specific to SAP Commerce but for any Spring application. SAP Commerce is also based on Spring.

  2. It is not mandatory to extend AbstractController or for the package to have a prefix "controller". Ex: de.hybris.platform.commercewebservices.core.v2.controller.CartsController.

  3. I think by interceptor, you meant "Filters" which is there for any Servlet based application.


 

Regards,

Romit Chhabra
Labels in this area