JSP(JavaServer Pages)实际上就是一个servlet,基于Java语言实现的服务器端的页面。
访问XXX.jsp的时候,应用服务器会自动将jsp文件翻译生成XXX.java,并自动编译生成XXX.class,因此XXX.jsp就是一个类。
XXX.jsp类继承 HttpJspBase,而HttpJspBase类继承的是HttpServlet,所以XXX.jsp类就是一个servlet类。
JSP的生命周期和servlet的生命周期完全相同,都是(假)单例。
JSP也是JavaEE的13个子规范之一。
JSP是一套规范。所有的web容器/web服务器都是遵循这套规范的,都是按照这套规范进行的“翻译”,每一个web容器/web服务器都会内置一个JSP翻译引擎。
对JSP进行错误调试的时候,还是要直接打开JSP文件对应的java文件,检查java代码。
- <%@page session="true|false" %>
- true表示启用JSP的内置对象session,表示一定启动session对象。没有session对象会创建。如果没有设置,默认值就是session="true"
- session="false" 表示不启动内置对象session。当前JSP页面中无法使用内置对象session。
-
- <%@page contentType="text/json" %>
- contentType属性用来设置响应的内容类型,但同时也可以设置字符集。
- <%@page contentType="text/json;charset=UTF-8" %>
-
- <%@page pageEncoding="UTF-8" %>
- pageEncoding="UTF-8" 表示设置响应时采用的字符集。
-
- <%@page import="java.util.List, java.util.Date, java.util.ArrayList" %>
- <%@page import="java.util.*" %>
- import语句,导包。
-
- <%@page errorPage="/error.jsp" %>
- 当前页面出现异常之后,跳转到error.jsp页面。errorPage属性用来指定出错之后的跳转位置。
-
- <%@page isErrorPage="true" %>
- 表示启用JSP九大内置对象之一:exception。默认值是false。
注释:
<%--JSP的专业注释,不会被翻译到java源代码当中。--%>
jakarta.servlet.jsp.PageContext pageContext 页面作用域
jakarta.servlet.http.HttpServletRequest request 请求作用域
jakarta.servlet.http.HttpSession session 会话作用域
jakarta.servlet.ServletContext application 应用作用域
pageContext < request < session < application
以上四个作用域都有:setAttribute、getAttribute、removeAttribute方法。
以上作用域的使用原则:尽可能使用小的域。
java.lang.Throwable exception
jakarta.servlet.ServletConfig config
java.lang.Object page (其实是this,当前的servlet对象)
jakarta.servlet.jsp.JspWriter out (负责输出)
jakarta.servlet.http.HttpServletResponse response (负责响应)