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

JSP学习教程:JSP标签JSTL

2015-3-19编辑: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.使用

① 设置值

"i" value="1" >

==pageContext.setAttribute(“i”,1)

② 获取值

 ${i }

③ 移除值

"i"/>

④ 捕获异常

"excep">

        <%int i = 5/0; %>

   

    ${excep }

    ${excep.message }

⑤ 切割

";" var="st" >

        ${st }

   

 

⑥ 数字循环

"1" end="10" step="1" var="i">

            ${i }

 

⑦ 判断

        "当前无记录!">

 

⑧ IF...ELSE

      

           "1+1!=2!">

      

      

           "1+1==2!">

      

 

 

⑨ 循环遍历

"emp">

                   

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

                   

                       

                   

               

           

       

   

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

 

4.Sql标签

5.格式化标签

格式化时间:




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文件

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

   

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

"120">

 

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(免长途费)