一、el函数
*Sun公司提供el函数库
<hr color="blue" size="2"/>
<!-- el函数的应用 -->
${fn:toLowerCase("wQAASDWDdawdwa") }
${fn:toUpperCase("wQAASDWDdawdwa") }
${fn:length("wdawdaw") }
${fn:split("www.it315.org",".") }
${fn:join(arr,".") }
二、自定义函数
*需要在webroot->WEB-INF->新建tld文件,注意两个版本要一致2.0
*配置里tld文件,首先在声明xsi:schemaLocation位置,把前面的一段复制到后面web前面。
然后配置函数:注意函数名称name和signature和静态的java函数三个一致,引入标签库,要重启服务器
<short-name>mydefine</short-name>
<uri>http://www.ayit.cn/12</uri>
<function>
<name>MyPrint</name>
<function-class>com.ayit.fn.FnTest</function-class>
<function--signature>java.lang.String MyPrint(java.lang.String)</function--signature>
</function>
三、自定义标签
*一般使用simpleTag接口完成自定义的标签
-缺点:需要实现所有方法
* 开发步骤
-第一步操作:定义一个java方法实现功能(但是这个方法必须是静态static方法)
-第二步操作:创建一个函数库(也就是一个tld文件,但是这个tld文件需要创建在WEB-INF目录下)
*使用SimpleTagSupport类实现自定义标签的开发
- 开发自定义标签时候,实现接口,或者继承类,下面这些方法会按照一定的顺序自动执行
-- setJspContext(JspContext pc)
- setParent(JspTag parent)
- setJspBody(JspFragment jspBody)
-- doTag() :执行标签
* 练习一:页面输出 hello
-在jsp里面使用<tagdef:print/>,执行会在页面上显示内容 hello
-开发步骤
--第一步操作:创建一个类,继承SimpleTagSupport类
public class tagdef extends SimpleTagSupport{
PageContext pageContext =null;
public void doTag() throws JspException, IOException {
pageContext.getOut().print("hello");
}
public void setJspContext(JspContext pc) {
this.pageContext = (PageContext) pc;
}
}
--第二步操作:创建一个自定义标签库(也就是tld文件,但是这个文件创建在WEB-INF目录下)
<tag>
<name>print</name>
<tag-class>com.ayit.tagdef.tagdef</tag-class>
<body-content>empty</body-content>
</tag>
--第三步操作:在jsp里面使用标签,要引入自定义的标签库
--第四步操作:需要重新启动服务器
-jsp
<tagdef:print/>
* 练习二:输出标签体
- 配置
<tag>
<name>print1</name>
<tag-class>com.ayit.tagdef.tagdef1</tag-class>
<body-content>scriptless</body-content>
</tag>
-tagdef1类
public class tagdef1 extends SimpleTagSupport {
PageContext pageContext = null;
public void doTag() throws JspException, IOException {
JspFragment jspBody = getJspBody();
jspBody.invoke(pageContext.getOut());
}
public void setJspContext(JspContext pc) {
this.pageContext = (PageContext) pc;
}
}
-jsp
<tagdef:print1>
ABCD
</tagdef:print1>
* 练习三:标签后面的所有的内容都不执行
- 配置
<tag>
<name>print2</name>
<tag-class>com.ayit.tagdef.tagdef2</tag-class>
<body-content>empty</body-content>
</tag>
-tagdef2类
public class tagdef2 extends SimpleTagSupport {
public void doTag() throws JspException, IOException {
throw new SkipPageException();
}
}
-jsp
<tagdef:print2/>
* 练习四:实现if标签
- 配置
<tag>
<name>if1</name>
<tag-class>cn.itcast.myc.TestC4</tag-class>
<body-content>scriptless</body-content>
<attribute>
<name>test</name>
<required>true</required>
<type>boolean</type>
</attribute>
</tag>
-tagdef3类
-jsp
<tagdef:print3 test="true">
true
</tagdef:print3>
四、jsp的开发模式
* 有两种
- 模型一:使用的技术jsp+javabean,这种开发模式缺点是在jsp里面写大量java代码,java代码也要和html混合使用,
不利用程序的维护。
- 模型二(也叫做MVC): 使用的技术是jsp+servlet+javabean,每种技术只负责自己应该做的事情,
--jsp负责显示数据
--javabean负责封装和处理数据
--servlet负责管理操作,什么数据显示到什么页面
* 什么是MVC:
- m: 模型,使用的技术是javabean,负责封装数据
- v:视图,使用的技术是jsp,负责显示数据
- c:控制器,使用的技术是servlet,负责管理操作