title: Difference between specifying JSTL <c:set> value via attribute and body
body: <p>I'm trying to figure out if there's any functional difference between these two uses of the JSTL <code>&lt;c:set&gt;</code> tag. Let's assume I have imported some string constants into my JSP page via something like:</p>
  
  <pre><code>&lt;%@ page import="some.package.of.AppConstants"%&gt;
  </code></pre>
  
  <p>So, given the above import directive, what's the difference between these two examples: </p>
  
  <ol>
  <li><p>Specifying the value in <code>value</code> attribute:</p>
  
  <pre><code>&lt;c:set var="SOME_VAR" value="${AppConstants.SOME_CONSTANT}" /&gt;
  </code></pre></li>
  <li><p>Specifying the value in tag body:</p>
  
  <pre><code>&lt;c:set var="SOME_VAR"&gt;
      &lt;%=AppConstants.SOME_CONSTANT%&gt;
  &lt;/c:set&gt;
  </code></pre></li>
  </ol>
  
  <p>Is there any difference in what the value of <code>${SOME_VAR}</code> will be in the second example versus the first example? Would the presence of any special characters in <code>AppConstants.SOME_CONSTANT</code> affect the value of <code>${SOME_VAR}</code> in either of these cases?</p>