什么是JSP页面?
- JSP的全称是Java Server Pages,即Java的服务器页面。
- JSP的主要作用是代替Servlet程序回传HTML页面的数据。
- web目录(或其他)右击 --> new --> JSP/JSPX --> 输入文件名 --> 选择JSP file创建。
- JSP本质:JSP页面本质上是一个Servlet程序,第一次访问JSP页面时(运行Tomcat服务器后在浏览器地址栏输入路径),Tomcat服务器会将此JSP页面翻译成为一个Java源文件,并对其进行编译成为.class字节码文件(一个.java,一个.class)。
JSP一些常见的语法
头部指令:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
JSP头部的page指令可以修改JSP页面中的一些重要属性或行为:
(以下属性均写在page指令中,默认page指令中没有出现的属性都采用默认值):
(1) contentType属性:表示JSP返回的数据类型是什么,即response.setContentType()的参数值。
(2) language属性:表示JSP翻译之后是什么语言文件(目前只支持Java)。
(3) pageEncoding属性:表示当前JSP文件本身的字符集(可在IDEA右下角看到)。
(4) import属性:表示导包(导类),与Java一致。
(5) autoFlush属性:设置当out输出流缓冲区满了之后是否自动刷新缓冲区,默认值是true。
(6) buffer属性:设置out缓冲区的大小,默认是8kb。
注意:out缓冲区满了之后不能自动刷新的话会报错。
(7) errorPage属性:设置当JSP页面运行出错时自动跳转到的页面(错误信息页面)的路径,这个 路径一般都是以斜杠打头,表示请求的地址是http://ip:port/工程路径/,对应代码web目录。
(8) isErrorPage属性:设置当前JSP页面是否是错误信息页面,默认是false,如果是true可以 获取错误信息。
(9) session属性:设置访问当前JSP页面时是否会创建HttpSession对象,默认值是true
(10) extends属性:设置JSP页面翻译出来的Java类默认继承谁。
JSP的三种常见脚本
-
声明脚本
格式:<%! 声明Java代码 %>
作用:可以给JSP翻译出来的Java类定义属性、方法、静态代码块、内部类等。
特点:不会在浏览器的页面上显示出来,仅存在于翻译后的Java类中。
-
表达式脚本
格式:<%=表达式 %>
作用:在浏览器的JSP页面上输出数据(只有此脚本可以在浏览器的页面上输出数据)
特点:
(1) 所有的表达式脚本都会被翻译到对应的Java类的_jspService()方法中,故表达式脚本可以 直接使用_jspService()方法参数中的对象。
(2) 表达式脚本都会被编译后的Java类中的out.print()方法输出到浏览器页面上。
(3) 表达式脚本中的表达式不能以分号结束。
-
代码脚本
格式:<% Java语句 %>
作用:在JSP页面中可以编写需要的Java代码
特点:
(1) 代码脚本翻译后都在_jspService方法中,故代码脚本可以直接使用此方法参数中的对象。
(2) 可以由多个代码脚本块组合完成一个完整的Java语句。
(3) 代码脚本还可以和表达式脚本一起组合使用,在JSP页面上输出数据。
JSP的三种常见注释
-
HTML注释
HTML注释会被翻译到JSP文件对应的Java类的_jspService方法中,以out.write()输出到客户端,write方法会自动识别标签,执行标签对应的功能,不会在浏览器的页面上输出注释。
-
Java注释
Java注释要写在声明脚本和代码脚本中才被认为是Java注释,会被翻译到JSP文件对应的Java类的_jspService方法中,在对应的Java类中也是注释。
-
JSP注释
<%- -这是JSP注释- -%>
JSP注释中的内容不会在JSP文件翻译后的Java类中出现,即注释中的内容没有任何功能。
JSP的四大作用域对象
- pageContext
pageContext类,当前JSP页面有效。
- request
HttpServletRequest类,一次请求内有效。
- session
HttpSession类,一个会话范围内有效(从浏览器打开到浏览器关闭)。
- application
ServletContext类,整个web工程范围内都有效(只要web一直工作数据,数据就一直在)。