开发者学堂课程【JSP 快速入门:page 指令】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/33/detail/719
page 指令
page 指令是最为常用的指定,也是属性最多的属性!
page 指令没有必须属性,都是可选属性。
例如 <%@page %>
,没有给出任何属性也是可以的!在 JSP 页面中,任何指令都可以重复出现!
<%@page language="java"%>
<
%@page import="java.util.*2"%
>
<%@page pageEncoding="utf-8"%>
1. page -->最复杂:
<@page language="java" info="xxx"...%>
·pageEncoding和contentType:
> pageEncoding:
它指定当前 jsp 页面的编码,只要不说谎,就不会有乱码!在服务器要把 jsp 编译成. java 时需要使用 pageEncoding!
> contentType:
它表示添加一个响应头:Content-Type!
等同与 response.setContentType("text/html;charset=utf-8");
>如果两个属性只提供一个,那么另一个的默认值为设置那一个。
>如果两个属性都没有设置,那么默认为iso
·import:导包!可以出现多次
·errorPage 和 isErrorPage
> errorPage:当前页面如果抛出异常,那么要转发到哪一个页面,由 errorPage来指定
>isErrorPage:它指定当前页面是否为处理错误的页面!当该属性为 true 时,这个页面会设置状态码为 500!
而且这个页面可以使用 9 大内置对象中的 exception!
我们知道,在一个 ISP 页面出错后,Tomcat 会响应给用户错误信息( 500 页面)!
如果你不希望 Tomcat 给用户输出错误信息,那么可以使用 page 指令的 errorPage,来指定错误页!也就是自定义错误页面,
例如:<%@page errorPage="xxx.jsp"%>
。这时,在当前 JSP 页面出现错误时,会请求转发到 xxx.jsp 页面。
a.jsp
<0 page import="java.util.* " pageEncoding="UTF-8"%>
<@ paga errorPage ="b.jsp"%>
<%
if(true)
throw new Exception (“哈哈~") ;
%>
b.jspe
<%@ page pageEncoding= "UTE-8"%>
<html>
<body>
<h1>出错啦!</h1>
</body>
</html>
在上面代码中,a.jsp 抛出异常后,会请求转发到 b.jsp。
在浏览器的地址栏中还是 a.jsp,因为是请求转发!
而且客户端浏览器收到的响应码为 200,表示请求成功!如果希望客户端得到500,那么需要指定 b.jsp 为错误页面。
%@page language="java" import="java.util.*" pageEncoding="UTF-8"%
< %@page isErrorPage="true"%>
·<error-page>
不只可以通过 JSP 的 page 指令来配置错误页面,还可以在 web.xml 文件中指定错误页面。
这种方式其实与 page 指令无关,但还是在这个位置适合讲解。
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>u</error-page>
</error-page>
<error-page>
<exception-type>jaxa.lang.RuntimeException</exception-type>
<location>/error.jsp</location>
</error-page>
<error-page> 有两种使用方式:
<error-code> 和 <location> 子元素;
<exception-type> 和 <location> 子元素;
·autoFlush 和 butter
> autoFlush:指定 jsp 的输出流缓冲区满时,是否自动刷新:默认为 true,如果为false,那么在缓冲区满时抛出异常!
>buffer:指定缓冲区大小,默认为 8kb,通常不需要修改!
Language:只能是 Java,这个属性可以看出 JSPS 最初设计时的野心!希望 JSP 可以转换成其他语言!但是,到现在 JSP 也只能转换成 Java 代码;
info : JSP 说明性信息;
isThreadSafe:默认为 false,为 true 时,JSP 生成的 Servlet,会表实现一个过时的标记接口 SingleThreadModel,这时 JSP 就只能处理单线程的访问;
session:默认为 true,表示当前 JSP 页面可以使用 session 对象,如果为 false 表示当前 JSP 页面不能使用 session 这个内置对象;
extends:指定当前 JSP 页面生成的 Servlet 去继承该属性指定的类;