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的更多相关文章

  1. Servlet&JSP复习笔记 03

    1.Servlet的声明周期 容器如何创建Servlet对象,如何为Servlet对象分配资源,如何调用Servlet对象的方法来处理请求,以及如何销毁Servlet对象的过程. a.实例化 容器调用 ...

  2. Servlet&JSP复习笔记 02

    1.Servlet获取请求参数 获取请求参数依靠的是表单元素的name属性,广泛意义来说id属性是给客户端使用的,name属性是服务器使用的. a.获取Name-Value的方法: - getPara ...

  3. Servlet&JSP复习笔记 01

    1. Servlet 含义:服务器端的小程序,它只是服务器中的一部分. Servlet Little 标准:Sun公司制定的一种用来扩展Web服务器功能的组件规范. a. 扩展web服务器功能:扩展w ...

  4. Spring MVC 复习笔记04

    复习 springmvc框架: DispatcherServlet前端控制器:接收request,进行response HandlerMapping处理器映射器:根据url查找Handler.(可以通 ...

  5. javaweb servlet jsp简单笔记

    第二章: 1: web 俗称 : 万维网  www 2: web开发 的三大核心: HTML(网页) ,URL(定位),HTTP:(协议) 页面的分类: 静态页面: html+css 动态页面:jsp ...

  6. JSP复习笔记

    1.注释 <!--这个注释会显示在HTML源码中--> <%--隐藏注释,不会显示在HTML源码中--%> 2.声明 <%! java声明 声明变量,方法等 %> ...

  7. 算是学完了《Servlet&JSP学习笔记》,立此存照

    我感觉从构架上来说,算是入门了, 终于可以正式进入SPRING的学习啦...爽 代码就不弄了,真的太多了...花了差不多两周呢..

  8. Servlet和JSP读书笔记(二)

    一. GenericServlet 1. 前面写的 Servlet和JSP学习笔记(一) 中的实例都是通过实现Servlet接口编写的,这样存在的问题就是:你必须实现Servlet中的所有方法,而不管 ...

  9. 【Head First Servlets and JSP】笔记17:JSP所生成的servlet相关问题

    1.容器根据你所写的JSP生成一个类, /* * Generated by the Jasper component of Apache Tomcat * Version: Apache Tomcat ...

随机推荐

  1. part12 非核心代码异步加载

    router文件中的 index component: ()=> import(‘path’) // 这样 访问一个页面 就只请求这个页面的js逻辑 //当app很小的的时候不需要做异步拆分 / ...

  2. oracle (6)---SQL 数据关联查询

    SQL 数据关联查询 Structure Query Language 从多(n)张表查询对应记录信息,必须有至少n-1个关联条件,否则会出现笛卡尔积的情况.1. 等值连接:没有连接关系的数据不会被查 ...

  3. 【动手学pytorch】pytorch的基础操作

    一.Tensor a)       张量是torch的基础数据类型 b)       张量的核心是坐标的改变不会改变自身性质. c)        0阶张量为标量(只有数值,没有方向的量),因为它不随 ...

  4. 【JavaScript】回流(reflow)与重绘(repaint)

    重绘与回流 首先要了解页面是如何呈现的: HTML文档加载后生成DOM树(包括display:none;元素): 在DOM树的基础上配合css样式结构体生成render树(不包含display:non ...

  5. 解压版mysql安装步骤

    第一步:解压mysql,例如解压后的目录在C:\Program Files\mysql-5.6.36-winx64 第二步:配置mysql环境变量,类似配置java的环境变量 计算机右键===> ...

  6. {转} 深入理解 HTTP Session

    session在web开发中是一个非常重要的概念,这个概念很抽象,很难定义,也是最让人迷惑的一个名词,也是最多被滥用的名字之一,在不同的场合,session一次的含义也很不相同.这里只探讨HTTP S ...

  7. MySql、Mongodb和Redis的区别

    NoSQL 的全称是 Not Only SQL,也可以理解非关系型的数据库,是一种新型的革命式的数据库设计方式,不过它不是为了取代传统的关系型数据库而被设计的,它们分别代表了不同的数据库设计思路. M ...

  8. 在线公开课 | 5G时代的视频云服务关键技术与实践

    5G时代来临在即,视频技术将会如何发展呢?基于视频云服务的技术开发又有怎样的变化呢?为此,京东云视频云产品研发部高级总监魏伟为大家做出了详细解读. 魏伟拥有10多年视频行业研发经验,先后从事于AVS标 ...

  9. geodjango七日学习笔记 (7.30整理本地笔记上传到网络)

    第一天进行到现在,在开端的尾巴,想起来写一个学习笔记, 开发环境已搭好,用的是pycharm 环境是本机已有的interpreter python3.7   接下来要做的是新建一个geodjango项 ...

  10. 试验指标|试验单位|均方|随机模型|固定模型|字母标记法|LSR|q检验|LSD|重复值|弥补缺失数据|可加性|平方根转换|对数转换|反正弦转化

    第五章 方差分析 试验指标是什么? 就是统计的测量值,eg:身高体重 试验单位( experimental unit )是什么? 实验载体,比如一只小白鼠 均方是什么? 就是方差 随机模型的τ有何特点 ...