JSP
JSP中的Page指令
指令的使用语法:
- <%@指令名 属性名=属性值 属性名=属性值 属性名=属性值… %>
关于Page指令常用的属性
1. <%@page session=“true|false” %>
-
true
表示启用JSP的内置对象session,表示一定启动session对象,没有session对象会创建(可以看见jsp转换成Java文件后的session对象)。
-
false
就是不启用JSP中的内置对象session(可以在下图中看见jsp转换成Java文件后没有创建session对象了)。
-
默认情况是
session
属性为true
。
2. <%@page contentType=“text/json” pageEncoding=“UTF-8” %>
这个用来设置响应的内容类型的和响应的字符集。
<%@page contentType=“text/json;charset=UTF-8” %>
和
<%@page contenType=“text/json” pageEncoding=“UTF-8” %>
是一致的效果。
俩个都能产生这个效果
3. <%@page import=“java.util.Collection,java.sql.Connection”%>
这个import
属性是用来导包的,以下是导入的java.util.List
包,如果导入多个的话可以选择用逗号隔开:
4. <%@page errorPage="/error.jsp" %>
以上是指页面出现异常之后,跳转到error.jsp
页面;
errorPage
属性用来指定出粗之后的跳转位置。
然后跳转到error.jsp
:
以下是error.jsp
的代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>error</title>
</head>
<body>
<h1>网络繁忙,稍后再试</h1>
</body>
</html>
测试的结果:
如果不设置errorPage属性,那么肯定会报500错误的:
5. <%@page isErrorPage=“true” %>
在错误页面可以启动JSP九大内置对象中的exception对象,
exception
内置对象就是上面发生异常的对象,也就是跳转到这个error.jsp发送异常的对象!
我们就可以用它了,我们输出刚刚空指针异常的详细信息(代码如下):
效果:
但是如果该属性值设置是false
,那么这个exception
内置对象不会出现在Java文件中,也就不享有该内置对象的使用权了。
- 该属性的默认值是
false
JSP九大内置对象
- jakarta.servlet.http.HttpServletRequest request 请求作用域
- jakarta.servlet.ServletContext application 应用作用域
- jakarta.servlet.http.HttpSession session 会话作用域
- jakarta.servlet.jsp.PageContext pageContext 页面作用域
- pageContext<request<session<application
- 以上四个作用域都有:setAttribute、getAttribute、removeAttribute
- 以上作用域的使用原则:尽可能使用小的域
-
java.lang.Object page (其实是this,当前的servlet对象)
-
ava.lang.Throwable exception
-
akarta.servlet.ServletConfig config
-
jakarta.servlet.jap.JspWriter out(负责输出)
-
jakarta.servlet.http.HttpServletResponse response(负责响应)