中华考试网·阅读新闻
编程开发 > JSP > 文章内容

JSP编程教程:JSP标签JSTL

2015-10-5编辑:ljnbset

一、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

   

   

   

   

   

   

 

 

⑨ 循环遍历

  

   ${emp.ename }

  

 

⑩ 综合

List emps = new ArrayList();

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);

 

  

  

  

  

  

  

  

  

  

  

  

  

  

  

  

    

  

  

  

姓名
当前无记录
${emp.ename }

 

4.Sql标签

5.格式化标签

格式化时间:

" type="date"/>

" type="time"/>

" type="both"/>

pattern="yyyy-MM-dd HH:mm:ss"/>

 

另外也可以借助timeStyle属性:

输出全部信息

显示上午还是下午几点几分

显示几点几分几秒

显示上午还是下午几点几分几秒

显示07-4-24

显示2007-4-24

显示2007年4月24日

 

格式化数字:


 

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">

    

  JSTL 1.1 core library

  JSTL core

  1.1

  my

  http://www.120.com

 

 

  

    hello

    tag.MyTag

    JSP

    

        msg

        true

        false

    

  

 

 

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文件所在的位置,用于系统的加载。

 

  

   http://www.120.com

   /WEB-INF/myTag.tld

  

  

 

作业:实现多语言翻译。有一个翻译表,里面存放中英文翻译,要求提供翻译标签,提供属性值为中文,此时将打印英文的输出结果。

 

注意:

rtexprvalue  用于设置自定义标签是否能是否EL表达式

body-content:值为empty表示标签中不能包含文本内容

 值为jsp表示标签中可以包含文本内容

JSP编程教程:EL表达式
咨询热线:4000-525-585(免长途费)