一: jsp:
html+ java代码+ jsp 的动作标签:
jsp的三大指令:
(1)page指令:
<%@page %>
language="java"
import="java.util.*" 和 java 代码当中的import 关键字一致: 导入包的。
注意:(1)同一个import 关键字可以导入多个包。 多个包之间使用逗号间隔。
(2)使用多个page 指令, 每个page指令导入一个包:
(3) java.lang.*; 不需要导入
在jsp 当中: 以下四个包不需要手动的导入。
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import java.util.*;
案例:
<%@page import ="java.util.*,java.io.*, java.net.*" %>
等价于:
<%@page import ="java.util.*" %>
<%@page import ="java.io.*" %>
<%@page import ="java.net.*" %>
pageEncoding="UTF-8" :
指定当前页面的编码方式:
contentType="text/html; charset=utf-8" 和 pageEncoding 的值 只需要设置其中一个即可。
isElIgnore ="false";
当前的jsp 页面可以使用EL 表达式。 把值设置为true, 忽略EL表达式的使用。
session="true" 当前的jsp 页面是可以直接使用session 对象:
如果设置为false 。, 当前的jsp 页面不能直接使用:
autoFlush="true" out对象能够自动刷新:
buffer="8kb" 缓冲区默认大小8kb 。
extends="" 指定当前jsp 被翻译成servlet 生成的一个父类:
isThreadSafe="true" 默认当前的jsp页面是线程异步,不安全。 当值设置为false , 此时jsp 页面编程同步。,线程安全的。 默认实现了接口: SingleThreadModel,一般不设置为false,线程安全瞎扯淡
errorPage="error.jsp" 指定全局的错误页面: 当jsp 页面出现异常的时候, 跳转到指定的错误页面。
isErrorPage="false" ; 表明当前的页面不是一个错误处理的页面。 把值设置为true, 表明是一个是错误处理的页面。 错误处理的页面:为true时exception 对象可以直接使用。
-
全局错误页面的处理两种方法:
方法一:<!-- 配置一个错误的全局页面: 根据状态码进行配置: -->
(1)page: 当中指定errorPage="页面";;
(2)在web.xml当中配置:
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error500.jsp</location>
</error-page>
方法二 <!-- 根据错误的类型进行跳转: -->
<!-- <error-page>
<exception-type>java.lang.RuntimeException</exception-type>
<location>/runError.jsp</location>
</error-page> -->
(2)include指令:
<%@include file="" %> 静态包含:
原理: 两个或者是多个jsp 文件 在翻译成servlet文件的时候,合并成一个。 这样包含称之为静态包含。
在编译阶段就合并
例子如下:
最终打印 hellow
包含: 动态包含:
原理: 每一个jsp文件都翻译成一个servlet 文件。 最终是多个servlet 文件共同起作用:
例子如下:
(3)taglib 指令: 导入第三方的标签库:
<%@taglib %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>\
uri: 第三库的地址:
prefix: 前缀名称; 自定义, 建议使用官方提供的c。
二: jsp 的九大内置对象: jsp页面可以直接使用的对象: 考试的话要求能写出来
为什么能够直接使用?
jsp 被翻译成servlet 的时候,tomcat 在service方法当中 给初始化的对象:
pageContext(PageContext):页面上下文对象,它是最后一个没讲的域对象;
内置对象的名称: 内置对象的类型: 备注:
out JspWriter 和servlet 当中PrintWriter 功能一致。
response HttpServletResponse 响应对象:
request HttpServletRequest 请求对象:
session HttpSession session="true" 表明当前的jsp页面可以直接使用session 对象: 设置为 false, session 对象不能直接使用:
application ServletContext 上下文环境对象, 一个应用程序只能有一个:
exception Throwable Throwable 是所有异常的父异常。
config ServletConfig 当前servlet 的配置对象:
page Object 类型: 本质上this 对象, 定义的时候提升为Object 类型:
pageContext PageContext 类型: 页面上下文对象(域对象)
总结:
(1) myeclipse 工具在部署web 应用的时候,会自动加载四个jar 包文件在lib当中。
(2) %@ 之间不能有任何的空格。
(3) 三大指令可以存放在任意的位置, 不一定必须是开头。 习惯性的放在jsp 的开始位置:
(4) 和域对象相关: pageContext request session application(由小到大)
(5)补充用的: config exception page
(6) jsp 页面不能直接使用: session exception