?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
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,用于存储错误信息。 语法格式: 作用: 语法格式: 本体内容( 作用: 语法格式: 本体内容 作用:在同一个 语法格式: 本体内容
优秀
良好
中等
及格
不及格
集合循环
用户注册
<% 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属性值
作用:
?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"]> 例: [dataSource="dataSource"] [var="varName"] [scope="{page|request|session|application}"]> 例子: < sql:update var="rs" dataSource="${ds}" sql="delete from t_user where age=?"> sql:update > 实例:访问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"> An example tab library of replacements for the html form tags.
引用自定义标签HelloTagHandler
<%@page language="java"contentType="text/html;
charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="formTags"
uri="/WEB-INF/tlds/myTags.tld"%>
"https://www.wendangku.net/doc/5913777628.html,/TR/html4/loose.dtd">