JSP2——特性

前端之家收集整理的这篇文章主要介绍了JSP2——特性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

新特性

相比JSP1.2,JSP2主要增加了如下新特性

  1. 直接配置JSP属性

  2. 表达式语言

  3. 简化的自定义标签API

  4. Tag文件语法
    需要注意的是:JSP2的新特性,其web.xml文件必须使用Servlet 2.4以上版本的配置文件

配置JSP属性

JSP属性定义使用元素配置,主要包括如下4个方面:

  1. 是否允许使用表达式语言,使用元素确定,默认为false

  2. 是否允许使用JSP脚本,使用元素确定,默认值为false

  3. 声明JSP页面的编码,使用元素确定,配置该元素后,可以替代每个页面里的page指令contentType属性的charset部分

  4. 使用隐式包含,使用元素确定,可以代替在每个页面里使用include编译指令来包含其他页面
    示例:

    
    
    
        
            
                
                /jsp/*
                
                true
                
                utf-8
                
                true
                
                /template/header.jspf
                
                /template/footer.jspf
            
        
    
    

表达式语言

表达式语言是一种简化的数据访问方式,可以避免使用JSP脚本。它支持算术运算和逻辑运算,并且还有内置的对象。使用示例如下所示:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

    
        EL表达式的算术运算和逻辑运算
    
    
        

算术运算和逻辑运算

表达式语言 (4/2)}

表达式语言中的内置对象一共有11个:

  1. pageContext:代表该页面的pageContext对象

  2. pageScope:用于获取page范围的属性

  3. requestScope:用于获取request范围的属性

  4. sessionScope:用与获取session范围的属性

  5. applicationScope:用于获取application范围的属性

  6. param:用于获取请求的参数值

  7. paramValues:用于获取请求的参数值,属性值为数组的情况

  8. header:用于获取请求头的属性

  9. headerValues:用于获取请求头的属性值,属性值为数组的情况

  10. initParam:用于获取Web应用的初始化参数

11. cookie:用于获取指定的Cookie值
使用示例如下所示:

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>

    
        表达式语言——内置对象的使用
    
    
        <%
            request.setCharacterEncoding("utf-8");
        %>
        
<% session.setAttribute("user","张"); Cookie cookie = new Cookie("name","mycookie"); cookie.setMaxAge(24 * 3600); response.addCookie(cookie); %>
计算结果
功能获取请求参数获取请求参数获取请求头的值获取请求头的值获取session的值获取Cookie的值
表达式语言的自定义函数

EL本身只是一种数据访问语言,因此不支持调用方法。如果要进行更复杂的处理,可以通过函数来完成。函数的本质是:提供一种语法允许在EL中调用某个类的静态方法
要在EL中使用函数的话,主要步骤分为3步:

  1. 开发函数处理类:就是一个普通的java类,但需要包含静态方法

  2. 使用标签库定义函数

  3. 在JSP页面的EL中使用函数,先导入标签库,然后再使用
    使用示例如下所示:

定义普通的包含静态方法的java类:


public class StringFunction {
    public static String reverse(String text){
        return new StringBuffer(text).reverse().toString();
    }
}

标签库中进行配置


    reverse
    com.zuobiao.zhang.ELFunction.StringFunction
    java.lang.String reverse(java.lang.String)

在JSP中使用:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="mytag" uri="http://com.zuobiao.zhang/mytaglib" %>

    
        EL表达式中<a href="/tag/hanshu/" target="_blank" class="keywords">函数</a>的使用
    
    
        ${mytag:reverse("hello world")}
    

Tag File支持

Tag File是对自定义标签的简化。以前我们自定义标签时要声明标签处理类,在tld文件中配置,然后再再JSP页面中使用。如果使用了Tag File,那么就不需要定义标签处理类和tld文件了,只需要在JSP页面中直接引用tag文件就可以了。Tag File具有以下5个编译指令:

  1. taglib:用于导入其他标签

  2. include:用与导入其他JSP或者静态页面

  3. tag:类似于JSP文件中的page指令

  4. attribute:用于设置自定义标签属性

  5. variable:用于设置自定义标签的变量,这些变量将传给JSP页面使用
    下边给出示例,首先定义tag文件,如下所示:

<%@tag pageEncoding="UTF-8" import="java.util.List" %>
<%--给标签定义属性--%>
<%@attribute name="bgColor"%>
<%@attribute name="cellColor"%>
<%@attribute name="title"%>
${title} list = (List)request.getAttribute("a"); for (String item : list){%>

Tag File的命名必须遵守如下规则:tagName.tag,即Tag File的主文件名就是标签名,后缀名必须是tag,将该文件放到WEB-INF/tags目录下
在JSP中使用tag file,示例如下所示:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="tags" tagdir="/WEB-INF/tags" %>

    
        tag file的使用
    
    
        <%
            List a = new ArrayList<>();
            a.add("1111");
            a.add("2222");
            a.add("3333");
            request.setAttribute("a",a);
        %>
        
    

下一节咱们探讨下Servlet3.0的新特性

猜你在找的程序笔记相关文章