JSP
含义:.jsp页面实际底层还是servlet,如:login.jsp页面的底层代码是login_jsp.java,编译后会得到login_jsp.class文件。
jsp底层的实现是按照顺序将页面中的java代码或页面代码按顺序在.java文件中实现,在发送请求后会触发.java类中的
_jspService()
方法,方法中会定义JSP的九大内置对象,然后对内置对象进行初始化,然后按照页面代码对java代码和页面html代码进行构建,对html代码是使用JSP输出流对象的writer()
方法将html代码输出到浏览器,让浏览器解析。
JSP标签和指令
标签
<% 代码 %>
:定义的java代码,代码最终会放在service
方法中
<%! 代码 %>
:定义的java代码,在jsp转换后会放在java类的成员变量位置,即service
方法外,定义的是成员变量
<%= 代码 %>
:定义的java代码,会输出到页面上
指令
page:配置JSP页面,常用属性:
contentType
:等同于response.setContentType()
import
:导包,比如导入一些Java的类
errorPage
:当前页面发生异常后,会自动跳转到指定的错误页面。
isErrorPage
:标识当前页面是否是错误页面。
true:是,可以使用内置对象exception
false:否。默认值。不可以使用内置对象exception
include: 页面包含的。导入页面的资源文件
taglib: 导入资源,导入JSTL标准标签库资源(使用JSTL需要导入JSTL的jar包资源)如
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
九大内置对象(重点)
HttpServletRequest request;//请求对象(请求域对象)
HttpServletResponse response;//响应对象
HttpSession session;//会话域对象
ServletConfig config;//当前JSP配置文件对象
ServletContext application;//全局域对象(整个项目)
JSPWriter out;//当前JSP的输出流对象
PageContext pageContext;//当前JSP上下文关系对象,可以获得其他8大内置对象
Object page = this;//当前JSP页面对象
Exception exception;//当前JSP页面的异常对象
四大域
pageContext:页面作用域
作用范围:仅限当前页面的JSP
requset:请求作用域
作用范围:当前的请求范围,所有处理此请求的资源都可以访问这些数据。
session:会话域
作用范围:对特定用户的整个会话有效,用户在与服务器的会话期间可以访问这些数据。
application:应用作用域
作用范围:在整个 Web 应用程序中有效,所有用户和所有请求都可以访问这些数据。
注:当使用EL表达式时,获取域中顺序为:页面域>请求域>会话域>全局域