jsp学习笔记

来源:互联网 发布:中兴4g数据终端 编辑:程序博客网 时间:2024/06/03 04:57
JSP 其实就是Servlet,只不过Servlet如果大量写入表现层语言会很难维护,因此会引入JSP。JSP其实两个部分:
1、HTML
2、JAVA
JSP原理:Web服务器接收.jsp文件请求时,会把JSP文件语法交给JSP引擎处理。Tomcat中的JSP引擎其实就是一个Servlet小程序。每一个JSP页面在第一次访问的时候,JSP引擎会把JSP页面翻译成一段小Servlet的源程序。接着再把这个Servlet源程序编程成相对应的class程序。
JSP中,一般以下语法放入Java代码:
1、<% %> 放入Java代码
2、<%! %> 变量与函数的声明
3、<%= %> 表达式写法
4、<%-- --%> JSP注释
JSP 三大指令:
1、page: 该指令是针对当前页面的指令
Page指令:page指令通常位于JSP的头部,注意一个JSP页面可以包含一个或者多个page指令
2、include: 用于指定包含另一个页面
使用incluce,可以将一个外部文件包含到JSP文件中,同时解析必要Java语法。注意编译指令最好引入静态的JSP文件。什么静态引入?一旦使用编译include的静态引入本把引入的JSP融合成一个页面。因此被包含页面设置不需要是完整的页面。
3、taglib: 用于定义和访问自定义标签
JSP七个动作指令:
1、jsp:forward 执行页面专项,将请求处理转发到下一个页面。
forward指令用于将页面响应转发到另一个页面。注意:forward 既可以转发到静态HTML页面。页面转发到JSP页面,或者转发给容器中的Servlet。
2、jsp:param用于传递参数,注意:必须和其他支持参数的标签一起使用。

3、jsp:include 用于动态引入一个JSP页面。
include指令一个动态include指令,也用于包含某个页面。它不会导入被include页面编译指令。仅仅将被导入页面的body内容插入本页面。
4、jsp:plugin 用于下载JavaBean 或者 Applet 到客户端执行。

5、jsp:useBean 创建一个JavaBean的实例。
6、jsp:setProperty: 设置JavaBean 实例的属性值。
7、jsp:getProperty: 输出JavaBean 实例的属性值。
这三个指令都是与JavaBean相关的指令。其中useBean指令用于JSP页面初始化Java实例。setProperty指令用于JavaBean实例设置相关属性。getProperty指令用于JavaBean实例获取相关属性。
JSP 九大内置对象:
1、application-- javax.servlet.ServletContext。该实例代表JSP所属的Web应用本身。
application 通过setAttribute方法设置application的某个属性,该属性值可以作用于整个Web。因此在Web内可以使用getAttribute获取该属性。需要指出的是:虽然使用application(即Servlet实例)可以方便多个Servlet,多个JSP共享数据,但不要仅仅为了JSP、Servlet共享数据就将数据放Application中!由于Application代表了整个的Web因此,因为只有关于整个Web项目的配置信息,数据才会放入Applicationapplication 还有一个重要的用处:可用于获取Web应用的配置参数。web.xml
注意:通过Web获取配置参数的方式,可以将一些配置信息放在web.xml文件中配置。
避免使用硬编码方式写在代码中,该种方式可以更好的程序的移植性。

2、config-- javax.servlet.ServletConfig该实例代表JSP所属的配置信息。
config对象代表当前JSP页面的配置信息。但JSP页面通常无须配置。因此也就不存在配置信息。所以JSP页面比较少用该对象。但是Servlet中则用处相对较大,因为Servelt需要在web.xml文件中进行配置。

3、exception -- java.lang.Throwable该实例代表JSP所属其他页面的异常和错误。
exception对象是Throwable的实例,代表JSP脚本中产生的错误和异常。是JSP页面异常机制的一部分。在JSP脚本中无须处理异常。事实上,JSP脚本包含的所有的可能出现的异常都交给错误页面处理。
注意:exception 对象仅在异常处理页面中有效,通过异常处理结构可以看出。
注意:由于只有JSP脚本,输出表达式才会对应于_jspService()方法里的代码。所以这两个部分的代码无须关心异常。但是在JSP的声明部分依然需要处理异常。JSP异常处理机制对JSP的声明不起作用。
注意:在异常处理的页面中,应该在page指令中isErrorPage添加上并且设置为true,
只有该属性设置为true时,才可以访问exception内置对象。

4、page -- 代表页面本身。也就是Servlet的this
5、out-- javax.servlet.jsp.JspWriter该实例代表JSP的输出流
out: 其实就是输出流。通常用于输出变量的值。
注意:<%=> 本质等于 out.write() 输出表达式

6、pageContext -- javax.servlet.jsp.PageContext该实例代表页面的上下文
pageContext: 该对象表示页面上下文,用于访问对象之间共享数据

7、request-- javax.servlet.HttpServletRequest 该实例封装一个请求
request 对象是JSP重要的对象。每个request都会是一个用户的请求。这个请求里面包含了所有的用户需要传递的参数。request 重要的特性:可以操作表示一个request请求范围。所有的web应用都会有请求与响应,没有请求与响应就没有web开发!

8、response -- javax.servlet.HttpServletResponse该实例代表客户端的响应
response: 代表服务端的响应。基本上大部分时间服务器无须使用response。因为可以直接使用更简单的out。out就是代表输出流。

9、session -- javax.servlet.HttpSession该实例代表一次会话
Cookie 时常是用来表示或者记录网站的数据。比如用户购物车。Session 一般是存放在服务器的。用户每次访问网站的时候,都会携带cookie,网站后台可根据携带cookie找到session。Cookie和Session的最大不同之处在于,session会随着浏览器的关闭而消失。Cookie会保留一段时间,具体时间看设置。
JSP 四大作用域:

application:服务器启动到停止这段时间。

session:HTTP会话开始到结束这段时间。

request:HTTP请求开始到结束这段时间。

page:当前页面从打开到关闭这段时间。


JSP/Servlet 生命周期
JSP本质就是Servlet。只是把开发好的JSP页面将由Web容器编译成对应的Servlet。当Servlet在运行时,其实这个过程并不是由开发者决定的。而是由Web容器控制的。
注意,创建Servlet实例有2个时机:
1、客户端第一次请求某个Servlet,系统创建该Servlet实例。其实现在大部分的Servlet都是该种。
2、Web应用启动时立即创建Servlet实例,即load-on-startup Servelt 每一个Servlet生命周期的如下:
1)、创建Servlet实例。
2)、Web应用启动时,调用Servlet的init方法。对Servlet进行初始化。
3)、Servlet初始化后,一直存在容器内。用于响应客户端请求。
4)、Web容器决定销毁Servlet时,先调用destroy方法。
5)、销毁Servlet。
 
创建实例成功   --init--> 完成初始化   ---> 响应客户请求  
--destroy--> 资源回收完成  ----> 实例被销毁 

 ------------  Servlet 生命周期  ----------------
load-on-startup: 通常Web启动时立即创建的Servlet。
配置 load-on-startup 的Servlet 有
两种方式
1、web.xml 文件通过<servlet></servlet>中的配置一个
<load-on-startup>子元素进行配置。
2、通过注解方式@WebServlet 指定属性load-on-startup.





0 0
原创粉丝点击