在说 SpringMVC 之前 , 先说一说 JSTL(jsp 标准模板库 ) EL 表达式 , 因为具体的例子是用 JSTL EL 表达式完成的 .
 
一.   JSTL
因为没有下到 jstl, 那么该怎么去找 JSTL ? eclipse 可以生成 , struts(struts-blank) 里也可以找到 .
1.       我的 JSTL 容器是 Tomcat, jstl.jar standard.jar,copy 到你工程的 WEB-INF/lib 目录下
2.       然后把那 8 lib 文件再 copy WEB-INF/lib 目录下
3.       然后在 web.xml 中配置 :
< jsp-config >
< taglib >
    < taglib-uri > [url]http://java.sun.com/jstl/fmt[/url] taglib-uri >
    < taglib-location > /WEB-INF/fmt.tld taglib-location >
taglib >
 
< taglib >
    < taglib-uri > [url]http://java.sun.com/jstl/fmt-rt[/url] taglib-uri >
    < taglib-location > /WEB-INF/fmt-rt.tld taglib-location >
taglib >
 
< taglib >
    < taglib-uri > [url]http://java.sun.com/jstl/core[/url] taglib-uri >
    < taglib-location > /WEB-INF/c.tld taglib-location >
taglib >
 
< taglib >
    < taglib-uri > [url]http://java.sun.com/jstl/core-rt[/url] taglib-uri >
    < taglib-location > /WEB-INF/c-rt.tld taglib-location >
taglib >
 
< taglib >
    < taglib-uri > [url]http://java.sun.com/jstl/sql[/url] taglib-uri >
    < taglib-location > /WEB-INF/sql.tld taglib-location >
taglib >
 
< taglib >
    < taglib-uri > [url]http://java.sun.com/jstl/sql-rt[/url] taglib-uri >
    < taglib-location > /WEB-INF/sql-rt.tld taglib-location >
taglib >
 
< taglib >
    < taglib-uri > [url]http://java.sun.com/jstl/x[/url] taglib-uri >
    < taglib-location > /WEB-INF/x.tld taglib-location >
taglib >
 
< taglib >
    < taglib-uri > [url]http://java.sun.com/jstl/x-rt[/url] taglib-uri >
    < taglib-location > /WEB-INF/x-rt.tld taglib-location >
taglib >
jsp-config >
注意此处的 节点 . jsp2.0 新增加的 , 如果没有此节点 , 而使用 就会报错 .
 
4.    jsp 页面中使用 jsp 指令
<%@ taglib=”c” uri=” [url]http://java.sun.com/jstl/core_rt[/url]”%>
我们就可以使用 JSTL .
二. EL 表达式
EL 表达式和 JSTL 一样 , 都是属于 JSP 的技术 .
基本语法格式 ${ 表达式 }, jsp 页面遇到 ${expression} ,JSP 容器的 EL 引擎就解释执行花括号内的表达式 .
  1. EL表达式中可以直接使用属性名来引用存储在各种域范围(page,request,session,application)中的属性.例如:
${user} 等效于 request.getAtrribute(“user”) 返回对象 .
  1. 可以用${javabean.xxx.xxxx}格式来访问javabean对象中属性的属性.以及使用user[0]的形式来访问集合对象.
  2. 可以执行基本的运算.
  3. 可以使用自定义函数.
  4. EL定义了一系列隐含对象,例如pageContext,cooike.
为了防止 javascript 脚本*** , 通常使用 JSTL 标签 来对 EL 输出 .
 
web.xml 文件中可以配置 节点 ( 的子元素 ) 来使 jsp 不支持 EL
       *.jsp
       true
也可以使用 page 指令的 isEgnored 属性来改变 web.xml 配置状态 .page 指令优先级高于 web.xml 里的配置 .
 
       *.jsp
       true
上面的配置是指定 jsp 里不能使用脚本元素 .
 
EL 中的错误处理机制 :
EL jsp 的错误处理就是 , 不提供警告 , 只提供默认值和错误 . 当子表达式有问题的时候 , 就使用默认值代替有问题的值 . 比如 ${javabean.address.city}, 如果 address 里没有 city 属性 , 则输出默认值 ( 什么都不输出 ). 而不是输出 nulll. javabean 里没有 address 属性时 , 浏览器就会抛出异常 .
 
关于 EL, 还有待于补充 .