九个内置对象
*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. [C++]内存字节对齐

    当我们写一个class类,然后sizeof(),然后发现这个值往往比你想象的大,这是为什么呢?这里就要讲到内存对齐的问题. 先来看一下内存对齐的几条原则: 1.对于class(struct/union ...

  2. DevExpress TreeList 那些事儿

    1:TreeList绑定数据源 当我们给予TreeList 的 parentFieldName 和 KeyFieldName 两个属性之后 会自动的生成树结构. 1 var sql = @" ...

  3. 什么是Nib文件?(Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口)

    Nib文件是一种特殊类型的资源文件,它用于保存iPhone OS或Mac OS X应用程序的用户接口.Nib文件是Interface Builder文档.通常您会使用Interface Builder ...

  4. 用Stopwatch类获得程序运行时间

    我们可以用Stopwatch类获得程序的运行时间,在优化代码时,可以用此方法来查看优化前后程序所耗费的时间 //Stopwatch类別在System.Diagnostics命名空间里 Stopwatc ...

  5. POJ 3150 Cellular Automaton(矩阵乘法+二分)

    题目链接 题意 : 给出n个数形成环形,一次转化就是将每一个数前后的d个数字的和对m取余,然后作为这个数,问进行k次转化后,数组变成什么. 思路 :下述来自here 首先来看一下Sample里的第一组 ...

  6. Windows PAE 寻址

    PAE 就是物理地址扩展.我们常规的寻址方式是之前的将虚拟地址化为10 10 12的方式来寻址页目录,页表,页偏移,但是在开始PAE之后的寻址方式发生了改变,将32位的虚拟地址转化成 2 9 9 12 ...

  7. 使用dnsmasq快速搭建内网DNS

    背景介绍公司有一批测试服务器,之间希望通过自定义的域名进行访问,这样比较方便,但每个人每台机器都维护一个hosts的话会非常麻烦,于是想搭建一个内部的DNS服务器,对自定义的域名进行解析,同时缓存公网 ...

  8. android-non-ui-ui-thread-communications-part-5-5

    This is the last post in my series regarding Android thread communications.  Parts 1 through 4 are l ...

  9. java内存模型优化建议

    八.Java编程建议 根据GC的工作原理,我们可以通过一些技巧和方式,让GC运行更加有效率,更加符合应用程序的要求.一些关于程序设计的几点建议: 1)最基本的建议就是尽早释放无用对象的引用.大多数程序 ...

  10. iOS开发--单例模式

    单例模式在iOS开发中可能算是最常用的模式之一了,但是由于oc本身的语言特性,想要写一个正确的单例模式相对来说比较麻烦,这里我就抛砖引玉来聊一聊iOS中单例模式的设计思路.关于单例模式更多的介绍请参考 ...