1.JSP

Servlet适合处理业务逻辑并不适合向浏览器输出一个html网页,
而JSP本质上是一个servlet程序,通过Java代码展示动态数据。

JSP执行过程

1.当浏览器请求服务器中的某一个JSP文件
2.当找到以后,JSP翻译引擎会将JSP翻译成一个Servlet程序(JSP—->xxx.java-…xxx.class)然后servlet程序再执行,执行的结果是想浏览器输出一个HTML网页
3.没有找到则返回一个404

模板元素

模板元素是只写在JSP中的html内容
或除了JSP特有内容以外的其他内容称为模板元素
模板元素在翻译后的Servlet中,被out.write原封不动的发送给浏览器,由浏览器负责解析并显示

JSP标签技术

JSP标签技术是基于在JSP网页中写入大量的java代码会导致结构混乱,后期难以维护,并且代码难以复用,针对这一现象提供了JSP标签技术,推荐使用标签来代替JSP页面中的java代码,并且推荐

EL表达式

格式${常量/表达式/变量}(放在EL的变量得先存入域中)

JSTL标签库

JSTL是为JavaWeb开发人员提供的一套标准通用的标签库
JSTL标签库和EL配合使用可以取代JSP中大部分代码

2.Cookie

Cookie是将会话中产生的数据放在客户端,是客户端技术
Cookie是基于两个头进行工作的:分别是Set-Cookie响应头和Cookie请求头
通过Set-Cookie响应头将cookie从服务器端发送给浏览器,让浏览器保存到内部,而浏览器一旦保存了cookie,以后浏览器每次访问服务器时,都会通过cookie请求头,将cookie信息发送到服务器中,在需要时,在服务器可以获取请求中的cookie数据,从而实现某些功能

Cookie细节

创建cookie需要指定名字和值,名字一旦指定不能更改
通过response.addCookie方法将cookie响应给服务器
通过request获取cookie时返回的是一个cookie数组(返回的不可能是指定一个这种行为)
删除的方法可以通过设置cookie的生成时长设置0作为删除cookie的方法

3.Session

session是将会话中产生的数据保存在服务器端,是服务器端技术
session是一个域对象,session中也保存了一个map集合,往session中存数据,其实就是将数据保存到session中的map集合中
通过session.setAttribute方法可以将数据保存到session中,通过session.getAttribute方法将session中取出来

Session细节

session本身是一种域对象
session的声明周期:
超时销毁:默认情况下,当超过30分钟没有访问session,session自动销毁
通过调用session对象的invalidate方法,立即销毁
以外身亡:当服务器非正常关闭之前,session会随着服务器关闭而销毁
正常关闭时,服务器会将内部session对象序列化保存到work目录下,通过再次重启服务器,服务器会重新将对象读写到服务器
作用范围:在一次会话内(获取都是同一个session对象)
主要功能:在整个会话实现数据共享

Cookie和Session区别

Cookie和Session都属于会话技术,但是两者实现原理和技术都不同,也因此应用场景不一样。
Cookie是将会话数据保存在浏览器客户端,是客户端技术
因为是客户端技术,随着用户的操作可能会造成数据丢失等情况,但是将数据保存在客户端,可以让服务端的没有负担,因此针对于安全性要求不高的数据
cookie的大小和个数是由限制的,一个网点给浏览器发送的cookie数据不超过20个,每一个cookie的大小不超过1kb
Session是将会话数据保存在服务端,是服务端技术
因为在服务器,所有安全性高,更加稳定,但是给服务器带来一定负担
在并发量较高时每一个浏览器客户端在服务器端都要对应一个session对象,占用服务器的内存空间,影响效率
保存登入状态、保存验证码