${valuename}用于取得Request,Session,Application或Page范围变量的值,相当于xxx.getAttribute("valuename")。
像<c:set var="valuename" value="..." scope="..."/>的值,因为保存在某个范围中,所以可以用${valuename}取的。
但是像如下的片段:
<%
   float price = 1+2;
%>
不能用用${price}取得,因为变量price并没有保存在某个范围中,不能说它是page范围的。 可以用<%=price %>取的。
<%=...=%>不但能取得“范围变量”的值,也能取得像price的值,它的表达能力更强,只是有些地方用${...}更方便。
上面的理解有问题吗,请指教!
  

解决方案 »

  1.   

    ${...}支持脚本,使用它的JSP更容易维护,<%...%>和<%=...%>相当于内嵌Java代码(虽然JSP是认为Java代码内嵌HTML),如果Java代码逻辑复杂的话,导致的后果是开发人员会晕,即使当时是自己写的,:)
      

  2.   

    <% %> 等同于java代码,需要什么都得自己拿到,比如想显示session里面的东西,得
    <%
      String str = (String)session.getAttribute("myString");
      out.println(str);
    %>
    或者再
    <%=str%>而${} 就是为了简化从 page,request,session,application 拿到数据的操作而作的标签,实际内部执行时,还是得和上面一样先取出来才行。你可以理解成他是一个[ 快捷方式 ] 或者 [批处理], 他替你做了好多事。 
      

  3.   


    呵呵...初学者可能会遇到相同的问题...
    其实${}形式就是所谓的el表达式,用它就可以在jsp页面的内建对象中(例如:page,request,session,application)直接取值来用.而<% %>可以理解为在jsp中加java代码的标签,就是在这里面你可以写java代码,在编译器编译成java源代码时会原封不动的copy到servlet的service方法中,而像<%= %>在编译成源代码时会时编译成类似out.print()之类的放在service方法的相应地方.我再申明一点,每个jsp页面都将被编译成一个servlet类...
      

  4.   

    ${}中放的就是application、session、request、page等对象中的属性名称。
      

  5.   

    ${...}支持脚本,使用它的JSP更容易维护,${}形式就是所谓的el表达式,用它就可以在jsp页面的内建对象中(例如:page,request,session,application)直接取值来用. 
    <%   %>   等同于java代码,需要什么都得自己拿到,<%   %> 可以理解为在jsp中加java代码的标签,就是在这里面你可以写java代码.
    一般来讲,尽量不要在JSP页面中加如过多的<% %>.
      

  6.   

    呵呵... 初学者可能会遇到相同的问题... 
    其实${}形式就是所谓的el表达式,用它就可以在jsp页面的内建对象中(例如:page,request,session,application)直接取值来用. 而 <%   %> 可以理解为在jsp中加java代码的标签,就是在这里面你可以写java代码,在编译器编译成java源代码时会原封不动的copy到servlet的service方法中,而像 <%=   %> 在编译成源代码时会时编译成类似out.print()之类的放在service方法的相应地方. 我再申明一点,每个jsp页面都将被编译成一个servlet类...
    完全正确,呵呵