1.为什么会出现JSP
HTML的优点是可以很好的显示页面,但是缺点是不能处理用户的请求
Servlet的优点是可以处理用户请求并给用户响应,但是缺点是不能很好的显示页面
我们将HTML与Servlet的优点进行强强联合,就出现了JSP,即HTML+Servlet=JSP
2.JSP简介
JSP全称是JavaServerPages,Java服务页面
JSP页面不能脱离服务器单独运行,即JSP页面必须运行在服务器上
JSP页面就是能写Java代码的HTML,它还是披着HTML外衣的Servlet
JSP本质上就是一个Servlet
3.JSP的运行原理
运行一个JSP页面需要经过以下步骤:
例如:我们访问index.JSP
直接使用JSP容器创建的对象来处理用户请求和给用户响应
JSP引擎将index.jsp页面翻译成index_JSP.jave文件
Java虚拟机将index_jsp.java文件编译成index_JSP.class文件
JSP容器创建index_JSP对象,用它来处理用户的请求并给用户响应
第一次访问时:
以后再访问index.jsp(前提是index.JSP页面没有被修改)
1)JSP引擎将.JSP页面翻译成.java文件
2)Java虚拟机将.java文件编译成.class文件
3)JSP容器根据Java类创建对象并用该对象处理用户请求并给用户响应
4.JSP的基本语法
JSP模板元素
就是HTML中的标签,在HTML中怎么使用在JSP中就怎么使用
JSP脚本片段
格式:%.......%
JSP脚本片段用来写Java代码
JSP脚本片段中的Java代码或原封不动的复制到_JSPService方法中
可以再JSP页面中写多个脚本片段,但是要保证多个脚本片段拼接后的完整性
!--2.JSP脚本片段--
%
for(inti=0;i10;i++){
%
h1中秋节快到了!好开心哟……/h1
%
}
%
JSP表达式
格式:%=对象%
JSP表达式主要用来将一个对象输出到页面
%
//创建一个date对象
Datedate=newDate();
%
!--3.JSP表达式--
h1%=date%/h1
JSP页面中的注释
HTML注释:在浏览器解析页面的时候被忽略,生存时机最长
Java注释:在Java虚拟机将java文件编译成class文件是被忽略,生存时机适中
JSP注释:在JSP引擎将JSP文件翻译成java文件时就被忽略,生存时机最短
5.JSP指令
格式:%
指令名属性名1="属性值1"属性名2="属性值2"%page指令
!--page指令:告诉JSP引擎如何解析当前页面--
!--
language属性:用来设置JSP页面使用的语言,默认值是java,而且只有一个值就是java
contentType属性:用来告诉浏览器使用什么字符集解析当前页面
pageEncodeing属性:用来设置当前JSP页面使用的字符集
errorPage属性:用来设置当前页面出现错误时要转发的页面
isELIgnored属性:用来设置是否忽略EL表达式,默认值是false,不忽略,一般不改
session属性:用来设置是否可以使用Session对象,默认值是true,可以使用,一般不改
isErrorPage属性:用来设置当前页面是否是错误页面,默认值是false,不是错误页面;当改为true时,当前页面即为错误页面,就可以使用Exception对象来打印错误信息
--
include指令
!--include指令:用来将其他页面包含到当前页面中--
!--静态包含--
h1十年修得同船渡/h1
!--file属性:用来设置被包含的页面的地址--
%
includefile="/include/1.JSP"%6.JSP动作标签
格式:jsp:标签名/JSP:标签名
JSP动作标签由服务器解析,解析时会转换成响应的Java代码
forward标签
!--forward标签:主要用来进行请求的转发--
!--page属性:用来设置要转发的页面的路径--
jsp:forwardpage="/index.jsp"/JSP:forward
include标签
!--include标签:主要用来将一个页面包含到当前页面中,我们称它为动态包含--
!--动态包含即翻译、编译当前页面也翻译、编译被包含页面--
h1窗前明月光/h1
jsp:includepage="/include/2.jsp"/JSP:include
7.JSP中的九大隐含对象
JSP中的九大隐含对象可以再JSP页面中直接使用
什么是隐含对象
不用声明就可以直接使用的对象
这九个隐含对象在jsp页面中之所以可以直接使用是因为它们已经在_JSPService方法中已经声明并赋值
九大隐含对象都是什么
类型:HTTPSession
作用:是一个域对象
在Servlet中通过以下方法获取
类型:PageContext
作用:是一个域对象
类型:HTTPServeletRequest
作用:是一个域对象
在Servlet中可以直接使用
request
pageContext
session
HTTPSessionsession=request.getSession();
类型:ServletContext
作用:是一个域对象
在Servlet中通过以下方法获取
application
ServletContextservletContext=this.getServletContext();
类型:Throwable
作用:获取异常信息,前提是isErrorPage属性设置为true才可以使用该对象
类型:Object
作用:相当于this,值当前对象,没用
类型:JSPWriter
作用:与PrintWriter一样,用来想浏览器响应一个页面或页面的片段
类型:ServletConfig
作用:获取JSP的初始化参数
类型:HTTPServletResponse
作用:与Servlet中的response一样,封装了响应报文,在JSP中基本不用
response
config
out
page
exception
8.JSP中的四个域对象
域指区域或者说是范围,在JavaWeb中指不同的Web资源(JSP、html、Servlet)
在JavaWeb中有四个域对象,分别是pageContext、request、session、application
因为在JavaWeb中不同的资源之间需要共享数据,所有就有了域对象
在域对象中都维护着一个map,来保存对象
域对象都有以下三个方法:
根据属性名移除域对象中的值
根据属性名获取域对象中的值
向域对象中添加属性
voidsetAttribute(Stringkey,Objectvalue)
ObjectgetAttribute(Stringkey)
voidremoveAttribute(Stringkey)
JavaWeb中有四个域
能使用小的就不用大的
范围:当前Web应用
对应的对象:application
类型:ServletContext
作用:获取application域中的属性值
范围:当前会话
对应的对象:session
类型:HTTPSession
作用:获取session域中的属性值
范围:当前请求
对应的对象:request
类型:HTTPServletRequest
作用:获取request域中的属性值
范围:当前页面
对应的对象:pageContext
类型:PageContext
作用:获取page域中的属性值
page域
request域
session域
application域
域对象使用的原则
Servlet与JSP的分工
Servlet用来处理请求,JSP负责显示页面
赞赏
人赞赏
中科白癜风医院好吗治白癜风专业医院