jsp
jsp(java server pages):java服务页面,在html页面中嵌入java代码,使静态html网页变为动态。
jsp运行原理
首先,当客户端浏览器对于指定的jsp第一次访问时,web容器(tomcat)会对jsp文件进行解析,解析为一个java类(实则是一个Servlet类),然后将servlet类编译为字节码文件(*.class),最后执行该Servlet类,将数据通过http协议发送到客户端浏览器。
jsp九大内置对象
request:表示为一个客户端到服务端的请求,包含客户端提交到服务端的数据等信息
response:服务端可以通过该对象向客户端进行响应(数据输出,页面跳转)
session:户端与服务端的一次会话,默认有效时间保持30分钟,服务器客户端之间可以通过该对象进行数据共享,可以使用session作为缓存
application:表示为servlet上下文对象(servletContext,应用的运行环境),只要服务器不停止,会一直存在,所有客户端之间都能共享该对象
page:表示当前的jsp对象(servlet),实际为this
pageContext:能够在当前的jsp页面中临时共享数据
out:基于response获取的输出流对象,可以使用该对象向客户端输出数据(html代码)
config:表示应用程序的配置对象
exception:是Throwable的实例,表示页面中的错误与异常
页面跳转的两种方式
重定向:由客户端发起第二次请求,所以重定向又称之为客户端跳转,在客户端地址栏上显示的为最后一次请求的资源,重定向无法将存储在请求范围内的数据传递到下一个页面中。
请求转发:由服务器发起第二次请求,所以请求转发又称之为服务端跳转,在客户端地址栏显示的为第一次请求的资源,请求转发可以将请求向下继续传递,只要保持是一个request对象,始终能够获取到request中的数据。
response.sendRedirect("main.jsp");//页面重定向
request.getRequestDispatcher("main.jsp").forward(request, response);//服务端请求转发
四大作用域
pageContext:页面作用域仅限于当前页面对象,可以近似理解为java的this对象,离开当前jsp页面(无论是重定向还是请求转发),pageContext中的所有属性值都会丢失。
request:请求作用域是同一个请求之内,在页面跳转时,如果通过请求转发,则forward目标页面任然可以拿到request中的属性值。如果通过重定向跳转,此种情形下,request中的属性值会丢失。
session:会话作用域是在一个会话的生命周期内,会话失效,则session中的数据也会随之丢失。
application:应用作用域是最大的,只要服务器不停止,则application对象就一直存在,并且为所有会话所共享。
四种会话跟踪技术
会话跟踪:在客户端与服务端连接的过程中始终保持数据交换的通道。四种会话跟踪技术分别是:
URL重写
表单隐藏域传值
Session
Cookie
Session与Cookie区别
Session是存在于服务端的临时缓存,利用内存实现的存储机制,只能存储极少量数据(用户登录信息),会随着会话的结束而清空,或者有效期到达之后清空(服务端)
Cookie是存在于客户端浏览器的缓存数据,是利用文件存储,可以存储少量数据,有效期可以自行设置,一般可以使用cookie存储用户信息,购物车信息等缓存数据(客户端)
jsp三大指令
page
jsp页面的设置通常使用page指令
- language :设置页面的脚本语言
- contentType: 响应数据的类型(text/html;charset=utf-8) http协议
- pageEncoding: 页面的编码模式 jsp页面
- import: 导入外部依赖包
- errorPage: 指定处理异常与错误的页面
- isErrorPage :标记当前页面是否为异常与错误处理的页面
- isELIgnored :是否不解析EL表达式
include
静态包含就是把其他页面包含到当前页面中同时解析,生成一个Java文件,<%@ include file=”被包含的页面”%>;
动态包含把其他被包含的页面分别解析,各自生成java文件,然后在动态的导入主页面中。
taglib 标记库
jsp七大动作
<jsp:forward page=""></jsp:forward>
<jsp:setProperty property="" name=""/>
<jsp:getProperty property="" name=""/>
<jsp:include page=""></jsp:include>
<jsp:param value="" name=""/>
<jsp:plugin code="" codebase="" type="bean"></jsp:plugin>
<jsp:useBean id=""></jsp:useBean>
EL表达式
Express Language 表达式语言
${表达式}
JSP标准标签库
使用过程:
1.导入jstl支持包(jar包)
2.在需要使用jstl标记库的页面中导入标记
常用JSTL标签:
c :核心(core) — 常用
fmt :格式化标签(日期,数字格式化)
x: xml标签
sql: 访问数据库
fn : 全局函数