1.jsp是什么?
sun公司制订的一种服务器端动态页面技术规范。
因为虽然使用servlet也可以生成动态页面,但是过于繁琐(需要使用out.print输出),并且不利于页面的维护(要修改页面, 就需要修改java代码),所以,sun才制订了jsp技术规范。
jsp是一个以".jsp"为后缀的文件,该文件的主要内容是html和 少量的java代码。容器会将jsp转换成一个对应的servlet然后执行。 也就是说,jsp的本质就是一个servlet。
2.如何写一个jsp文件?
step1.添加一个以.jsp后缀的文件。
step2.在该文件中,可以添加如下内容:
html(css,js)
直接写即可。
java代码
-
java代码片断。
<% java代码 %> -
jsp表达式
<%= java表达式 %>
隐含对象
a.什么是隐含对象?
可以直接使用的对象,比如out,request,response。
b.为什么可以直接使用这些隐含对象?
因为容器会自动添加获得这些对象的代码。
c.有哪些隐含对象?
out,request,response,session,application,pageContext,config,exception,page
- pageContext(页面上下文 a2.jsp,a3.jsp): 容器会为每一个jsp实例创建唯一的一个符合
PageContext接口要求的对象,该对象一般称之为页面上下文。 - 页面上下文有两个特点:
- 唯一性: 一个jsp实例对应一个pageContext。
- 持久性: 只要jsp实例还在,pageContext就会一直存在。
作用1: 绑订数据。
作用2: 提供了一些方法,用来获得其它所有的隐含对象。
注:绑订到pageContext上的数据不能否被共享,只能被对应的jsp实例访问到。
- config(a4.jsp): ServletConfig
- exception(a5.jsp,a6.jsp):
用来获异常的一个简短的描述。 - page(了解):
jsp实例本身(jsp对应的servlet对象)
指令
-
什么是指令?
可以通过指令告诉容器,在将jsp转换成servlet代码时,额外
做一些处理,比如导包。 -
指令的语法
<%@ 指令名 属性=值 %>
如果有多个属性,用空格隔开。 -
page指令
import属性:导包,比如<%@ page import=“java.util.,java.text.”%>
contentType属性:设置response.setContentType的内容。
pageEncoding属性:告诉容器,在读取jsp文件的内容时,使用指定的字符集来解码。
errorPage属性:指定一个异常处理页面。当当前页面发生异常,则容器会调用异常处理页面。
isErrorPage属性:缺省值是false,如果值为true,则可以使用exception隐含对象。
session属性:缺省值是true,如果值为false,则容器不再添加获得session对象的代码了,也就是说不能够使用session隐含对象了。 -
include指令
告诉容器,在将jsp转换成servlet代码时,将file属性指定的文件的内容插入到该指令所在的位置。
file属性: 指定文件的位置。
注:
被包含的文件,如果是jsp,不会执行。
- taglib指令:引入jsp标签。
注释
a. <!-- 注释内容 -->
被注释的内容如果是java代码,java代码会执行。
b. <%-- 注释内容 --%>
被注释的内容如果是java代码,java代码不会执行。
3. jsp是如何运行的?
step1. 容器将jsp转换成一个servlet(.jsp–>.java)。
html(css,js) ------> 在service方法里面,使用out.write输出。
<% %> ------> 照搬到service方法里面。
<%= %> ------->在service方法里面,使用out.print输出。
step2. 容器再调用该servlet。
容器需要对其进行编译,然后实例化、初始化、调用、销毁。