Java Server Pages¶
JSP¶
page directive¶
// Set encoding of the response
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ page errorPage="errorpage.jsp" %>
<%@ page isErrorPage="true" %>
// To set the source encoding of the page itself
<%@ page pageEncoding="UTF-8" %>
Import classes in JSP¶
<%@ page import="java.util.List" %>
<%-- If you want to import multiple classes --%>
<%@ page import="package1.myClass1,package2.myClass2,....,packageN.myClassN" %>
JSTL¶
if¶
<c:if test="${empty someFlag}">
...
</c:if>
<!-- not case -->
<!-- can also be done !empty -->
<c:if test="${not empty someFlag}">
...
</c:if>
For testing null and boolean property
<c:if test="${isDataSet != null && isDataSet}">
<!-- Do something if isDataSet is available and set to true -->
</c:if>
if else / choose¶
<c:choose>
<c:when test="${condition1}">
...
</c:when>
<c:when test="${condition2}">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
Conditional operator (?)¶
<c:out value="" />
Get index in forEach 002¶
<c:forEach items="${itemsList}" var="item" varStatus="loop">
<p>Item: ${item} had Index: ${loop.index}</p>
</c:forEach>
Iterate Map 001¶
For accessing Map<Key, Value>
<c:forEach items="${list}" var="map">
<c:forEach items="${map}" var="entry">
Key: ${entry.key}<br>
Value: ${entry.value}<br>
</c:forEach>
</c:forEach>
empty operator 003¶
1.10 Empty Operator - empty A
The empty operator is a prefix operator that can be used to determine if a value is null or empty.
To evaluate empty A
If A is null, return true
Otherwise, if
A
is the emptystring
, then returntrue
Otherwise, if
A
is an emptyarray
, then returntrue
Otherwise, if
A
is an emptyMap`, return ``true
Otherwise, if
A
is an emptyCollection
, returntrue
Otherwise return
false
EL not being evaluated¶
If Expression Languages is not being evaluated and getting the same expression. Need to set isELIgnored="false"
This can be set at page level or in web.xml for entire web application.
Templating using Tag files¶
Tag declaration
<%@ taglib tagdir="/WEB-INF/tags/my" prefix="my" %>
Here my
can be whatever you want
Tag structure
<prefix:name [attribute=value] ... />
<% -- OR --%>
<prefix:name [attribute=value] ... />
// Any body element nested within the tag
</prefix:name>
Here prefix
is user assigned namespace
Tag files need to have suffix/extension
.tag
Can only be placed in
/WEB-INF/tags/
TLD is not mandatory for tag files. But, are recommended
if the tag file name is
userdetail.tag
then the tag name isuserdetail
request, session, application had same scope as the page invocking the tag
A fresh, clean page scope is setup for each invocation of the tag, and does not affect the invoking JSP page
example:
<%@ taglib prefix="my" tagdir="/WEB-INF/tags/m" %>
<my:sample />
Here <my:sample />
refers to /WEB-INF/tags/m/sample.tag