Servlet中Cookie

Servlet Cookie 处理 Cookie是一种在客户端(通常是用户的浏览器)存储的小型文本文件。它由服务器发送到客户端,并在客户端计算机上保存。当用户再次访问同一网站时,Cookie会被发送回服务器,用于识别用户和记住用户的偏好设置。 阅读详情

会话跟踪技术

什么是会话跟踪技术

我们需要先了解一下什么是会话!可以把会话理解为客户端与服务器之间的一次会晤,在一次会晤中可能会包含多次请求和响应。例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器了。从双方接通电话那一刻起,会话就开始了,到某一方挂断电话表示会话结束。在通话过程中,你会向10086发出多个请求,那么这多个请求都在一个会话中。

在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束。


在一个会话的多个请求中共享数据,这就是会话跟踪技术。例如在一个会话中的请求如下:

l  请求银行主页;

l  请求登录(请求参数是用户名和密码);

l  请求转账(请求参数与转账相关的数据);

l  请求信用卡还款(请求参数与还款相关的数据)。


在这上会话中当前用户信息必须在这个会话中共享的,因为登录的是张三,那么在转账和还款时一定是相对张三的转账和还款!这就说明我们必须在一个会话过程中有共享数据的能力。


会话路径技术使用Cookie或session完成

我们知道HTTP协议是无状态协议,也就是说每个请求都是独立的!无法记录前一次请求的状态。但HTTP协议中可以使用Cookie来完成会话跟踪!

在JavaWeb中,使用session来完成会话跟踪,session底层依赖Cookie技术。


Cookie

Cookie概述

什么叫Cookie

Cookie翻译成中文是小甜点,小饼干的意思。在HTTP中它表示服务器送给客户端浏览器的小甜点。其实Cookie就是一个键和一个值构成的,随着服务器端的响应发送给客户端浏览器。然后客户端浏览器会把Cookie保存起来,当下一次再访问服务器时把Cookie再发送给服务器。

 

  Cookie是由服务器创建,然后通过响应发送给客户端的一个键值对。客户端会保存Cookie,并会标注出Cookie的来源(哪个服务器的Cookie)。当客户端向服务器发出请求时会把所有这个服务器Cookie包含在请求中发送给服务器,这样服务器就可以识别客户端了!


Cookie规范

l  Cookie大小上限为4KB;

l  一个服务器最多在客户端浏览器上保存20个Cookie;

l  一个浏览器最多保存300个Cookie;

 

上面的数据只是HTTP的Cookie规范,但在浏览器大战的今天,一些浏览器为了打败对手,为了展现自己的能力起见,可能对Cookie规范“扩展”了一些,例如每个Cookie的大小为8KB,最多可保存500个Cookie等!但也不会出现把你硬盘占满的可能!

注意,不同浏览器之间是不共享Cookie的。也就是说在你使用IE访问服务器时,服务器会把Cookie发给IE,然后由IE保存起来,当你在使用FireFox访问服务器时,不可能把IE保存的Cookie发送给服务器。

Cookie与HTTP头


Cookie是通过HTTP请求和响应头在客户端和服务器端传递的:

l  Cookie:请求头,客户端发送给服务器端;

Ø  格式:Cookie: a=A; b=B; c=C。即多个Cookie用分号离开;

l  Set-Cookie:响应头,服务器端发送给客户端;

Ø  一个Cookie对象一个Set-Cookie:

Set-Cookie: a=A

Set-Cookie: b=B

Set-Cookie: c=C

Cookie的覆盖

  如果服务器端发送重复的Cookie那么会覆盖原有的Cookie,例如客户端的第一个请求服务器端发送的Cookie是:Set-Cookie: a=A;第二请求服务器端发送的是:Set-Cookie: a=AA,那么客户端只留下一个Cookie,即:a=AA。

Cookie第一例

我们这个案例是,客户端访问AServlet,AServlet在响应中添加Cookie,浏览器会自动保存Cookie。然后客户端访问BServlet,这时浏览器会自动在请求中带上Cookie,BServlet获取请求中的Cookie打印出来。

 

AServlet.java

package cn.cloud.servlet;

import java.io.IOException;

import java.util.UUID;

import javax.servlet.ServletException;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

 * 给客户端发送Cookie

 * @author Administrator

 *

 */

public class AServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

       response.setContentType("text/html;charset=utf-8");

       String id = UUID.randomUUID().toString();//生成一个随机字符串

       Cookie cookie = new Cookie("id", id);//创建Cookie对象,指定名字和值

       response.addCookie(cookie);//在响应中添加Cookie对象

       response.getWriter().print("已经给你发送了ID");

    }

}

 

BServlet.java

package cn.cloud.servlet;

 

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.Cookie;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

 * 获取客户端请求中的Cookie

 * @author Administrator

 *

 */

public class BServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

       response.setContentType("text/html;charset=utf-8");

      

       Cookie[] cs = request.getCookies();//获取请求中的Cookie

       if(cs != null) {//如果请求中存在Cookie

           for(Cookie c : cs) {//遍历所有Cookie

              if(c.getName().equals("id")) {//获取Cookie名字,如果Cookie名字是id

                  response.getWriter().print("您的ID是:" + c.getValue());//打印Cookie值

              }

           }

       }

    }

}

Cookie的生命

什么是Cookie的生命

  Cookie不只是有name和value,Cookie还是生命。所谓生命就是Cookie在客户端的有效时间,可以通过setMaxAge(int)来设置Cookie的有效时间。

l  cookie.setMaxAge(-1):cookie的maxAge属性的默认值就是-1,表示只在浏览器内存中存活。一旦关闭浏览器窗口,那么cookie就会消失。

l  cookie.setMaxAge(60*60):表示cookie对象可存活1小时。当创建时,浏览器会把Cookie保存到硬盘上,就算关闭浏览器,就算重启客户端电脑,cookie也会存活1小时;

l  cookie.setMaxAge(0):cookie生命等于0是一个特殊的值,它表示cookie被作废!也就是说,如果原来浏览器已经保存了这个Cookie,那么可以通过Cookie的setMaxAge(0)来删除这个Cookie。无论是在浏览器内存中,还是在客户端硬盘上都会删除这个Cookie。

案例:显示上次访问时间

l  创建Cookie,名为lasttime,值为当前时间,添加到response中;

l  在AServlet中获取请求中名为lasttime的Cookie;

l  如果不存在输出“您是第一次访问本站”,如果存在输出“您上一次访问本站的时间是xxx”;

AServlet.java

    public void doGet(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

       response.setContentType("text/html;charset=utf-8");

      

       Cookie cookie = new Cookie("lasttime", new Date().toString());

       cookie.setMaxAge(60 * 60);

       response.addCookie(cookie);

       Cookie[] cs = request.getCookies();

       String s = "您是首次访问本站!";

       if(cs != null) {

           for(Cookie c : cs) {

              if(c.getName().equals("lasttime")) {

                  s = "您上次的访问时间是:" + c.getValue();

              }

           }

       }

       response.getWriter().print(s);

    }

Cookie的path

什么是Cookie的路径

现在有WEB应用A,向客户端发送了10个Cookie,这就说明客户端无论访问应用A的哪个Servlet都会把这10个Cookie包含在请求中!但是也许只有AServlet需要读取请求中的Cookie,而其他Servlet根本就不会获取请求中的Cookie。这说明客户端浏览器有时发送这些Cookie是多余的!

可以通过设置Cookie的path来指定浏览器,在访问什么样的路径时,包含什么样的Cookie。

Cookie路径与请求路径的关系

下面我们来看看Cookie路径的作用:

下面是客户端浏览器保存的3个Cookie的路径:

a: /cookietest;

b: /cookietest/servlet;

c: /cookietest/jsp;


下面是浏览器请求的URL:

A: http://localhost:8080/cookietest/AServlet;

B: http://localhost:8080/cookietest/servlet/BServlet;

C: http://localhost:8080/cookietest/servlet/CServlet;


l  请求A时,会在请求中包含a;

l  请求B时,会在请求中包含a、b;

l  请求C时,会在请求中包含a、c;


也就是说,请求路径如果包含了Cookie路径,那么会在请求中包含这个Cookie,否则不会请求中不会包含这个Cookie。

l  A请求的URL包含了“/cookietest”,所以会在请求中包含路径为“/cookietest”的Cookie;

l  B请求的URL包含了“/cookietest”,以及“/cookietest/servlet”,所以请求中包含路径为“/cookietest”和“/cookietest/servlet”两个Cookie;

l  B请求的URL包含了“/cookietest”,以及“/cookietest/jsp”,所以请求中包含路径为“/cookietest”和“/cookietest/jsp”两个Cookie;


设置Cookie的路径

设置Cookie的路径需要使用setPath()方法,例如:

cookie.setPath(“/cookietest/servlet”);


如果没有设置Cookie的路径,那么Cookie路径的默认值当前访问资源所在路径,例如:

l  访问http://localhost:8080/cookietest/AServlet时添加的Cookie默认路径为/cookietest;

l  访问http://localhost:8080/cookietest/servlet/BServlet时添加的Cookie默认路径为/cookietest/servlet;

l  访问http://localhost:8080/cookietest/jsp/BServlet时添加的Cookie默认路径为/cookietest/jsp;


Cookie的domain

Cookie的domain属性可以让网站中二级域共享Cookie,次要!

百度你是了解的对吧!

http://www.baidu.com

http://zhidao.baidu.com

http://news.baidu.com

http://tieba.baidu.com

现在我希望在这些主机之间共享Cookie(例如在www.baidu.com中响应的cookie,可以在news.baidu.com请求中包含)。很明显,现在不是路径的问题了,而是主机的问题,即域名的问题。处理这一问题其实很简单,只需要下面两步:

l  设置Cookie的path为“/”:c.setPath(“/”);

l  设置Cookie的domain为“.baidu.com”:c.setDomain(“.baidu.com”)。


当domain为“.baidu.com”时,无论前缀是什么,都会共享Cookie的。但是现在我们需要设置两个虚拟主机:www.baidu.com和news.baidu.com。

 

第一步:设置windows的DNS路径解析

找到C:\WINDOWS\system32\drivers\etc\hosts文件,添加如下内容

127.0.0.1       localhost

127.0.0.1       www.baidu.com

127.0.0.1       news.baidu.com


第二步:设置Tomcat虚拟主机

找到server.xml文件,添加<Host>元素,内容如下:

      <Host name="www.baidu.com"  appBase="F:\webapps\www"

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false"/>

      <Host name="news.baidu.com"  appBase="F:\webapps\news"

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false"/>

 

第三步:创建A项目,创建AServlet,设置Cookie。

       Cookie c = new Cookie("id", "baidu");

       c.setPath("/");

        c.setDomain(".baidu.com");

       c.setMaxAge(60*60);

       response.addCookie(c);

       response.getWriter().print("OK");


把A项目的WebRoot目录复制到F:\webapps\www目录下,并把WebRoot目录的名字修改为ROOT。


第四步:创建B项目,创建BServlet,获取Cookie,并打印出来。

       Cookie[] cs = request.getCookies();

       if(cs != null) {

           for(Cookie c : cs) {

              String s = c.getName() + ": " + c.getValue() + "<br/>";

              response.getWriter().print(s);

           }

       }


把B项目的WebRoot目录复制到F:\webapps\news目录下,并把WebRoot目录的名字修改为ROOT。


第五步:访问www.baidu.com\AServlet,然后再访问news.baidu.com\BServlet。


Cookie中保存中文

Cookie的name和value都不能使用中文,如果希望在Cookie中使用中文,那么需要先对中文进行URL编码,然后把编码后的字符串放到Cookie中。

 向客户端响应中添加Cookie

       String name = URLEncoder.encode("姓名", "UTF-8");

       String value = URLEncoder.encode("张三", "UTF-8");

       Cookie c = new Cookie(name, value);

       c.setMaxAge(3600);

       response.addCookie(c);

 

从客户端请求中获取Cookie

       response.setContentType("text/html;charset=utf-8");

       Cookie[] cs = request.getCookies();

       if(cs != null) {

           for(Cookie c : cs) {

              String name = URLDecoder.decode(c.getName(), "UTF-8");

               String value = URLDecoder.decode(c.getValue(), "UTF-8");

              String s = name + ": " + value + "<br/>";

              response.getWriter().print(s);

           }

       }


显示曾经浏览过的商品


index.jsp

  <body>

    <h1>商品列表</h1>

    <a href="/day06_3/GoodServlet?name=ThinkPad">ThinkPad</a><br/>

    <a href="/day06_3/GoodServlet?name=Lenovo">Lenovo</a><br/>

    <a href="/day06_3/GoodServlet?name=Apple">Apple</a><br/>

    <a href="/day06_3/GoodServlet?name=HP">HP</a><br/>

    <a href="/day06_3/GoodServlet?name=SONY">SONY</a><br/>

    <a href="/day06_3/GoodServlet?name=ACER">ACER</a><br/>

    <a href="/day06_3/GoodServlet?name=DELL">DELL</a><br/>

   

    <hr/>

    您浏览过的商品:

    <%

    Cookie[] cs = request.getCookies();

    if(cs != null) {

        for(Cookie c : cs) {

            if(c.getName().equals("goods")) {

               out.print(c.getValue());

            }

        }

    }

    %>

  </body>

 

GoodServlet

public class GoodServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response)

           throws ServletException, IOException {

       String goodName = request.getParameter("name");

       String goods = CookieUtils.getCookValue(request, "goods");

      

       if(goods != null) {

           String[] arr = goods.split(", ");

           Set<String> goodSet = new LinkedHashSet(Arrays.asList(arr));

           goodSet.add(goodName);

           goods = goodSet.toString();

           goods = goods.substring(1, goods.length() - 1);

       } else {

           goods = goodName;

       }

       Cookie cookie = new Cookie("goods", goods);

       cookie.setMaxAge(1 * 60 * 60 * 24);

       response.addCookie(cookie);

       response.sendRedirect("/day06_3/index.jsp");

    }

}

 

CookieUtils

public class CookieUtils {

    public static String getCookValue(HttpServletRequest request, String name) {

       Cookie[] cs = request.getCookies();

       if(cs == null) {

           return null;

       }

       for(Cookie c : cs) {

           if(c.getName().equals(name)) {

              return c.getValue();

           }

       }

       return null;

    }

}

servlet-cookie实现向客户端写cookie信息 title: servlet cookie实现向客户端写cookie信息 date: 2019-07-09 11:00:00 servlet**基础 servlet是Java web应用中最核心的组件,也是web服务器组件,它是一个中间控制层,负责处理客户端提交过来的请求数据以及调用业务逻辑对象,根据业务逻辑来控制页面转发。 cookie** 在互联网中,cookie是小段的文本信息,... 阅读详情

相关推荐

Win11+VSCode+TeXLive:学术党必备的LaTeX环境配置避坑指南(2024最新版)

本文详细介绍了如何在Windows 11系统下,通过VSCode编辑器与TeXLive发行版配置高效的LaTeX学术写作环境。针对国内用户常见的镜像下载慢、插件配置复杂等问题,提供了优化方案和避坑指南,帮助科研人员和学生快速搭建流畅的学术写作工作流。

plum99的博客 617

CookieUtils--cookie工具

CookieUtils /** * * @Title: CookieUtils.java * @Package com.imooc.utils * @Description: Cookie 工具类 * Copyright: Copyright (c) * Company: www.imooc.com * * @author imooc * @version V1.0 */...

踟蹰千年的博客 747

准确率、召回率、f1指标计算的区别

准确率是模型正确预测的样本占总样本的比例。

stephen147的博客 1414

从登录到免登录:JSP与Servlet结合Cookie的基本实现

Cookie实现免登陆功能;Cookie;免登录

weixin_52937170的博客 1046

Windows如何使用Anaconda 3进行keras环境的配置

** Windows如何使用Anaconda 3进行keras环境的配置 搭建Keras环境* Anaconda3如何安装keras,主要包括下面三步: 1.安装mingw libpython 2.安装theano 3.安装keras 若你还没有按装anaconda,赶紧下载安装吧! 下载途径有两个 (1)Anaconda版本为Anaconda 4.4.0,对应的python版本为3.6,附上An...

Lance_liangliang的博客 1601

学生党投稿Applied Soft Computing:从导师账号登录到通讯作者设置的全流程解惑

本文详细解析了学生投稿Applied Soft Computing期刊的全流程,重点介绍了导师账号登录、通讯作者设置、作者排序调整以及开放获取费用等关键环节的避坑技巧。针对LaTeX稿件处理和财务选项选择提供了实用建议,帮助学生顺利完成SCI期刊投稿。

weixin_30352191的博客 211

Java如何获取Cookie里的指定值

Cookie是在客户端(通常是浏览器)存储的小型文本文件,用于在用户访问网站时存储特定信息。服务器在响应HTTP请求时可以通过设置Cookie,在客户端保存数据,并在后续的HTTP请求中把这些数据发送回服务器。Cookie通常用于实现用户认证、会话管理、个性化设置等功能。

牛肉胡辣汤 3459

MCAL中Dsadc的配置

DSADC模块作为一个专用的模块,主要应用在编码器软解码,功能强大而复杂,这里介绍了Dsadc的mcal配置和详细描述,让你全面学习和理解这个模块功能和应用。

dhyw12399999的博客 788

Servlet学习笔记6——cookie与session

文章目录Cookie概述Cookie是什么? Cookie作用? Cookie保存在哪里?Cookie只有在javaweb中有吗?Cookie实现的功能,常见的有哪些?在java中Cookie被当做类来处理,使用new运算符可以创建Cookie对象,而且Cookie由两部分组成,在java程序中怎么创建和读取Cookie?在浏览器客户端无论是硬盘文件中还是缓存中保存的Cookie,什么时候会再次发送给服务器呢?默认情况下Cookie会和哪些路径绑定在一起????浏览器提交Cookie给服务器,服务器怎么接收

. 341

Cadence OrCAD Capture原理图中为功能模块分配ROOM的方法

本文详解介绍原理图设计阶段为原理图模块分配ROOM的方法。

fydar的博客 1345

【学习系列】SAP RAP 3:添加多层级的子节点

本文详细介绍了在SAP ABAP RAP开发中如何创建多层级业务对象。主要内容包括:1)创建明细和计划行层级的数据库表及CDS视图;2)使用association和composition关键字建立父子关联关系;3)创建各层级的投影视图并设置层级关系;4)更新行为定义,添加关联、操作权限等控制;5)更新服务定义公开新增视图;6)创建元数据扩展优化UI展示。通过这一系列步骤,实现了从抬头到明细再到计划行的完整业务对象层级结构,为后续UI功能扩展奠定了基础。

DeveloperMrMeng的博客 587

utils 获取cookie的值

获取cookie的值

weixin_45588452的博客 315

YOLOv8改进 | 注意力篇 | YOLOv8引入EMAttention(EMA)注意力

具体来说,除了对全局信息进行编码以重新校准每个并行分支中的通道权重之外,还通过跨维度交互来进一步聚合两个并行分支的输出特征,以捕获像素级的成对关系。3. 跨空间学习:除了在每个并行子网络中建立局部的跨通道交互外,EMA模块还通过跨空间学习方法融合了两个并行子网络的输出特征图。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv8改进有效涨点专栏,后期我会根据各种最新的前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 895

Servlet中Cookie的使用

文章目录前言一、Cookie和Session的概念1. 会话管理2. 保存会话的两种技术二、Cookie的使用1. 常用API2. Cookie的清除以及设置路径注意事项3. Cookie的小案例:记住用户名总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,

Hatty1920的博客 2244

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

servlet中cookie详解

一、Cookie概述 javax.servlet.http.Cookie类用于创建一个Cookie,response接口也中定义了一个addCookie方法,它用于在其响应头中增加一个相应的Set-Cookie头字段。 同样,request接口中也定义了一个getCookies方法,它用于获取客户端提交的Cookie。 二、Cookie类的方法 ①public Cookie(String name,String value),新建Cookie ②setValue与getValue方法 ③...

m0_49828549的博客 2064

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java Servlet Cookie

Java ServletCookie: Servlet Cookie 处理 Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息。Java Servlet 显然支持 HTTP Cookie。 识别返回用户包括三个步骤: 服务器脚本向浏览器发送一组 Cookie。例如:姓名、年龄或识别号码等。 浏览器将这些信息存储在本地计算机上,以备将来使用。 当下一次浏览器向 Web 服务器发送任何请求时,浏览器会把这些 Cookie 信息发送到服务器,服务器将使用这些信息来识别用户。 本章将向您讲解如何

sungancd的博客 332

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Servlet的Cookie和Session机制

Servlet Cookies Cookies定义:Cookies是存储在客户端计算机上的文本文件,并保留了用户的各种跟踪信息。 Cookies作用:会话保持,如完成用户的登录与状态保持 Cookies的工作原理: 客户端向服务区发起登录请求 服务器脚本(代码)向浏览器发送一组Cookies,例如:姓名,年龄等 浏览器将这些信息存储在本地计算机上,以备将来使用 当下一次浏览器向web服务器发送任何请求时。浏览器会把这些Cookies信息发送到服务器,服务器将使用这些信息来识别账户 Cookies构成 C

wkh18891843165的博客 1769

servlet怎么存取cookie

servlet存入cookieCookie cookie = new Cookie("name",value);//创建一个cookie对象,name为cookie名字,value是cookie内容 cookie.setMaxAge(60*60*10);//设置cookie有效期,不设置有效期的话默认有效期为本次会话 cookie.setPath("/");//设置...

minolk的博客 3580

servlet cookie处理实践

一、servlet中处理cookie的方法 方法描述 public void setDomain(String pattern)该方法设置 cookie 适用的域名。 public String getDomain()该方法获取 cookie 适用的域名。 public void setMaxAge(int expiry)该方法设置cookie生产的时间(以秒为单位)。如果不设置,co

不积跬步,无以至千里 2475

Servlet(Cookie和Session)

🐲 1. Cookie 的工作流程 🐲 2. Servlet中操作 Cookie 和 Session 的api 🐲 3. 案例1: 模拟登录 🐲 4. 上传文件 🐲 5. 案例2: 上传文件

m0_58761900的博客 1928

Servlet学习笔记——Servlet Cookie处理

处理Cookie 通过 Servlet 读取 Cookie 要读取 Cookie,您需要通过调用 HttpServletRequest 的 getCookies( ) 方法创建一个 javax.servlet.http.Cookie 对象的数组。然后循环遍历数组,并使用 getName() 和 getValue() 方法来访问每个 cookie 和关联的值。 import java.io.IOException; import java.io.PrintWriter; import java.net.URL

weixin_46835101的博客 231

Servlet实现Cookie的创建,读取,删除

(1)如何创建cookie案例 package com.tsinghua; import javax.servlet.http.*; import java.io.*; public class CookieTest1 extends HttpServlet{ //处理get请求 public void doGet(HttpServletRequest req,HttpServ

徐刘根的博客 1万+

Servlet学习之Cookie

Servlet学习之Cookie预备知识什么是一次web会话? ​ 会话是web技术中的一个术语,可以简单的理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,这个过程称为一个会话。 ​ 如果在打开一个浏览器访问一个页面后,再打开一个浏览器访问同一个页面,那这就是有两个会话;而打开一个浏览器访问一个页面后,通过这个页面上的某个超链接是从新的浏览器打开的

a1n9n7e的博客 380
上一篇: Java中Throwable源码阅读
下一篇: Servlet中HttpSession
午-夜
博客等级 码龄12年 95粉丝 133原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值