ATG has two JSP tag libraries, DSP and DSPEL. Both have similar syntax but DSPEL allows you to use JSTL.
Here’s a simple comparison of how you would use DSP versue how you would use DSPEL to do a simple RQL query.
DSPEL
<dspel:droplet name="/atg/dynamo/droplet/RQLQueryForEach">
<dspel:param name="repository" bean="/betweengo/Repository"/>
<dspel:param name="itemDescriptor" value="Merchant"/>
<dspel:param name="queryRQL"
value="name EQUALS \"${requestScope['nm']}\""/>
<dspel:oparam name="empty">
No merchant with the name "<c:out value="${requestScope['nm']}"/>".
</dspel:oparam>
<dspel:oparam name="output">
Name: <dspel:valueof param="element.name"/>
</dspel:oparam>
</dspel:droplet>
DSP
<% String query = "name EQUALS \"" + request.getAttribute("nm") + "\"";%>
<dsp:droplet name="/atg/dynamo/droplet/RQLQueryForEach">
<dsp:param name="repository" bean="/betweengo/Repository"/>
<dsp:param name="itemDescriptor" value="Merchant"/>
<dsp:param name="queryRQL" value="<%= query %>"/>
<dsp:oparam name="empty">
No merchant with the name "<%= request.getAttribute("nm") %>".
</dsp:oparam>
<dsp:oparam name="output">
Name: <dsp:valueof param="element.name"/>
</dsp:oparam>
</dsp:droplet>
what is the difference between and