JSP学习教程:JSP标签JSTL
JSP标签JSTL
1.JSTL介绍
JSTL:JAVA Server Page Standard Tag Library。JSP标准标签库。
目的:实现JSP页面无JAVA脚本。
tld文件用于描述标签库的配置文件。
2.配置JSTL
① 导入JSTL的JAR包。
② 进行指令的配置
<%@ taglib prefix="" uri="" %>
其值来自于jstl JAR包中MEAT-INF下。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
3.使用
① 设置值
==pageContext.setAttribute(“i”,1)
② 获取值
${i }
③ 移除值
④ 捕获异常
<%int i = 5/0; %>
${excep }
${excep.message }
⑤ 切割
${st }
⑥ 数字循环
${i }
⑦ 判断
⑧ IF...ELSE
⑨ 循环遍历
⑩ 综合
List Emp emp = new Emp(); emp.setEname("ABC"); Emp emp1 = new Emp(); emp1.setEname("BCD"); Emp emp2 = new Emp(); emp2.setEname("CDE");
emps.add(emp); emps.add(emp1); emps.add(emp2);
request.setAttribute("emps",emps); request.getRequestDispatcher("/jstl/jstl2.jsp") .forward(request, response); |
|
4.Sql标签
5.格式化标签
格式化时间:
pattern="yyyy-MM-dd HH:mm:ss"/> 另外也可以借助timeStyle属性: 格式化数字: 6.函数标签 Ø fn:contains判断在某一字符串中是否包含指定的子字符串 Example:${fn:contains("Hello","H")} Ø fn:containsIgnoreCase依上,只是不再区分大小写 Ø fn:startsWith是否已某字符串开头 Ø fn:endsWith Ø fn:indexOf判断子字符串在原字符串中出现的位置 Ø fn:split用于将一个字符串分割 Ø fn:join已某字符连接 Ø fn:replace使用新字符串替换原有字符串中的某一段子字符串 Ø fn:trim Ø fn:substring用于从原有字符串截取一个子字符串 Ø fn:substringAfter获取截取指定字符串之后的所有字符 Ø fn:substringBefore与上相反 Ø fn:toUpperCase将所有字母转为大写 Ø fn:length ${fn:length("abc")} =====3 7.自定义标签 自定义标签是显示设计的,用于在JSP页面中添加功能。 目的:做类似于JSTL的标签。 步骤: 1.写标签的配置文件,tld文件 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"> 2.写标签的实现类,继承TagSupport public class MyTag extends TagSupport { } 3.页面引入 <%@ taglib prefix="my" uri="http://www.120.com" %> 4.实现JAVA代码 setPageContext:设置page的上下文,通过PageContext可以获取request、out等对象。 setAttribute:设置tld文件中标签描述的属性。 doStartTag:标签开始处理事情 SKIP_BODY:标签内的文本忽略不输出 EVAL_BODY_INCLUDE:标签中的文本内容能输出 doEndTag:标签结束处理事情 EVAL_PAGE:继续执行页面剩下的HTML SKIP_PAGE:跳过整个JSP页面后面的输出,后面的输出会被截断。 public class MyTag extends TagSupport { private JspWriter out ; private String msg ; public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } @Override public void setPageContext(PageContext pageContext) { this.out = pageContext.getOut(); } @Override public int doStartTag() throws JspException { try { out.print("你好,"+msg+""); } catch (IOException e) { e.printStackTrace(); } return SKIP_BODY; } @Override public int doEndTag() throws JspException { return EVAL_PAGE; } } 5.告诉系统tld文件所在的位置,用于系统的加载。 作业:实现多语言翻译。有一个翻译表,里面存放中英文翻译,要求提供翻译标签,提供属性值为中文,此时将打印英文的输出结果。 注意: rtexprvalue 用于设置自定义标签是否能是否EL表达式 body-content:值为empty表示标签中不能包含文本内容 值为jsp表示标签中可以包含文本内容