[TOC]
  1. jsp 头部的 page 指令
    i. language 属性
    ii. contentType 属性
    iii. pageEncoding 属性
    iv. import 属性
    v. autoFlush 属性
    vi. buffer 属性
    vii. errorPage 属性
    viii. isErrorPage 属性
    ix. session 属性
    x. extends 属性
    2.jsp中的脚本
    1>
    <%!
    这个格式内部可以写全局变量,静态代码块,方法,内部类,作用是将他们定义出来
    %>
    2>
    <%=
    这个格式内可以写_jspService方法中的任何对象,作用是将他们输出到页面
    %>
    3>
    <%
    这个格式内可以写任何Java语句,但他们必须可以合法的写在_jspService方法内部,
    作用是将他们写在_jspService方法内部
    %>
    3.jsp中的注释
    1>

    2>
    <%
    /
    这是Java注释,会被翻译到Java源代码
    /
    %>
    3>
    <%—
    这是jsp注释,会真正注释掉jsp中的代码
    —%>
    4.jsp中的九大内置对象
    1>request 请求对象
    2>response 响应对象
    3>pageContext jsp的上下文对象
    4>session 会话对象
    5>application ServletContext对象
    6>config ServletConfig对象
    7>out jsp输出流对象
    8>page 当前jsp对象
    9>exception 异常对象
    其中
    request(HttpServletRequest), 一次请求有效
    pageContext(PageContextImpl), 当前jsp页面有效
    session(HttpSession), 一次会话范围有效(打开浏览器到关闭浏览器是一次会话)
    application(ServletContext) 整个web工程范围有效(web工程不停止,一直有效)
    是域对象
    域对象是可以像Map一样存取数据的对象.
    四个域对象的不同处是他们的数据存取范围.
    5.jsp中的包含
    1>静态包含
    <%@ include file=”/被包含的页面.jsp%>
    静态包含只是把被包含的页面拷贝进来执行输出
    2>动态包含

    a.动态包含会把包含的页面翻译为Java代码
    b.底层实现是执行以下代码来调用被包含的页面输出:
    JspRuntimeLibrary.include(request,response,”/被包含的页面.jsp”,out,false);
    c.动态包含还可以传递参数


    6.EL表达式
    ${“key”}
    直接输出value
    其中key的来源是域对象,而且优先取最小的域对象
    (注意,EL中获取key的值时,不是去找key这个属性,而是去找getKey这个方法)
    7.EL表达式做运算
    可以做算数运算与逻辑运算
    形如${5 == 5}或则${5 eq 5} 返回值为Boolean
    大于,小于,等于,不等于,大于等于,小于等于,与,或,非
    形如${12 + 12} 返回值为运算结果
    加减乘除,求模,取余,其中除法运算符还可以是div,并且结果是小数
    empty运算,为空返回true
    以下几种为空:
    1>null
    2>字符串为空串
    3>Object类型数组长度为0
    4>List集合元素个数为0
    5>Map集合元素个数为0
    8.EL表达式的11个隐含对象
    变量 类型 作用
    pageContext PageContextImpl 获取jsp的九大内置对象
    pageScope Map 获取pageContext域中的数据
    requestScope Map 获取Request域中的数据
    sessionScope Map 获取Session域中的数据
    applicationScope Map 获取ServletContext域中的数据
    param Map 获取请求参数的值
    paramValues Map 获取请求参数的多个值
    header Map 获取请求头的信息
    headerValues Map 获取请求头的多个信息
    cookie Map 获取当前请求的Cookie
    initParam Map 获取web.xml中参数
    9.JSTL
    五个不同的标签库
    核心库 http://java.sun.com/jsp/jstl/core c
    格式化 http://java.sun.com/jsp/jstl/fmt fmt
    函数 http://java.sun.com/jsp/jstl/functions fn
    数据库 http://java.sun.com/jsp/jstl/sql sql
    XML http://java.sun.com/jsp/jstl/xml x
    引入方法:
    先导库,然后导入
    <%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core“ %>
    经典语法:









    ${i}


    ${item}

    10.文件上传下载
    有form标签
    form标签的entype属性为multipart/form-data,method为post
    form标签中使用input type=file
    编写服务器代码接受
    11.commons-fileupload.jar和commons-io.jar包中,常用的类
    ServletFileUpload 类,用于解析上传的数据。
    FileItem 类,表示每一个表单项。
    boolean ServletFileUpload.isMultipartContent(HttpServletRequest request);
    判断当前上传的数据格式是否是多段的格式。
    public List parseRequest(HttpServletRequest request)
    解析上传的数据
    boolean FileItem.isFormField()
    判断当前这个表单项,是否是普通的表单项。还是上传的文件类型。
    true 表示普通类型的表单项
    false 表示上传的文件类型
    String FileItem.getFieldName()
    获取表单项的 name 属性值String FileItem.getString()
    获取当前表单项的值。
    String FileItem.getName();
    获取上传的文件名
    void FileItem.write( file );
    将上传的文件写到 参数 file 所指向硬盘位置
    12.文件的上传
    判断是否是多端数据
    创建FIleItemFactory工厂实现类
    创建用于解析上传的数据的工具ServletFileUpload
    解析上传的数据,得到每一个表单项FileItem
    是否是普通表单项
    否,写到文件目录
    13.文件的下载
    1.获取要下载的文件名
    2.读取要下载的文件内容
    3.把下载的文件内容传给客户端
    4.回传前,通过响应头告诉客户端返回的数据类型
    5.还要告诉客户端收到的数据是用于下载使用
    14.横屏检测