标签模版技术 JSTL 精华一页纸

模版技术采用了EL表达式替换,逻辑控制采用了JSTL

1、循环控制

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<% request.setAttribute("items",new Integer[]{0,1,2,3,4}); %>

${item}

2、条件判断

${item}

升级版的条件判断 -- 其实就是 switch的翻译。

3、其他JSP特性控制

属性设置 – 设置属性的值(request中的属性)

1

删除属性 -- 删除属性

包含文件 类似与 的功能,除了本地文件还可以互联网文件。

模板设置 类似与功能

URL重写

Click here

Click New -- 此处的URL地址既编码了又重写了 url.jsp?firstName=john&lastName=stephone+marbury

4、异常处理

<% int x = 10/0; %>

${myException.message}

Jsp可以在web.xml统一指定异常页面,也可以自己咋page指令中 指定异常处理页面

5、JSTL标签

JSTL 一共有5个标签库

Core核心库,就是上面一些控制

格式化库,各种字符集、时区格式化

XML库 提供一些操作XML的功能

SQL库等 提供直接查询数据库的操作

JSTL的函数等 主要提供一些字符串的处理

url="jdbc:mysql://localhost/TEST"

user="root" password="pass123"/>

SELECT * from Employees;

6、自定义JSTL标签

如果这些都不能满足要求,可以自定义标签库

I、编写 *.tld 标签库文件(实现类啊等一些配置项)

II、jsp taglib指令 引入这个标签库

III、像使用标准库一样使用这个库里的方法

自定义标签二次开发类

I、继承 SimpleTagSupport 类,实现 doTag 方法,如果有方法提,在方法里调用invoke方法,和拦截器/过滤器等类似的考虑。

II、继承TagSupport类,实现doStartTag/doEndTag方法,提供标签开始和结束时的控制;还有BodySupport 类,可以实现精细的处理

III、标签还可以嵌套。

如果需要标签有属性,则类似JavaBean一样,提供类字段,提供setter函数

*.tld

MenuItem tag

MenuItem

foo.MenuItem

-- 有属性时配置

itemValue

true

true

public class MenuItem extends TagSupport{

private String itemValue;

public void setItemValue(String value){

itemValue = value;

}

public int doStartTag(){

return EVAL_BODY_INCLUDE;

}

public int doEndTag(){

Menu parent = (Menu)getParent();

parent.addMenuItem(itemValue);

return EVAL_PAGE;

}

}

public class Menu extends TagSupport{

private ArrayList items;

public void addMenuItem(String item){

items.add(item);

}

public int doStartTag(){

items = new ArrayList();

return EVAL_BODY_INCLUDE;

}

public int doEndTag() throws JspException{

//这里可以对item做处理

return EVAL_PAGE;

}

需要注意的是标记处理器并不能直接访问隐式对象,只能通过jspContext/pageContext进行处理。

你可能感兴趣的:(标签模版技术 JSTL 精华一页纸)