EL表达式
${pageContext.request.contextPath}
5.1 EL作用(替代 <%= %>)
语法:
${变量}
3.1 输出普通字符串: ${name}
3.2 输出对象属性: ${student.name} 注意: .name 相当于 .getName()方法
3.3 输出List集合: ${list[0].name } 注意: [0] 相当于 get(下标)方法
3.4 输出map集合: ${map[key].name} 注意: [key]相当于get(key)方法
例如:session.setattrbue(“mp”,map) ${mp.gender} 或者 ${mp["gender"]} 格式 ${域对象中的键.map中的键}
EL表达式作用:向浏览器输出域对象中的变量值或表达式计算的结果!!!
语法: ${变量或表达式}
2 自定义标签
2.2 第一个自定义标签开发步骤
1)编写一个普通的java类,继承SimpleTagSupport类,叫标签处理器类
核心代码PageContext pageContext = (PageContext)this.getJspContext();
HttpServletRequest request =(HttpServletRequest) pageContext.getRequest();
2)在web项目的WEB-INF目录下建立itcast.tld文件,这个tld叫标签库的声明文件。(参考核心标签库的tld文件)
<?xml version="1.0" encoding="UTF-8" ?>
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">
<!-- 标签库的版本 -->
<tlib-version>1.1</tlib-version>
<!-- 标签库前缀 -->
<short-name>itcast</short-name>
<!-- tld文件的唯一标记 -->
<uri>http://gz.itcast.cn</uri>
<!-- 一个标签的声明 -->
<tag>
<!-- 标签名称 -->
<name>showIp</name>
<!-- 标签处理器类的全名 -->
<tag-class>gz.itcast.a_tag.ShowIpTag</tag-class>
<!-- 输出标签体内容格式 -->
<body-content>scriptless</body-content>
</tag>
</taglib>
3)在jsp页面的头部导入自定义标签库
<%@taglib uri="http://gz.itcast.cn" prefix="itcast"%>
4)在jsp中使用自定义标签
<itcast:showIp></itcast:showIp>
2.4 自定义标签处理器类的生命周期
SimpleTag接口:
void setJspContext(JspContext pc) --设置pageContext对象,传入pageContext(一定调用)通过getJspCotext()方法得到pageContext对象
void setParent(JspTag parent) --设置父标签对象,传入父标签对象,如果没有父标签,则不用此方法。通过getParent()方法得到父标签对象。
void setXXX(值) --设置属性值。
void setJspBody(JspFragment jspBody) --设置标签体内容。标签体内容封装到JspFragment对象中,然后传入JspFragment对象。通过getJspBody()方法得到标签体内容。如果没有标签体内容,则不会调用此方法
void doTag() --执行标签时调用的方法。(一定调用)
2.5 自定义标签的作用
1)控制标签体内容是否输出
This.getjspbody().invoke(null) 可以输出标签体的内容
2)控制标签余下内容是否输出
Throw new SkipPageException();
3)控制重复输出标签体内容
For循环控制输出的次数
4)改变标签体内容
StringWriter sw = new StringWriter();
This.getJspbody().invoke(sw);
String str = Sw.tostring(); 取出标签体的内容
String Str3 = Str.tolowerCase() 改变标签体的内容
This.getjspcontext().getout().writer(str3) 输出新的标签体内容