<div dir="ltr" style="text-align: justify;">
<div dir="ltr" style="text-align: justify;">
<div dir="ltr" style="text-align: justify;">
<div dir="ltr" style="text-align: justify;">
<div dir="ltr" style="text-align: justify;">
<p>In this tutorial we will discuss about Tiles Framework and its Integration with Struts2. We will add Tiles support to our previous <b><a href="https://dineshonjava.com/2013/08/struts2-spring-3-integration-example.html" target="_blank" rel="noopener">Struts application with Spring 3 that we created in previous parts</a></b>. I strongly recommend you to go through previous articles and download the source code of our sample application.</p>
<h2><b>Introduction to Tiles Framework:</b></h2>
<p>Nowadays, website are generally divided into pieces of reusable template that are being rendered among different web pages. For example a site containing header, footer, menu etc. This items remains same through out the website and give it a common look and feel. It is very difficult to hard code this in each and every webpage and if later a change is needed than all the pages needs to be modified. Hence we use templatization mechanism. We create a common Header, Footer, Menu page and include this in each page.</p>
<p>Tiles Plugin allow both templating and componentization. In fact, both mechanisms are similar: you<br />
define parts of page (a &#8220;Tile&#8221;) that you assemble to build another part or a full page. A part can<br />
take parameters, allowing dynamic content, and can be seen as a method in JAVA language. Tiles is a templating system used to maintain a consistent look and feel across all the web pages of a web application. It increase the reusability of template and reduce code duplication.</p>
<p>A common layout of website is defined in a central configuration file and this layout can be extended across all the webpages of the web application.</p>
<h2><b>Our Application Layout</b></h2>
<p>Our goal is to add Header, Footer, Menu and Body to our <b>Struts2TilesIntegration</b> application. Following will be the layout of the same.</p>
<div class="separator" style="clear: both; text-align: center;"><img src="https://dineshonjava.com/wp-content/uploads/2013/08/struts2-tiles-layout.gif" border="0" /></div>
</div>
<p>There are following tool we need to create this application.<br />
<b>1. Strus2</b><br />
<b>2. Spring Framework</b><br />
<b>3. STS or Eclipse</b><br />
<b>4. Tiles Framework</b></p>
<p>In this example we will using the three frameworks Struts2, Spring Framework and Tiles Framework with Internationalization in one application.</p>
<h3><b>Step 1: Project Structure-</b></h3>
<div class="separator" style="clear: both; text-align: center;"><img src="https://dineshonjava.com/wp-content/uploads/2013/08/1111-1-295x1024.png" border="0" /></div>
<h3><b>Step 2: There are following jars file need to be add</b></h3>
<p><i>commons-beanutils-1.8.0.jar</i><br />
<i>commons-digester-2.0.jar</i><br />
<i>commons-fileupload-1.2.1.jar</i><br />
<i>commons-io-1.3.2.jar</i><br />
<i>commons-lang-2.4.jar</i><br />
<i>commons-lang3-3.1.jar</i><br />
<i>commons-logging-1.0.4.jar</i><br />
<i>commons-logging-api-1.1.jar</i><br />
<i>freemarker-2.3.18.jar</i><br />
<i>javassist-3.0.jar</i><br />
<i>ognl-3.0.4.jar</i><br />
<i>spring-asm-3.0.1.RELEASE.jar</i><br />
<i>spring-beans-3.0.1.RELEASE.jar</i><br />
<i>spring-context-3.0.1.RELEASE.jar</i><br />
<i>spring-core-3.0.1.RELEASE.jar</i><br />
<i>spring-expression-3.0.1.RELEASE.jar</i><br />
<i>spring-jdbc-3.0.1.RELEASE.jar</i><br />
<i>spring-orm-3.0.1.RELEASE.jar</i><br />
<i>spring-tx-3.0.1.RELEASE.jar</i><br />
<i>spring-web-3.0.1.RELEASE.jar</i><br />
<i>spring-webmvc-3.0.1.RELEASE.jar</i><br />
<i>struts2-core-2.3.1.2.jar</i><br />
<i>struts2-dojo-plugin-2.3.15.jar</i><br />
<i>struts2-spring-plugin-2.3.15.jar</i><br />
<i>struts2-tiles-plugin-2.3.15.jar</i><br />
<i>tiles-api-2.0.6.jar</i><br />
<i>tiles-compat-3.0.1.jar</i><br />
<i>tiles-core-2.0.6.jar</i><br />
<i>tiles-jsp-2.0.6.jar</i><br />
<i>tiles-servlet-3.0.1.jar</i><br />
<i>xwork-core-2.3.1.2.jar</i></p>
</div>
<h3><b>Step 3: Struts 2 + Spring + Tiles Plugin</b></h3>
<p>To integrate Struts 2 and Spring, get and include the &#8220;<b>struts2-spring-plugin-xxx.jar</b>&#8221; and &#8220;<b>struts2-tiles-plugin-xxx.jar</b>&#8221; library into your project classpath. As already added above <i><b>struts2-spring-plugin-2.3.15.jar </b></i>and <i><b>struts2-tiles-plugin-2.3.15.jar.</b></i></p>
<h3><b>Step 4: Tiles Listener and Spring Listener </b></h3>
<p>Configure the Spring listener &#8220;<i><b>org.springframework.web.context.ContextLoaderListener&#8221;</b></i> and Tiles Listener <b><i>&#8220;org.apache.struts2.tiles.StrutsTilesListener&#8221;</i></b> in<b><i> web.xml </i></b>file.</p>
<p><b>Configuring Tiles in web.xml</b></p>
<pre class="highlight"><;?xml version="1.0" encoding="UTF-8"?>; 
<;web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">; 
 <;display-name>;Struts2TilesIntegration<;/display-name>; 
 <;welcome-file-list>; 
 <;welcome-file>;user<;/welcome-file>; 
 <;/welcome-file-list>; 
 <;context-param>; 
 <;param-name>; 
 org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG 
 <;/param-name>; 
 <;param-value>; 
 /WEB-INF/tiles-def.xml 
 <;/param-value>; 
 <;/context-param>; 
 <;listener>; 
 <;listener-class>; 
 org.springframework.web.context.ContextLoaderListener 
 <;/listener-class>; 
 <;/listener>; 
 <;listener>; 
 <;listener-class>; 
 org.apache.struts2.tiles.StrutsTilesListener 
 <;/listener-class>; 
 <;/listener>; 
 <;filter>; 
 <;filter-name>;struts2<;/filter-name>; 
 <;filter-class>; 
 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter 
 <;/filter-class>; 
 <;/filter>; 
 <;filter-mapping>; 
 <;filter-name>;struts2<;/filter-name>; 
 <;url-pattern>;/*<;/url-pattern>; 
 <;/filter-mapping>; 
<;/web-app>; 
</pre>
<p>The above code configure Tiles listener in <i><b>web.xml</b></i>. An input configuration file<i><b> /WEB-INF/tiles-def.xml </b></i>is passed as argument. This file contains the Tiles definition for our web application.</p>
<h3><b>Step 4: Create a file</b> <i><b>tiles-def.xml </b></i>in WEB-INF folder and copy following code into it.</h3>
<pre class="highlight"><;?xml version="1.0" encoding="UTF-8" ?>; 
 
<;!DOCTYPE tiles-definitions PUBLIC 
 "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN" 
 "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">; 
 
<;tiles-definitions>; 
 
 <;definition name="mainTemplate" template="/mainTemplate.jsp">; 
 <;put-attribute name="title" value="User Registration Form"/>; 
 <;put-attribute name="header" value="/header.jsp"/>; 
 <;put-attribute name="menu" value="/menu.jsp"/>; 
 <;put-attribute name="body" value="/body.jsp"/>; 
 <;put-attribute name="footer" value="/footer.jsp"/>; 
 <;/definition>; 
 
 <;definition name="alia" extends="mainTemplate">; 
 <;put-attribute name="title" value="Alia Bhatt"/>; 
 <;put-attribute name="body" value="/alia.jsp"/>; 
 <;/definition>; 
 
 <;definition name="madhuri" extends="mainTemplate">; 
 <;put-attribute name="title" value="Madhuri Dixit"/>; 
 <;put-attribute name="body" value="/madhuri.jsp"/>; 
 <;/definition>; 
 
 <;definition name="success" extends="mainTemplate">; 
 <;put-attribute name="title" value="User Added Successfully"/>; 
 <;put-attribute name="body" value="/success.jsp"/>; 
 <;/definition>; 
 
<;/tiles-definitions>; 
</pre>
<p>Here in tiles-def.xml we have define a template <b>mainTemplate</b>. This layout contains attributes such as <b>Header, Title, Body, Menu and Footer</b>. The layout is then extended and new definitions for <b>alia</b>, <b>madhuri</b> and <b>success </b>page is defined. We have override the default layout and changed the content for Body and Title.</p>
<h3><b>Step 5: Creating JSPs</b></h3>
<p>We will define the template for our web application in a JSP file called <b>mainTemplate.jsp</b>. This template will contain different segments of web page (Header, Footer, Menu etc). Create 4 new JSP files <b>mainTemplate.jsp, header.jsp, menu.jsp, body.jsp, madhuri.jsp, alia.jsp, success.jsp and footer.jsp </b>and copy following content in each of them.<br />
<i><b>mainTemplate.jsp</b></i></p>
<pre class="highlight"><;%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>; 
<;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
 "http://www.w3.org/TR/html4/loose.dtd">; 
<;html>; 
 
<;head>; 
<;meta http-equiv="Content-Type" content="text/html; charset=UTF-8">; 
<;title>;<;tiles:insertAttribute name="title" ignore="true">;<;/tiles:insertAttribute>; 
<;/title>; 
<;/head>; 
 
<;body>; 
 <;table border="1">; 
 <;tr>; 
 <;td colspan="2">;<;tiles:insertAttribute name="header">;<;/tiles:insertAttribute>;<;br/>;<;/td>; 
 <;/tr>; 
 <;tr>; 
 <;td>;<;tiles:insertAttribute name="menu" />;<;/td>; 
 <;td>;<;tiles:insertAttribute name="body" />;<;/td>; 
 <;/tr>; 
 <;tr>; 
 <;td colspan="2">;<;tiles:insertAttribute name="footer" />;<;/td>; 
 <;/tr>; 
 <;/table>; 
<;/body>; 
<;/html>; 
</pre>
<p><i><b>body.jsp</b></i></p>
<pre class="highlight"><;%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
 pageEncoding="ISO-8859-1"%>; 
<;%@ taglib prefix="s" uri="/struts-tags"%>; 
<;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">; 
 
<;html>; 
<;head>; 
<;style type="text/css">; 
b{color:navy; background-color: orange;} 
<;/style>; 
<;title>;Struts2-Spring-Tiles integration | dineshonjava.com<;/title>; 
<;/head>; 
<;body>; 
 
 <;h2>;Add User<;/h2>;<;b>; 
 <;s:form action="addUsermenu">; 
 <;s:textfield name="userName" key="user.name" />; 
 <;s:textfield name="userAge" key="user.age" value=""/>; 
 <;s:radio name="userGender" key="user.gender" list="{'Male','Female'}" />; 
 <;s:select name="userJob" key="user.job" list="%{#{'Software':'Software','Hardware':'Hardware','Networking':'Networking','Marketing':'Marketing'}}"/>; 
 <;s:checkboxlist name="userHobbies" key="user.hobby" list="{'Cricket','Football','Drawing','Cooking','Driving','Movie'}" />; 
 <;s:submit key="submit" align="center"/>; 
 <;/s:form>; 
 <;/b>; 
<;/body>; 
<;/html>; 
</pre>
<p><b>header.jsp</b></p>
<pre class="highlight"><;table>; 
 <;tr>; 
 <;td>;<;img src="http://2.bp.blogspot.com/-rBLnvKuVDO0/UWBnJJ4n1yI/AAAAAAAADCQ/Vh_cVJ34JFw/s1600/new-logo.png" />;<;/td>; 
 <;td>;<;h1>;<;span style="background-color: #FFFFcc">;Struts2-Tiles-Spring integration<;/span>;<;/h1>;<;/td>; 
 <;/tr>; 
<;/table>; 
</pre>
<p><b>footer.jsp</b></p>
<pre class="highlight"><;center>;<;p>;<;h2>;Copyright &;copy; 2013 dineshonjava.com<;/h2>;<;/p>; <;/center>; 
</pre>
<p><b>menu.jsp</b></p>
<pre class="highlight"><;%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
 pageEncoding="ISO-8859-1"%>; 
<;%@ taglib prefix="s" uri="/struts-tags"%>; 
 <;a href="<;s:url action="usermenu"/>;">; <;h2>;Add User<;/h2>;<;/a>;<;br>; 
 <;a href="<;s:url action="aliamenu"/>;">;<;h2>;Alia Bhatt<;/h2>;<;/a>;<;br>; 
 <;a href="<;s:url action="madhurimenu"/>;">;<;h2>;Madhuri Dixit<;/h2>;<;/a>;<;br>; 
 
</pre>
<p><b>success.jsp</b></p>
<pre class="highlight"><;%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
 pageEncoding="ISO-8859-1"%>; 
<;%@ taglib prefix="s" uri="/struts-tags"%>; 
<;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">; 
 
<;html>; 
<;head>; 
<;title>;Struts2-Spring-Tiles integration | dineshonjava.com<;/title>; 
<;/head>; 
<;body>; 
 
 <;h2>;List of User<;/h2>; 
 <;ul>; 
 <;li>;User Name : <;s:property value="userName" />;<;/li>; 
 <;li>;User Age : <;s:property value="userAge" />;<;/li>; 
 <;li>;User Gender : <;s:property value="userGender" />;<;/li>; 
 <;li>;User Jobs : <;s:property value="userJob" />;<;/li>; 
 <;li>;User Hobbies : <;s:property value="userHobbies" />;<;/li>; 
 <;/ul>; 
<;/body>; 
<;/html>; 
</pre>
<p><b>madhuri.jsp</b></p>
<pre class="highlight"><;img src="http://www.topnews.in/files/Madhuri-Dixit_10.jpg" height="430" width="500" alt="Madhuri Dixit"/>; 
</pre>
<p><b>alia.jsp</b></p>
<pre class="highlight"><;img src="http://cdntopics.onepakistan.com/wp-content/uploads/2012/10/Alia-Bhatt1.jpg" alt="Alia Bhatt"/>; 
</pre>
<h3><b>Step 6: Register Spring Bean</b></h3>
<p>Register all the Spring’s Beans in the <i><b>applicationContext.xml </b></i>file, the Spring listener will locate this xml file automatically.<br />
<b>applicationContext.xml</b></p>
<pre class="highlight"><;?xml version="1.0" encoding="UTF-8"?>; 
<;beans xmlns="http://www.springframework.org/schema/beans" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:context="http://www.springframework.org/schema/context" 
 xmlns:tx="http://www.springframework.org/schema/tx" 
 xsi:schemaLocation=" 
http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd 
http://www.springframework.org/schema/tx 
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">; 
 
 <;context:component-scan base-package="com.dineshonjava.struts2.bean" />; 
 <;bean id="user" class="com.dineshonjava.struts2.action.UserAction">; 
 <;/bean>; 
 <;bean id="userBean" class="com.dineshonjava.struts2.bean.UserBean">; 
 <;/bean>; 
<;/beans>; 
</pre>
<h3><b>Step 7: Create Action class and User bean.</b></h3>
<p><b>UserAction.java</b></p>
<pre class="highlight">package com.dineshonjava.struts2.action; 
 
import org.springframework.beans.factory.annotation.Autowired; 
 
import com.dineshonjava.struts2.bean.UserBean; 
import com.opensymphony.xwork2.ActionSupport; 
import com.opensymphony.xwork2.ModelDriven; 
 
/** 
 * @author Dinesh Rajput 
 * 
 */ 
public class UserAction extends ActionSupport implements ModelDriven<;UserBean>;{ 
 
 private static final long serialVersionUID = 1L; 
 
 @Autowired 
 private UserBean userBean; 
 
 public String execute() 
 { 
 return "user"; 
 } 
 
 public String addUser() 
 { 
 return "addUser"; 
 } 
 
 @Override 
 public UserBean getModel() { 
 return userBean; 
 } 
 public String alia() { 
 return "alia"; 
 } 
 public String madhuri() { 
 return "madhuri"; 
 } 
 public String user() { 
 return "user"; 
 } 
} 
</pre>
<p>Here userBean property autowired with action class UserAction java it is also powerfull feature of Spring framework.<br />
<b>UserBean.java</b></p>
<pre class="highlight">package com.dineshonjava.struts2.bean; 
 
/** 
 * @author Dinesh Rajput 
 * 
 */ 
public class UserBean { 
 private String userName; 
 private int userAge; 
 private String userGender; 
 private String userJob; 
 private String []userHobbies; 
 public String getUserName() { 
 return userName; 
 } 
 public void setUserName(String userName) { 
 this.userName = userName; 
 } 
 public int getUserAge() { 
 return userAge; 
 } 
 public void setUserAge(int userAge) { 
 this.userAge = userAge; 
 } 
 public String getUserGender() { 
 return userGender; 
 } 
 public void setUserGender(String userGender) { 
 this.userGender = userGender; 
 } 
 public String getUserJob() { 
 return userJob; 
 } 
 public void setUserJob(String userJob) { 
 this.userJob = userJob; 
 } 
 public String[] getUserHobbies() { 
 return userHobbies; 
 } 
 public void setUserHobbies(String[] userHobbies) { 
 this.userHobbies = userHobbies; 
 } 
 
} 
</pre>
<h3><b>Step 8: Modifications in <i>Struts.xml</i></b></h3>
<p>In <i><b>struts.xml</b></i> we defined result tag which maps a particular action with a JSP page. Now we will modify it and map the result with <i><b>Tiles</b></i>. Following will be the content of <i><b>struts.xml </b></i>file.</p>
<pre class="highlight"><;?xml version="1.0" encoding="UTF-8" ?>; 
<;!DOCTYPE struts PUBLIC 
 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
 "http://struts.apache.org/dtds/struts-2.0.dtd">; 
 
<;struts>; 
 <;constant name="struts.enable.DynamicMethodInvocation" value="false" />; 
 <;constant name="struts.devMode" value="true" />; 
 <;constant name="struts.custom.i18n.resources" value="myapp" />; 
 
 <;package name="user" extends="struts-default" namespace="/">; 
 <;result-types>; 
 <;result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />; 
 <;/result-types>; 
 <;action name="user" class="user" method="execute">; 
 <;result name="user" type="tiles">;mainTemplate<;/result>; 
 <;/action>; 
 <;action name="*menu" class="user" method="{1}">; 
 <;result name="user" type="tiles">;mainTemplate<;/result>; 
 <;result name="madhuri" type="tiles">;madhuri<;/result>; 
 <;result name="alia" type="tiles">;alia<;/result>; 
 <;result name="addUser" type="tiles">;success<;/result>; 
 <;/action>; 
 <;/package>; 
 <;/struts>; 
</pre>
<p>Let us check what we did in above file. First of all, we declared a new result type called &#8220;tiles&#8221; as we are now using tiles instead of plain jsp for the view technology. Struts2 has its support for the Tiles View result type, so we create the result type &#8220;<i><b>tiles</b></i>&#8221; to be of the <i><b>&#8220;org.apache.struts2.view.tiles.TilesResult&#8221; </b></i>class.</p>
<p>The <b>struts.xml</b> now defines a new <b>Result </b>type for <b>Tiles</b>. This result type is used in<b> <;result>; </b>tag for different actions. Also note that we have define a new action user. This is just an empty declaration to redirect user to user form page when she clicks Add User link from menu.</p>
<p>Next, we want to say if the request is for /usermenu.action take the user to the mainTemplate tiles page and if the request is for /madhurimenu.action take the user to the madhuri tiles page.</p>
<p>We achieve this using a bit of regular expression. In our action definition, we say anything that matches the pattern &#8220;*menu&#8221; will be handled by this action. The matching method will be invoked in the UserAction class. That is, aliamenu.action will invoke alia() and madhurimenu.action will invoke madhuri(). We then need to map the outcome of the result to the appropriate tiles pages.</p>
<p><b>myapp.properties</b></p>
<pre class="highlight">user.name=User Name 
user.age=User Age 
user.gender=Gender 
user.job=Job Type 
user.hobby=Hobbies 
submit=Add User 
</pre>
<p>Now right click on the project name and click <b>Export >; WAR </b>File to create a War file. Then deploy this WAR in the Tomcat&#8217;s webapps directory. Finally, start Tomcat server and try to access</p>
<p><b>URL <i>http://localhost:8080/doj/user </i></b></p>
<p>This will give you following screen:</p>
<div class="separator" style="clear: both; text-align: center;"><img src="https://dineshonjava.com/wp-content/uploads/2013/08/222222.png" border="0" /></div>
</div>
<p>Fill the user form and click on &#8220;<b>Add User</b>&#8221; button we will get the following page.<br />
<i><b>http://localhost:8080/doj/addUsermenu.action</b></i></p>
<div class="separator" style="clear: both; text-align: center;"><img src="https://dineshonjava.com/wp-content/uploads/2013/08/3333-1.png" border="0" /></div>
<p>Click on the <b>Madhuri Dixit</b> link from menu then we will get the following screen.<br />
<i><b>http://localhost:8080/doj/madhurimenu.action</b></i></p>
<div class="separator" style="clear: both; text-align: center;"><img src="https://dineshonjava.com/wp-content/uploads/2013/08/4444.png" border="0" /></div>
<p>Click on the <b>Aalia Bhatt</b> link from menu then we will get the following screen.<br />
<i><b>http://localhost:8080/doj/aliamenu.action</b></i></p>
<div class="separator" style="clear: both; text-align: center;"><img src="https://dineshonjava.com/wp-content/uploads/2013/08/55555.png" border="0" /></div>
</div>
<h2><b>Download Source Code + Libs</b><br />
<b><a href="https://sites.google.com/a/dineshonjava.com/dineshonjava/dineshonjava/Struts2TilesIntegration.zip?attredirects=0&;d=1" target="_blank" rel="noopener">Struts2Tiles2Spring3Integration.zip</a></b></h2>
<div style="background-color: pink; border-width: thin; text-align: center;"><b><;<;<a href="https://dineshonjava.com/struts2-spring-3-integration-example/">Previous</a> <;<; || <a href="https://dineshonjava.com/struts-2-baby-step-to-learn/">Index </a>|| >;>;<a href="https://dineshonjava.com/struts-2-hibernate-3-integration/">Next</a> >;>;</b></div>
<p> ;</p>
</div>
<div class="wp-post-navigation"> 
									 <div class="wp-post-navigation-pre"> 
									 <a href="https://dineshonjava.com/struts2-spring-3-integration-example/">Previous</a> 
									 </div> 
									 <div class="wp-post-navigation-next"> 
									 <a href="https://dineshonjava.com/struts-2-hibernate-3-integration/">Next</a> 
									 </div> 
									</div>
<script type="text/javascript">
jQuery(document).ready(function($) {
 $.post('https://dineshonjava.com/wp-admin/admin-ajax.php', {action: 'mts_view_count', id: '354'});
});
</script>
Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…
Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…
Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…
Technology has emerged a lot in the last decade, and now we have artificial intelligence;…
Managing a database is becoming increasingly complex now due to the vast amount of data…
Overview In this article, we will explore Spring Scheduler how we could use it by…