JSP——Java Server Pages(Java服务器端页面)
可以理解为一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码,用于简化书写。
JSP的原理
JSP本质上就是一个Servlet。
JSP的脚本
JSP定义Java代码的方式
- <% 代码 %>——定义的java代码在service方法中。service方法中可以定义什么,该脚本就可以定义什么。
- <%! 代码 %>——定义的java代码,在jsp转换后的java类的成员位置。
- <%= 代码 %>——定义的java代码,会输出页面上。输出语句中可以定义什么,该脚本就可以定义什么。
JSP指令
作用——用于配置JSP页面,导入资源文件
格式
<%@ 指令名称 属性名1=属性值1 属性名2=属性值2…%>
分类
- page——配置JSP页面的
- contentType——等同于response.setContentType()
①设置响应体的mime类型以及字符集。
②设置当前jsp页面的编码(只能是高级的IDE才能生效,如果使用低级工具,则需要设置pageEncoding属性设置当前页面的字符集) - import——导包
- errorPage——当前页面发生异常后,会自动跳转到指定的错误页面。
- isErrorPage——标识当前页面是否是错误页面。
①true——是,可以使用内置对象exception。
②false——否,默认值。不可以使用内置对象exception。
- include——页面包含的。导入页面的资源文件。
- taglib——导入资源
注释
html注释——只能注释html代码片段
<!-- -->
jsp注释——可以注释所有
<%-- --%>
JSP的内置对象
在jsp页面中不需要获取和创建,可以直接使用的对象。
jsp一共有9个内置对象。
变量名———————————真实类型———————————— 作用
pageContext————————pageContext——————————— 当前页面共享数据,还可以获取其他八个内置对象
request——————————HttpServletRequest————————— 一次请求访问的多个资源(转发)
session——————————Httpsession———————————— 一次会话的多个请求间
application—————————ServletContext —————————— 所有用户间共享数据
response—————————HttpServletResponse———————— 响应对象
page———————————Object——————————————— 当前页面(Servlet)的对象 this
out—————————————JSPWriter————————————— 输出对象,数据输出到页面上
out——字符输出流对象,可以将数据输出到页面上。和response.getWriter()类似。
response.getWriter()和out.write()的区别
在tomcat服务器真正给客户端做出响应之前,会先找response缓冲区数据,再找out缓冲区数据。
response.getWriter()数据输出永远在out.write()之前。
config————————————ServletConfig——————————— Servlet的配置对象
exception——————————Throwable————————————— 异常对象
EL表达式
概念——Expression Language——表达式语言
作用——替换和简化jsp页面中java代码的编写
语法——${表达式}
注意
jsp默认支持el表达式的。如果要忽略el表达式。
设置jsp中page指令——isELIgnore=“true” 忽略当前jsp页面中所有的el表达式。
${表达式}——忽略当前这个el表达式。
使用
- 运算
- 算术运算符 + - * /(div)%(mod)
- 比较运算符 > < >= <= == !
- 逻辑运算符 &&(and) ||(or) !(not)
- 空运算符——empty
用于判断字符串、集合、数组对象是否为null或者长度是否为0
$(empty list)——判断字符串、集合、数组对象是否为null或者长度为0
${not empty list)——表示判断字符串、集合、数组对象是否不为null并且长度>0
- 获取值
- el表达式只能从域对象中获取值
${域名称.键名}
pageScope——————pageContext
requestScope—————request
sessionScope—————session
applicationScope————application(ServletContext) - ${键名}—— 表示因此从最小的域中查找是否有该键对应的值,直到找到为止。
- 获取对象
对象${域名称.键名. 属性名}
本质上会去调用对象的getter方法 - 获取List集合
${域名称.键名[索引]} - 获取Map集合
${域名称.键名.key名称}
${域名称.键名[“key名称”]}
el隐式对象
el表达式中有11个隐式对象
pageContext
获取jsp其他八个内置对象
${pageContext.request.contextPath}——动态获取虚拟目录
JSTL
JavaServer Pages Tag Library——JSP标准标签库
是由Apache组织提供的开源的免费的jsp标签 <标签>
作用——用于简化和替换jsp页面上的java代码
使用步骤
- 导入JSTL相关ar包
- 引入标签库——taglib指令——<@ taglib %>
- 使用标签
JSTL常用标签
- if———————相当于java代码的if语句
- choose————相当于java代码的switch语句
- foreach————相当于java代码的for语句