Servlet&JSP复习笔记 04
1.状态管理
因为HTTP协议是无状态协议,但很多时候需要将客户端和服务端的多次请求当做一个来对待.将多次交互中设计的数据进行保存.
状态:数据
管理:对数据的维护
2.Cookie
客户端向服务器发送一个请求后,服务器会将一段文本信息以set-cookie消息头的方式发回给客户端,浏览器会存储这一段信息,
当客户端再次向服务器发出请求时,浏览器会默认给服务器发送这段信息.
创建Cookie:
Cookie c = new Cookie(String name,String value);
response.addCookie(c);
查询Cookie:
Cookie[] cookies = request.getCookies();
可以返回null.
cookie.getName();
cookie.getValue();
修改cookie:
如果set-cookie消息头发挥文本的名字在浏览器中已经存在,name会覆盖原有的旧的文本.
3.Cookie的原理:
1.发送请求;
2.执行response.addCookie语句后,就会有set-cookie消息头发送一段文本到浏览器;
3.浏览器保存信息到硬盘或者内存中;
4.当再次发送请求时,会以cookie消息头的形式自动将保存的文本发送到服务器.
5.服务器端可以使用request.getCookie获取cookie的值.
4.Cookie的生命周期
默认情况下,cookie存储组内存中,所以关闭浏览器时,cookie消失.
设置生命周期:
cookie.setMaxAge(); 单位是秒 >0 指在硬盘上保存的时间 =0 立即销毁 <0 等同于默认情况,保存在内存中
5.设置中文
URLEncoder.encode("中文","UTF-8");
URLDncoder.encode("中文","UTF-8");
6.Cookie的路径问题
只有当浏览器访问Cookie的路径或者子路径时,才会将这个Cookie进行上传.
默认情况下,Cookie的路径是创建Cookie的路径.
cookie.setPath("/")
7.Cookie的限制
只能光存储字符串,大小不能超过4kb,各个厂商对保存cookie的个数限制.占用过多的网络资源.而且cookie本身存在浏览器,如果是明文存储是不安全的.
8.Session(会话):
Session也是实现状态管理的一种手段,保存多次交互数据时存在服务器端的,在客户端与服务器端之间传递的也只是session的编号.
9.Session的原理:
客户端第一次访问server-->server为不同的客户端创建一个session对象-->在提供响应时间session对象的唯一编号以set-cookie消息头的方式返回客户端
-->客户端将这个id存在内存中-->再次发送请求时,内存中的id会自动发送给服务器端-->服务器端根据id查找对应的对象
10.Session的使用
a.创建session对象: 实现登录操作
HttpSession s = request.getSession(bool);
bool = true:根据id查询session,有则使用,没有则创建.如果bool=false没有id则返回null.
b.使用Session绑定数据 可以实现登录操作
session.setAttribute(String name,Object value);
session.getAttribute(name)
c.删除session
session.inValidate(); 可以实现退出登录操作
11.Session验证
一些资源只有用户登录后才能进行访问.
12.Session的超时问题
容器回将一些闲置的很久的session进行回收.闲置时间就是session的生命周期.
默认的超时时间是:30min.
a)可以修改tomcat/conf/web.xml中进行更改 全局
b)可以使用session.setMaxInactiveInterval(秒) 个例
13.禁用Cookie的后果
基于Cookie来存储的sid会失效,session无法使用.如果还需要继续使用的话,可以使用URL重写的方式.
URL重写:改变地址栏的地址内容,以新的形式访问服务器并且能携带一个sid
response.encodeURL(); //超链接的时候
response.encodeRedirectURL(); //重定向时将地址进处理
14.验证码
1.防止恶意攻击,不停的注册,不停的登录来占用服务器资源;
2.只有发送请求时,才将随机昌盛的字符组合会知道图片上,返回.
3.生成图片:
绘制一张从白纸到内容生成图片的过程
//创建画布
BufferedImage image = new BufferedImage(100, 30, BufferedImage.TYPE_INT_RGB);
//获取画笔
Graphics g = image.getGraphics();
//设置画笔颜色
Random random = new Random();
g.setColor(new Color(random.nextInt(255),random.nextInt(255),random.nextInt(255)));
//设置字体
g.setFont(new Font(null, Font.BOLD, 24));
//绘制背景
g.fillRect(0, 0, 100, 30);
//更改画笔颜色
g.setColor(new Color(255,255,255));
//绘制字符串
String temp = "" + random.nextInt(20) + random.nextInt(20) + random.nextInt(20);
g.drawString(temp, 10, 25);
//保存网络至网络流(设置响应流的图片)
response.setContentType("image/jpeg");
//获取输出流
OutputStream outputStream = response.getOutputStream();
//保存图片到输出流
ImageIO.write(image, "jpeg", outputStream);
outputStream.close();
Servlet&JSP复习笔记 04的更多相关文章
- Servlet&JSP复习笔记 03
1.Servlet的声明周期 容器如何创建Servlet对象,如何为Servlet对象分配资源,如何调用Servlet对象的方法来处理请求,以及如何销毁Servlet对象的过程. a.实例化 容器调用 ...
- Servlet&JSP复习笔记 02
1.Servlet获取请求参数 获取请求参数依靠的是表单元素的name属性,广泛意义来说id属性是给客户端使用的,name属性是服务器使用的. a.获取Name-Value的方法: - getPara ...
- Servlet&JSP复习笔记 01
1. Servlet 含义:服务器端的小程序,它只是服务器中的一部分. Servlet Little 标准:Sun公司制定的一种用来扩展Web服务器功能的组件规范. a. 扩展web服务器功能:扩展w ...
- Spring MVC 复习笔记04
复习 springmvc框架: DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器:根据url查找Handler.(可以通 ...
- javaweb servlet jsp简单笔记
第二章: 1: web 俗称 : 万维网 www 2: web开发 的三大核心: HTML(网页) ,URL(定位),HTTP:(协议) 页面的分类: 静态页面: html+css 动态页面:jsp ...
- JSP复习笔记
1.注释 <!--这个注释会显示在HTML源码中--> <%--隐藏注释,不会显示在HTML源码中--%> 2.声明 <%! java声明 声明变量,方法等 %> ...
- 算是学完了《Servlet&JSP学习笔记》,立此存照
我感觉从构架上来说,算是入门了, 终于可以正式进入SPRING的学习啦...爽 代码就不弄了,真的太多了...花了差不多两周呢..
- Servlet和JSP读书笔记(二)
一. GenericServlet 1. 前面写的 Servlet和JSP学习笔记(一) 中的实例都是通过实现Servlet接口编写的,这样存在的问题就是:你必须实现Servlet中的所有方法,而不管 ...
- 【Head First Servlets and JSP】笔记17:JSP所生成的servlet相关问题
1.容器根据你所写的JSP生成一个类, /* * Generated by the Jasper component of Apache Tomcat * Version: Apache Tomcat ...
随机推荐
- h5-切割轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java 类提供了自定义的构造方法,那么类的默认构造不会被调用
以下代码无法通过编译: public class Test1 { public static void main(String[] args) { //int a=6; Foo obj=new Foo ...
- 汪慧和201771010123《面向对象程序设计(Java)》第三周学习总结
1.实验目的与要求 (1)进一步掌握Eclipse集成开发环境下java程序开发基本步骤: (2)熟悉PTA平台线上测试环境: (3)掌握Java语言构造基本程序语法知识(ch1-ch3): (4)利 ...
- TensorFlow(一)
一.Hello World 1.只安装CPU版,TensorFlow1.14.0版本代码 # import tensorflow as tf import tensorflow.compat.v1 a ...
- ZJNU 2354 - 进贡
分开考虑k=1 k=2和k>=3的情况 2和3这两个质数比较特殊,遇到的话直接输出1就行 对于“神灵的不满意度为m的约数中,比m小且最大的那个”这句描述,指m除了自身和1这两个因子里找最大的那个 ...
- 将微服务注册到Euraka
1.添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId> ...
- [转载]matlab视频读取函数VideoReader
看到以前matlab中读取视频多 使用mmreader等(参考<matlab读取/播放视频的函数>),而现在matlab有一个专门的视频读取类VideoReader完成视频读取的功能. 相 ...
- Ubuntu上运行tensorflow C++的完整例子
个人博客原文:http://www.bearoom.xyz/2019/08/25/ubuntu-tensorflow-cc-example/ 之前记录的运行Tensorflow的C++接口的例子都是零 ...
- 64)vertor 简单使用
1)简单 代码样例:我的理解 vector 其实就是一个简单的数组,然后通过迭代器来进行 遍历数组中的值,而且有自带push_back()来添加元素 #include<iostream&g ...
- 【MySQL参数】-innodb_buffer_pool_chunk_size
如果 初始化缓冲池时 innodb_buffer_pool_chunk_size* innodb_buffer_pool_instances大于当前缓冲池大小, innodb_buffer_pool_ ...