文档库 最新最全的文档下载
当前位置:文档库 › ch09-EL与JSTL笔记

ch09-EL与JSTL笔记

ch09-EL与JSTL笔记
ch09-EL与JSTL笔记

?EL表达式及其用法

EL表达式的语法格式相当简单,只需以“${”开始,最后以“}”结束即可,具体语法格式如下: ${expression}

在EL表达式中“.”运算符与“[ ]”运算符的作用是等价的

${https://www.wendangku.net/doc/5913777628.html,erObj[0].name}

?EL表达式访问JavaBean中的属性以及嵌套属性和集合对象;

package bean;

public class User {

private String name="tom";

public String getName() {

return name;

}

public void setName(String name) {

https://www.wendangku.net/doc/5913777628.html, = name;

}

public static String staticMethod(){

return"staticMethod";

}

}

${https://www.wendangku.net/doc/5913777628.html,}

?在EL表达式中可以执行关系、逻辑和算术等运算;

${3/2}

?在EL表达式中可以访问JSP内置对象

◆与作用范围有关的EL隐含对象包含有:pageScope、requestScope、sessionScope

和applicationScope

–可以读取使用JSP内置对象pageContext、request、session以及application的setAttribute()方法所设定的对象的数值-----即getAttribute(String name),却不能取得其他相关信息。

–例如,要取得session中储存的一个username属性的值:

session.getAttribute("username")

–在EL中则使用下面的方法:${https://www.wendangku.net/doc/5913777628.html,ername}

思考:${username}访问的是哪个内置对象中的username 属性

◆与输入有关的隐含对象有两个,即param和paramValues

request.getParameter(String name)

request.getParameterValues(String name)

在EL中则可以使用param和paramValues两者来取得数据:${https://www.wendangku.net/doc/5913777628.html,}

elDemo.html

用户名:

elDemo.jsp

${https://www.wendangku.net/doc/5913777628.html,}

${https://www.wendangku.net/doc/5913777628.html,}

elDemo.html

用户名:

爱好:爱好1

爱好2

爱好3

elDemo.jsp

用户名: ${https://www.wendangku.net/doc/5913777628.html,}

爱好: ${paramValues.in[1]}

◆cookie

在cookie中设定了username属性值,可以使用

${https://www.wendangku.net/doc/5913777628.html,ername.value}来取得属性值。

<%

Cookie[] cookies =request.getCookies();

for(Cookie c:cookies){

out.println(c.getName()+":"+c.getValue()+"
");

}

%>

JSESSIONID:${cookie.JSESSIONID.value}

◆header和headerValues

例如${header[“User-Agent”]}

headerValues则用来取得所有的头信息,等价于调用

request.getHeaders()方法。

◆initParam

initParam用来读取设置在web.xml中的参数值。例如${initParam.repeat},等价于:

(String)application.getIni tParameter(“repeat”);

◆pageContext

–pageContext用于取得其他有关用户要求或页面的详细信息${pageContext.request.queryString} 取得请求的参数字符串

${pageContext.request.requestURL} 取得请求的URL,不包括参数字符串

${pageContext.request.contextPath} web application 的名称${pageContext.request.method} 取得HTTP 的方法(GET、POST) ${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)

${pageContext.request.remoteUser} 取得用户名称${pageContext.request.remoteAddr } 取得用户的IP 地址${pageContext.session.new} 判断session 是否为新的${pageContext.session.id} 取得session 的ID ${pageContext.servletContext.serverInfo} 取得主机端的服务信息

?EL表达式还允许开发人员直接调用一个普通Java类中的公共静态方法?JSTL标签库

?JSTL安装

如果要在Java Web应用程序中使用JSTL标签库,必须将jstl.jar 和standard.jar文件添加到环境变量中,或者加载到Web应用程序的WEB-INF/lib目录下。

<%@taglib prefix="c" uri="https://www.wendangku.net/doc/5913777628.html,/jsp/jstl/core"%>

实例

${https://www.wendangku.net/doc/5913777628.html,}

elDemo.html

用户名:

User.java

package bean;

public class User {

private String name;

public String getName() {

return name;

}

public void setName(String name) {

https://www.wendangku.net/doc/5913777628.html, = name;

}

}

elDemo.jsp

property="name"/>

${https://www.wendangku.net/doc/5913777628.html,}

${https://www.wendangku.net/doc/5913777628.html,}

标签

标签

作用:主要用来处理产生错误的异常状况,并且将错误信息储存起来。

主要属性:仅有一个String类型的可选属性var,用于存储错误信息。

语法格式:

欲抓取错误的部分

标签

标签

作用:标签只能用作 的父标签,它本身不能单独使用。

语法格式:

本体内容( )

标签

作用:标签的用途和Java语言中的case语句相似,不同的是标签中也有一个test属性作为条件验证,若条件成立,则执行该标签主体内容。

语法格式:

本体内容

标签

作用:在同一个标签体内,当所有的条件都没有成立时,则执行主体内容,该标签也没有属性。

语法格式:

本体内容

优秀

良好

中等

及格

不及格

语法格式:

集合循环

用户注册


用 户 名:

业余爱好:

看书 

上网 

音乐 

旅游 

体育 

<% request.setCharacterEncoding("utf-8"); %>

用户名:${https://www.wendangku.net/doc/5913777628.html,}

业余爱好:

迭代指定的次数

hello

c:forEach varStatus属性

current当前这次迭代的(集合中的)项

index当前这次迭代从 0 开始的迭代索引

count当前这次迭代从 1 开始的迭代计数

first用来表明当前这轮迭代是否为第一次迭代的标志

last用来表明当前这轮迭代是否为最后一次迭代的标志

begin属性值

end属性值

step属性值

标签

作用:用来浏览某个字符串中所有的成员,并且其成员是由定义符号(delimiters)所分隔的

语法格式:

本体内容

?SQL标签库

◆SQL标签库的taglib:<%@ taglib uri="https://www.wendangku.net/doc/5913777628.html,/jsp/jstl/sql"

prefix="sql" %>

◆主要标签

dataSource="dataSource"

url="jdbcUrl"

driver="driverClassName"

user="userName"

password="password"

var="varName"

scope=”{page|request|session|application}”/>

如:

url="jdbc:mysql://localhost:3306/user"

driver="com.mysql.jdbc.Driver"

user="root"

password=""/>

var="varName"

[scope="{page|request|session|application}"]

[dataSource="dataSource"]

[maxRows="maxRows"]

[startRow="startRow"]>

actions

例:

执行insert,update,delete操作。

[dataSource="dataSource"]

[var="varName"]

[scope="{page|request|session|application}"]>

子标签

例子:

< sql:update var="rs" dataSource="${ds}" sql="delete from t_user

where age=?">

实例:访问mysql数据库服务器中的user数据库中的t_user表

将mysql驱动程序jar包mysql-connector-java-5.1.15-bin.jar复制到WEB-I NF\lib

Sql命名创建

CREATE TABLE t_user (

name varchar(10) default NULL,

pwd varchar(15) default NULL,

age int(11) default NULL

)

添加数据 tom,123,19

jack,456,20

zs,789,19

实例:访问sqlite数据库:WEB-INF/user.db中的t_user表

将sqlite驱动程序jar包sqlite-jdbc-3.8.7.jar复制到WEB-INF\lib

安装并使用sqlite数据库可视化工具SQLiteExpert,创建数据库文件d:\user.db

Sql命名创建

CREATE TABLE t_user (

name varchar(10) default NULL,

pwd varchar(15) default NULL,

age int(11) default NULL

)

添加数据 tom,123,19

jack,456,20

zs,789,19

<% String

url="jdbc:sqlite:"+application.getRealPath("")+"WEB-INF/user.d b"; %>

driver="org.sqlite.JDBC"/>

?自定义标签:

◆创建一个输出Hello的标签

创建自定义标签类HelloTagHandler.java

在WEB-INF\tlds\下创建在标签描述文件 myTags.tld中,并添加HelloTagHandler标签描述

xmlns:xsi="https://www.wendangku.net/doc/5913777628.html,/2001/XMLSchema-instance"

xsi:schemaLocation="https://www.wendangku.net/doc/5913777628.html,/xml/ns/j2ee

web-jsptaglibrary_2_0.xsd"

version="2.0">

1.2

1.2

Forms Taglib

https://www.wendangku.net/doc/5913777628.html,/tags/forms

An example tab library of replacements for the html form tags.

hello

tag.HelloTagHandler

empty

引用自定义标签HelloTagHandler

<%@page language="java"contentType="text/html;

charset=UTF-8"

pageEncoding="UTF-8"%>

<%@taglib prefix="formTags"

uri="/WEB-INF/tlds/myTags.tld"%>

Transitional//EN"

"https://www.wendangku.net/doc/5913777628.html,/TR/html4/loose.dtd">

Hello

◆实例:创建一个自动产生下拉列表框标签

创建自定义标签类SelectTagHandler.java

package tag;

import java.io.IOException;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import javax.servlet.jsp.JspException;

import javax.servlet.jsp.JspWriter;

import javax.servlet.jsp.PageContext;

import javax.servlet.jsp.tagext.DynamicAttributes;

import javax.servlet.jsp.tagext.SimpleTagSupport;

public class SelectTagHandler extends SimpleTagSupport

implements

DynamicAttributes {

private static final String ATTR_TEMPLATE = "%s='%s'";

private static final String OPTION_TEMPLATE = "";

private List optionsList;

private String name;

private String size;

private Map tagAttrs = new HashMap();

public void setName(String name) {

https://www.wendangku.net/doc/5913777628.html, = name;

}

public void setSize(String size) {

this.size = size;

}

public void setOptionsList(List optionsList) {

this.optionsList = optionsList;

}

@Override

public void doTag() throws JspException, IOException { PageContext pageContext = (PageContext) getJspContext();

JspWriter out = pageContext.getOut();

out.print("");

}

@Override

public void setDynamicAttribute(String uri, String name, Object value)

throws JspException {

tagAttrs.put(name, value);

}

}

在标签描述文件 myTags.tld中添加SelectTagHandler标签描述

xmlns:xsi="https://www.wendangku.net/doc/5913777628.html,/2001/XMLSchema-instance"

xsi:schemaLocation="https://www.wendangku.net/doc/5913777628.html,/xml/ns/j2ee

web-jsptaglibrary_2_0.xsd"

version="2.0">

1.2

1.2

Forms Taglib

https://www.wendangku.net/doc/5913777628.html,/tags/forms

An example tab library of replacements for the html form tags.

hello

tag.HelloTagHandler

empty

select

tag.SelectTagHandler

empty

optionsList

true

true

java.util.List

name

true

size

true

true

引用自定义标签SelectTagHandler

<%@page language="java"contentType="text/html;

charset=UTF-8"

pageEncoding="UTF-8"%>

<%@page import="java.util.*"%>

<%@taglib prefix="formTags"uri="/WEB-INF/tlds/

myTags.tld"%>

Transitional//EN""https://www.wendangku.net/doc/5913777628.html,/TR/html4/loose.dtd">

<%@page import="java.util.ArrayList"%>

select

<%

List colorList = new ArrayList(); colorList.add("red");

colorList.add("blue");

colorList.add("white");

request.setAttribute("colorList",colorList); %>

optionsList="${requestScope.colorList}"

style="width:140px"/>

相关文档