I’ve done some php dev and the big trend in this language is using things like smarty or other template engine.
It usually roughly runs as follows :
load the template as a regular string,
look for its {tags}
replace each {tag} with the result of some code.
cache page with input parameters
render resulting page.
(sometimes add some OO principles such as template becomes an object…)
When I look at jsp, I see usage of scriplets, taglibs with complicated things like
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ page import="ghhghjjgj"%>
then :
<logic:if>some html </logic:if>
or worse :
<%= if (blabal) {%>
some html
<%}else ...%>
and so forth.
Okay, tiles enables me to glue together some jsp pages together which is really handy (like the include in php, sort of)
It seems to me that the php approach is much better in the way that :
- It totally separates gui and model processing.
-It’s easier to change the pages content when you are working on the behind part,
you’re in a real java class with no complicated stuff like % @ <%=. (who said
code behind ala C# 😉 ?)
The C# approah is very interesting as well but I just want to adress the template part in my question and not start any C# Vs Java Troll war.
I do not also want to say php is better.
I just want to know why there is not a well installed templating engine in java and why we still use scriplets/taglibs.
So I guess I must be missing something.
Can some Java EE Web expert show me the flaws of my reasoning?
J2EE became Java EE a long time ago. Drop the “2”.
No one should use scriptlets. It’s 1999 technology. If you’re seeing it in books, it’s because the books are old. There’s not a lot of good reasons for writing another servlet/JSP book now.
Custom tag libraries have fallen out of favor. JSTL is the standard. It’s unlikely that you’ll need more than that.
Templating is common – have a look at Velocity. One project I’m working on uses it exclusively for streaming HTML to the browser.