一、什么是jsp
-
jsp的全称是java server pages,java的服务器页面
-
jsp的主要作用是代替Servlet程序回传html页面的数据
-
因为Servlet程序回传html页面数据是一种非常繁琐的事情,开发成本和维护成本都极高
二、jsp如何访问
- jsp页面和html页面一样,都是存放在web目录下,访问也跟访问HTML一样
http://ip:port/工程路径/a.html
http://ip:port/工程路径/b.jsp
三、jsp的本质是什么
- jsp页面本质是一个Servlet程序
- 当我们第一次访问jsp页面的时间,tomcat服务器会帮我们把jsp页面翻译成为一个java源文件,并且对它进行编译成为.class字节码程序。
四、jsp的三种语法
1. jsp头部的page指令
- jsp的page指令可以修改jsp页面的一些重要的属性
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
- language属性 表示jsp翻译后是什么语言文件,只支持java
- content属性 表示jsp返回的数据类型是什么
- pageEncoding属性 表示当前jsp页面文件本身的字符集
- import属性 用于导包、导类
- autoFlush属性 设置当out输出流缓冲区满了之后,是否自动刷新缓冲区,默认是true
- buffer属性 设置out缓冲区的大小,默认是8kb
- errpage属性 设置当jsp页面运行时出错,自动跳转去的错误页面路径
- isErrorPage属性 设置当前jsp页面是否是错误信息页面,默认是false
- session属性 设置访问当前jsp页面,是否会创建HTTPSession对象
- extends属性 设置jsp翻译出来的java类默认继承谁
2. jsp的常用脚本
2.1 声明脚本
<%! 声明java代码 %>
- 可以给jsp翻译出来的java类定义属性和方法甚至静态代码块,内部类等
2.2 表达式脚本
<%= 表达式 %>
- 在jsp页面上输出数据
2.3 代码脚本
<%
java代码
%>
- 可以在jsp页面中,编写我们自己需要的功能
3. jsp的三种注释
3.1 html注释
<!--
html注释
-->
3.2 java注释
<% //java注释 %>
3.3 jsp注释
<%--<button onclick="ajax()">按钮</button>--%>
五、jsp九大内置对象
jsp中的内置对象,是指tomcat在翻译jsp页面成为Servlet源代码后,内置提供的九大对象,叫内置对象
- request
请求对象
- response
响应对象
- pageContext
jsp的上下文对象
- session
会话对象
- application
ServletContext对象
- config
ServletConfig对象
- out
jsp输出流对象
- page
指向当前jsp对象
- exception
异常对象
六、jsp四大域对象
类对象 | 范围 | |
---|---|---|
pageContext | PageContextImpl类 | 当前jsp页面范围有效 |
request | HttpServletRequest | 一次请求内有效 |
session | HttpSession | 一个会话范围内有效 |
application | ServletContext | 整个web工程范围内部有效 |
-
域对象是可以像map一样存取数据的对象,四个域对象功能一样,不同的是它们对数据的存取范围
-
虽然四个域对象都可以存取数据,在使用上它们是有优先顺序的,优先顺序分别为
- pageContext ===> request ===> session ===> application
七、jsp中的out输出和response.getWriter输出的区别
- response中表示响应,我们经常用于设置返回给客户端的内容
- out也是给用户做输出使用的
- 由于jsp翻译之后,底层源代码都是使用out来进行输出,所以一般情况下,我们在jsp页面中统一使用out来进行输出,避免打乱页面输出内容的顺序
1. out.write()与out.print()区别
- out.write() 只可以输出字符串
- out.print() 可以输出任意数据
八、jsp的常用标签
1. jsp静态包含
<%@ include file="/include/index.jsp"%>
- 特点
- 静态包含不会翻译被包含的jsp页面
- 静态包含其实是把被包含的jsp页面的代码拷贝到包含的位置执行输出
2. jsp动态包含
<jsp:include page="/include/index.jsp">
</jsp:include>
- 特点
- 动态包含会把包含的jsp页面也翻译成java代码
- 动态包含底层代码使用如下代码去调用被包含的jsp页面执行输出
JspRuntimeLibrary.include(request, response, "/include/index.jsp", out, false);
- 动态包含,还可以传递参数
3. jsp标签转发
<jsp:forward page="/scope2.jsp"></jsp:forward>