九个内置对象
*out jsp的输出流,用来向客户端响应
*page 当前jsp页面, 它的引用数据类型是Object,即真身中有如下代码 Object page=this;
*config 它对应真身中的ServletConfig对象
*pageContext 一个顶九个,这个重要
*request HttpServletRequest
*response HttpServletResponse
*exception Throwable
*session HttpSession
*application ServletContext

1、pageContext
*一个顶九个
*Servlet中有3大域,而JSP中有四大域,它就是最后一个域对象(域对象一般有setAttribute等)
ServletContext:整个应用程序
session:整个会话(一个会话中只能有一个用户)
request:一个请求链!
pageContext:一个jsp页面!这个域是在当前jsp页面和当前jsp页面中使用的标签之间的共享数据
>域对象
>代理其他域:pageContext.setAttribute("xxx","XXX",PageContext.SESSION_SCOPE);响应的getAttribute和remove
>获取其他8个内置对象
>全域查找:PageContext.findAttribute("xxx");从小到大,依次查找

el表达式
1.jsp内置的表达式语言!
*jsp2.0开始,不让再使用Java脚本,而是使用el表达式和动态标签来替代脚本!
*EL替代的是<%= ... %>,也就是说,el只能做输出!
2、el表达式读取四大域
*${xxx}全域查找名为xxx的属性,如果不存在,输出空字符串而不是null
*${pageScope.xxx}、${pageScope.xxx}、${requestScope.xxx}、${sessionScope.xxx}

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head> <%
request.setAttribute("xxx","requestScope_xxx");
session.setAttribute("xxx","sessionScope_xxx");
pageContext.setAttribute("xxx","pageScope_xxx");
application.setAttribute("xxx","applicationScope_xxx");
%>
<%
/**
el可以实现全局查找功能。查找范围是从小到大.格式为:${属性名}
也可以指定域进行查找${xxxScope.XXX}
*/
%>
<body>
${xxx }<br/>
${pageScope.xxx }<br/>
${requestScope.xxx }<br/>
${sessionScope.xxx }<br/>
${applicationScope.xxx }<br/> </body>
</html>

3、JavaBean导航
3、EL刻意输出的东西都在11个内置对象中!其中10个是map类型,就是pageContext不是map类型
*我们已经学习了四个
*param:对应参数,它是一个Map,其中key是参数名,value是参数值,适用于单值的参数
*paramValues:对应参数,它是一个Map,其中key参数名,value是多个参数值,适用于多值的参数
*header:对应请求头,它是一个Map,其中key表示头名称,value是单个头值,适用于单值请求头
*headerValues:对应请求头,它是一个Map,其中key表示头名称,value是多个头值
*initParam:获取<context-param>内的参数
<context-param>
<param-name>xxx</param-name>
<param-value>XXX</param-value>
</context-param>
<context-param>
<param-name>yyy</param-name>
<param-value>YYY</param-value>
</context-param>
*cookie:Map<String,Cookie>类型,其中key是cookie的name,value是cookie对象
*pageContext:它是PageContext类型!${pageContext.request.contextPath}

el的javabean导航。两种方式得到map中的数据

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.itcast.domain.*" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP '01.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head>
<%
Address add=new Address("北京","西三旗");
Employee em=new Employee("郭大侠",3000,add);
request.setAttribute("em", em);
%>
<body>
${requestScope.em }<br/>
${requestScope.em.address.street } <!-- 相当于em之后使用em.getAddress().getStreet() --><br/>
${em.show }<!-- 这里是得到javaBean对应属性的值而不是Java类的,需要自己理解 -->
</body>
</html>
package com.itcast.domain; public class Address {
private String city;
private String street;
@Override
public String toString() {
return "Address [city=" + city + ", street=" + street + "]";
}
public Address() {
super();
// TODO Auto-generated constructor stub
}
public Address(String city, String street) {
super();
this.city = city;
this.street = street;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
} }
package com.itcast.domain; public class Employee {
private String name;
private double salary;
private Address address;
@Override
public String toString() {
return "Employee [name=" + name + ", salary=" + salary + ", address="
+ address + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public Employee(String name, double salary, Address address) {
super();
this.name = name;
this.salary = salary;
this.address = address;
}
public Employee() {
super();
// TODO Auto-generated constructor stub
}
public String getShow(){
return "haha";
} }

================
EL函数库(由JSTL提供的)
*导入标签库:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
String toUpperCase(String input)
String toLowerCase(String input)
int indexOf(String input,String substring)
boolean contains(String input,String substring)
boolean containsIngnoreCase(String input,String substring)
boolean startsWith(String input,String substring)
boolean endsWith(String input,String substring)
String substring(String input,int beginIndex,int endIndex)
String substringAfter(String input,String substring)
String substringBefore(String input,String substring)
String escapeXml(String input) :将input中“<”、“>”、“'”、“"”等进行转义,可以防止一部分javascript攻击
String trim(String input)
String replace(String input,String substringBefore,String substringAfter)
String[] split(String input,String delimiters)
int length(Object obj):可以获取字符串、数组、各种集合的长度
String join(String array[],String separator)

自定义el函数库
*写一个Java;类,类中可以定义0~N个方法,但必须是static,有返回值的
*在WEB-INF目录下面创建一个tld文件
*在jsp页面中导入标签

package com.itcast.fn;

public class MyFunction {
//该方法必须是静态方法
public static String fun(){
return "传智播客我的第一个自定义标签库";
}
}
<?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>el自定义标签库</description>
<display-name>JSTL functions</display-name>
<tlib-version>1.0</tlib-version>
<short-name>my-function</short-name>
<uri>http://guodaxia.com/itcast/el/functions</uri> <function>
<name>fun</name>
<function-class>com.itcast.fn.MyFunction</function-class>
<function-signature>String fun()</function-signature>
</function> </taglib>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="it" uri="/WEB-INF/tlds/itcast.tld" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'a.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>
<h1>${it:fun()}</h1>
</body>
</html>

jsp内置对象和el表达式的更多相关文章

  1. Jsp内置对象及EL表达式的使用

    一.JSP的内置对象(9个JSP内置对象) JSP的内置对象引用名称 对应的类型 request HttpServletRequest response HttpServletResponse ses ...

  2. JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础

    JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...

  3. jsp内置对象和el表达式内置对象误区

    未经允许禁止转载... jsp九大内置对象 EL表达式隐含的11个对象 隐含对象名称 描       述 pageContext 对应于JSP页面中的pageContext对象(注意:取的是pageC ...

  4. JSP内置对象和EL内置对象

    JSP共有九大内置对象: (1) HttpSession类的session对象作用:主要用于来分别保存每个用户信息,与请求关联的会话:         会话状态维持是Web应用开发者必须面对的问题. ...

  5. Jsp内置对象和EL隐藏(内置)对象

      JSP中的内置对象一共有九个, 由于有的不太常用, 所以总是记不住, 从Sun公司的网站上找到的PDF文档, 把这一部分放在这里, 以备随时查用:     JSP九个内置对象: Implicit ...

  6. JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象

    Day38 JSP JSP的运行过程具体如下: (1)客户端发出请求,请求访问JSP文件. (2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果 ...

  7. EL表达式,JSP内置对象

    基本语法格式 EL都是以 ${ 为起始.以} 为结尾的 ${ EL Expression} 示例: ${ “Helloworld” }  //输出字符串常量 ${ str }  //输出字符串变量st ...

  8. 转:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别

    原文地址:jsp内置对象中page与pageContext与el内置对象pageScope与pageContext区别 首先说明一下jsp9大内置对象 (1)HttpSession类的session对 ...

  9. Java EE JSP内置对象及表达式语言

    一.JSP内置对象 JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象. JSP提供了9种内置对象: (一).request 简述: JSP编程中 ...

随机推荐

  1. 03server平台delphi程序不支持直接调用webservice

    经过多次测试和查证,发现03server平台用delphi7.0开发的应用程序就是不支持直接调用webservice,无论这个webservice是delphi开发的还是C#开发,抑或是java开发的 ...

  2. mysql 事务提交过程

     打开binlog选项后,执行事务提交命令时,就会进入两阶段提交模式.两阶段提交分为prepare阶段和commit两个阶段.流程如下 :这里面涉及到两个重要的参数:innodb_flush_log_ ...

  3. hdu 1250 Hat's Fibonacci(java,简单,大数)

    题目 java做大数的题,真的是神器,来一道,秒一道~~~ import java.io.*; import java.util.*; import java.math.*; public class ...

  4. 制作类似DataGrid自定义控件

    首先看一下.net自带的DataGrid,想想如何应该怎样才能实现那样的展现形式. 1)需要以网格形式显示内容. 2)网格的宽度.高度可以定义. 3)可以显示滚动条. 4)单击可以选中某个单元格. 当 ...

  5. POJ 1936

    #include<iostream> #include<string> using namespace std; int main() { //freopen("ac ...

  6. UVA 562 Dividing coins

    题目描述:给出一些不同面值的硬币,每个硬币只有一个.将这些硬币分成两堆,并且两堆硬币的面值和尽可能接近. 分析:将所有能够取到的面值数标记出来,然后选择最接近sum/2的两个面值 状态表示:d[j]表 ...

  7. 使用时间戳引入css、js文件

    前言 最近在一家创业公司实习,主要负责新版官网和商家平台管理系统的前端开发和维护,每次测试都要上传文件到ftp服务器端测试,初期由于更新修改比较频繁,每次都是直接上传覆盖css.js.php文件,链接 ...

  8. iOS开发工具Xcode:Interface Builder

    简介: Interface Builder(IB)是Mac OS X平台下用于设计和测试用户界面(GUI)的应用程序(非开源).为了生成GUI,IB并不是必需的,实际上Mac OS X下所有的用户界面 ...

  9. ***mysql索引总结----mysql索引类型以及创建

    文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基 ...

  10. strrchr函数

    C语言函数 函数简介 函数名称: strrchr 函数原型:char *strrchr(char *str, char c); 所属库: string.h 函数功能:查找一个字符c在另一个字符串str ...