cookie
定义
客户端会话技术,将数据保存到客户端,浏览器将cookie存储在用户的计算机上,并在以后的请求中将其发送回服务器。
使用
1. 创建Cookie对象,绑定数据
* new Cookie(String name, String value)
2. 发送Cookie对象
* response.addCookie(Cookie cookie)
3. 获取Cookie,拿到数据
* Cookie[] request.getCookies()
特点
可以创建多个Cookie对象,使用response调用多次addCookie方法发送cookie即可。
默认情况下,当浏览器关闭后,Cookie数据被销毁
持久化存储:
* setMaxAge(int seconds)
1. 正数:将Cookie数据写到硬盘的文件中。持久化存储。并指定cookie存活时间,时间到后,cookie文件自动失效
2. 负数:默认值
3. 零:删除cookie信息
默认情况下cookie不能共享
使用setPath(String path):设置cookie的获取范围。默认情况下,设置当前的虚拟目录
setDomain(String path):如果设置一级域名相同,那么多个服务器之间cookie可以共享
setDomain(".baidu.com"),那么tieba.baidu.com和news.baidu.com中cookie可以共享
cookie存储数据在客户端浏览器
浏览器对于单个cookie 的大小有限制(4kb) 以及 对同一个域名下的总cookie数量也有限制(20个)
session
定义
服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中,HttpSession。session数据存储在服务器上而不是在用户计算机上。当用户第一次访问站点时,服务器会为其创建一个唯一的session ID,并将其存储在cookie中。
原理
依赖于Cookie实现。
使用
1. 获取HttpSession对象:
HttpSession session = request.getSession();
2. 使用HttpSession对象:
Object getAttribute(String name)
void setAttribute(String name, Object value)
void removeAttribute(String name)
特点
默认情况下。当客户端重启后,两次获取session不是同一个。如果需要相同,则可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。 Cookie c = new Cookie("JSESSIONID",session.getId()); c.setMaxAge(60*60); response.addCookie(c);
session什么时候被销毁? 1. 服务器关闭 2. session对象调用invalidate() 。 3. session默认失效时间 30分钟
session用于存储一次会话的多次请求的数据,存在服务器端
session可以存储任意类型,任意大小的数据
session和cookie的区别
与cookie不同,session数据存储在服务器上而不是在用户计算机上。当用户第一次访问站点时,服务器会为其创建一个唯一的session ID,并将其存储在cookie中。然后,每次用户访问站点时,浏览器都会将cookie发送回服务器,并且服务器将使用该session ID来查找与该用户关联的数据。这使得服务器能够更好地保护用户数据,并提供更安全的体验。
1. session存储数据在服务器端,Cookie在客户端
2. session没有数据大小限制,Cookie有
3. session数据安全,Cookie相对于不安全
JSP
概念
Java Server Pages: java服务器端页面
可以理解为:一个特殊的页面,其中既可以指定定义html标签,又可以定义java代码
JSP本质上就是一个Servlet
JSP的脚本
JSP定义Java代码的方式
1. <% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。
2. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员位置。
3. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。
内置对象
在jsp页面中不需要创建,直接使用的对象
一共有9个:
变量名 真实类型 作用
pageContext PageContext 当前页面共享数据,还可以获取其他八个内置对象
request HttpServletRequest 一次请求访问的多个资源(转发)
session HttpSession 一次会话的多个请求间
application ServletContext 所有用户间共享数据
response HttpServletResponse 响应对象
page Object 当前页面(Servlet)的对象 this
out JspWriter 输出对象,数据输出到页面上
config ServletConfig Servlet的配置对象
exception Throwable 异常对象
EL表达式
${表达式}
运算:常见运算符
空运算符: empty
获取值:el表达式只能从域对象中获取值
${域名称.键名}:从指定域中获取指定键的值
${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。
List集合:${域名称.键名[索引]}
Map集合:1 ${域名称.键名.key名称};2 ${域名称.键名["key名称"]}
JavaServer Pages Tag Library JSP标准标签库
常用的JSTL标签
1. if:相当于java代码的if语句
2. choose:相当于java代码的switch语句
3. foreach:相当于java代码的for语句
三层架构与MVC
1. 界面层(表示层):用户看的得界面。用户可以通过界面上的组件和服务器进行交互
2. 业务逻辑层:处理业务逻辑的。
3. 数据访问层:操作数据存储文件。
MVC:
1. M:Model,模型。JavaBean
* 完成具体的业务操作,如:查询数据库,封装对象
2. V:View,视图。JSP
* 展示数据
3. C:Controller,控制器。Servlet
* 获取用户的输入
* 调用模型
* 将数据交给视图进行展示