简述:

相比 jsp1.2 ,jsp 2 主要增加了以下特性:

  • 直接配置JSP属性
  • 表达式语言
  • 简化的自定义标签API
  • Tag 文件语法

要使用JSP2 语法,其web.xml 文件须使用Servlet 2.4 以上的版本配置。
如:

<!-- 不再使用DTD,而用Schema 描述 -->
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <!-- servlet 3.1 规范对应 jsp 2.3-->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

配置JSP属性:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    <jsp-config>
        <jsp-property-group>
            <!--指定该组配置对哪些文件生效-->
            <url-pattern>*.jsp</url-pattern>
            <!--是否忽略EL表达式,true表示忽略-->
            <el-ignored>true</el-ignored>
            <!--页面编码字符集,可以替代每个页面里page指令 contentType属性的charset部分-->
            <page-encoding>GBK</page-encoding>
            <!--是否允许使用脚本,true表示不允许-->
            <scripting-invalid>true</scripting-invalid>
            <!--隐式导入页面头,这两个文件依然是JSP文件,只是修改了后缀而已-->
            <include-prelude>top.jspf</include-prelude>
            <!--隐士导入页面尾,可以代替在每个页面里使用include编译指令来包含其他页面。-->
            <include-coda>bottom.jspf</include-coda>
        </jsp-property-group>
    </jsp-config>
</web-app>

在jsp2.0之前是默认不启用EL表达式的,可以使用<%@ page isELIgnored=”false”%>来启用,但在jsp2.0后,默认启用了EL表达式。

EL表达式

表达式语言并不是一种通用的程序语言,而仅仅是一种数据访问语言,可以方便的访问应用程序数据,避免使用JSP脚本。

1、EL表达式支持算术运算符、逻辑运算符

如:${1.2+2.3} 、${(1==2)?3:4} 
如果需要在支持表达式的页面中正常输出"$",需要添加转义字符"\"

el表达式不仅可以实现在数字之间的比较,还可以在 字符 和 字符 间比较,字符串的比较是根据其对应的Unicode 值 进行比较。

EL 表达式 11 大内置对象
使用el表达式可以直接 获取请求参数值,可以获取页面中JavaBean 的指定属性值,获取请求头 ,以及 page、request、session、application 范围的属性值等。

  • pageContext : 代表该页面的pageContext 对象,与jsp的pageContext 内置对象相同。
  • pageScope : 用于获取page 范围的属性值
  • requestScope : 用于获取requestScope 范围属性值。
  • sessionScope : 用于获取sessionScope 范围属性值
  • applicationScope :用于获取applicationScope 范围属性值
  • param :用于获取请求参数值
  • paramValues:获取请求参数值,与param不同的是,该对象用于获取属性值为数组的属性值
  • header : 用于获取请求头的属性值
  • headerValues :获取请求头参数值,与header不同的是,该对象用于获取属性值为数组的属性值
  • initParam :用于获取web 应用的初始化参数
  • cookie : 用于获取指定cookie的值。

el除了使用基本的运算符之外,还可以自定义函数。自定义函数的开发非常类似于自定义标签的开发,区别在于 自定义标签直接在页面上生成输出,而自定义函数则需要在表达式中使用。

el中函数的本质是: 提供一种语法允许在el中调用某个类的静态方法;就是将指定的java类的静态方法暴露成可以在el中使用的函数,所以该处理方法必须用 public static 修饰。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐