JSPEL

作者在 2010-07-22 17:07:10 发布以下内容

JSP EL

核心作用

减少2JSP页面中的java代码

方便jsp中代码的修改,也方便美工修改页面

例如:${10+10}

<h2>Hello,${user.name}</h2>

运算符

类型

定义

算术型

+-*/=div%=mod

逻辑型

And=&&,or=|,!=not

关系运算型

==eq,!、ne>gt,<=le>=ge<lt

条件型

A?b:c

empty

以上写代,后面的英文可以代替前面的符号

${12 <= 14 }<Br/>

${(3>r) ||(b>3)}

使用jspEl读取jababean属性

类型

示例

对应的调用方法

JavaBean

${user.username}

${user["username"]}

${user['username']}

user.getUsername()

数组

${sport[1]}

sport[1]

List

${address[2]}

address.get(2)

Map

${phone.home}

phone.get('hone')

以上的方法都有三种写,我只写了前一个,

JSP EL的内置对象

pageContext\pageScope\requestScope\sessionScope\applicastionScope

param\paramValues\header\headerValues\cookice\initParam

这里的内置对象不是jsp中的内置对象,而是El的内置对象

但是他们是只可以互换的

<%=session.getAttribute("phone")%>

等价于

${sessionScope.phone};

设定jsp不使用JSP EL

1,在jsp页面中加page(只在当前页)

<%@ page isElgnored="true"%>

2,在整个web应用中

<jsp-conifg>

<jsp-property-group>

<url-pattern>*.jsp</url-pattern>

<el-ignored>true</el-ignored>

</jsp-property-group>

</jsp-config>

jsp中转义$符合

1,在前面加\--------\$

2,加单引号''--------'$'

出现的问题:

  jseEl中不法得到ListMap的值

定制标记库

概述

增加表现层的处理能力

减少jsp文件中的java代码

实例:运行时间

新建一个类(TimerTag)继承TagSupport

定义startend属性

重写doStatrTag(),doEndTag()方法

private long start;

private long end;

@Override

public int doStartTag() throws JspException {

//得到系统的时间

start=System.currentTimeMillis();

return EVAL_BODY_INCLUDE;

}

@Override

public int doEndTag() throws JspException {

end=System.currentTimeMillis()-start;

try {

JspWriter out=pageContext.getOut();

out.println("running time:"+end+"ms");

catch (Exception e) {

throw new JspTagException(e);

}

return  EVAL_PAGE;

}

web-inf中创建tld文件

文件头在tomcat中的\webapps\examples\WEB-INF\jsp2得到

最终内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"

    version="2.0">

<description>A tag library timeel</description>

<!--这里的版本自己可以随便取-->

    <tlib-version>1.0</tlib-version>

    <short-name>SimpleTagLibrary</short-name>

    <!--这是将是要在jsp页面中要写的内容-->

    <uri>/yds.com</uri>

    <tag>

<description>outputs hell.oie</description>

<!--这是标签并没有-->

<name>timer</name>

<!--这里是自定标签的类-->

    <tag-class>com.yds.entity.Timtag</tag-class>

    <body-content>JSP</body-content>

    </tag>

</taglib>

jsp页面中要加一标签头

<%@ taglib prefix="随便写" uri="/yds.com"%>

页面中要用的话就得写

<随便写:timer>要执行的内容</

注意:

  上面的 <

专业文章 | 阅读 1164 次
文章评论,共0条
游客请输入验证码