In other words, the Container takes everything you type between the <%= and %> and puts it in as the argument to a statement that prints to the implicit response PrintWriter out.
When the Container sees this:
<%= Counter.getCount() %>
It turns it into this:
If you did put a semicolon in your expression:
<%= Counter.getCount(); %>
That would be bad. It would mean this:
NEVER end an expression with a semicolon!
<%= neverPutASemicolonInHere %>
<%= becauseThisIsAnArgumentToPrint() %>