Servlet&JSP复习笔记 04

1.状态管理
  由于HTTP协议是无状态协议,但不少时候须要将客户端和服务端的屡次请求当作一个来对待.将屡次交互中设计的数据进行保存.

  状态:数据
  管理:对数据的维护web


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会覆盖原有的旧的文本.tomcat

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

  cookie.setPath("/")网络

7.Cookie的限制
  只能光存储字符串,大小不能超过4kb,各个厂商对保存cookie的个数限制.占用过多的网络资源.并且cookie自己存在浏览器,若是是明文存储是不安全的.session


8.Session(会话):
  Session也是实现状态管理的一种手段,保存屡次交互数据时存在服务器端的,在客户端与服务器端之间传递的也只是session的编号.dom

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();

相关文章
相关标签/搜索