回顾:
response:响应往浏览器写东西响应行操作状态码常用方法:setStatus(int code): 1 2 3响应头格式: key:value(value可以是多个)常用方法:setHeader(String key,String value):设置字符串形式的响应头addHeader(String key,String value):添加字符串形式的响应头 若没有设置则设置,若设置过则追加响应体浏览器展示的内容常用方法:getWriter()getOutputStream()注意:俩流互斥,服务器会把我们关闭//
    常见的响应头location:重定向 配合302开发中:response.sendRedirect("路径");refresh:定时刷新 response.setHeader("refresh","秒数;url=路径");//javameta//htmlcontent-type:设置文件的mimetype,设置响应流的编码且告诉浏览器用什么编码打开开发中:response.setContentType("text/html;charset=utf-8");content-disposition:设置文件下载response.setHeader("content-disposition","attachment;filename="+文件名称);文件下载:设置两个头一个流content-typecontent-dispositiongetOutputStream()//
request:请求获取从浏览器发送过来数据请求行常用方法:获取项目名:getContextPath()请求头格式:key:value(value可以是多个)常用方法:getHeader(String key)请求参数String getParameter(String key)String[] getParameterValues(String key)Map<String,String[]> getParameterMap()获取参数中文乱码:通用方式:new String(参数.getBytes("iso-8859-1"),"utf-8");针对于post:request.setCharacterEncoding("utf-8");
    常用的头信息:user-agent:获取浏览器内核referer:页面从那里跳转过来
///
request域对象:xxxAttribute()请求转发:request.getRequestDispatcher("/内部路径").forward(request,response);        

jsp cookie session

案例1-记录用户上次访问时间
需求:当用户第一次登录的时候,提示:你是第一次访问,且记录该次访问时间,下一次访问的时候,获取上一次访问时间且展示出来
技术分析:会话技术cookiejsp
//
jsp:java server pages(java服务器页面)本质上jsp就是一个servlet,在html代码中嵌套java代码,运行在服务器端,处理请求,生成动态的内容.对应的java和class文件在tomcat目录下的work目录后缀名 .jsp执行流程:1.浏览器发送请求,访问jsp页面2.服务器接受请求,jspSerlvet会帮我们查找对应的jsp文件3.服务器将jsp页面翻译成java文件.4.jvm会将java编译成.class文件5.服务器运行class文件,生成动态的内容.6.将内容发送给服务器,7.服务器组成响应信息,发送给浏览器8.浏览器接受数据,解析展示jsp的脚本:    <%...%> java程序片段生成成jsp的service方法中<%=...%> 输出表达式生成成jsp的service方法中,相当于在java中调用out.print(..)<%!...%> 声明成员成员位置.
/
会话技术当用户打开浏览器的时候,访问不同的资源,知道用户将浏览器关闭,可以认为这是一次会话.        作用:因为http协议是一个无状态的协议,它记录不论上次访问的内容.用户在访问过程中难免会产生一些数据,通过会话技术就可以将起保存起来.例如:用户登录验证码购物车访问记录.....
分类:cookie:浏览器端会话技术session:服务器端会话技术
//
cookie:小饼干 小甜点cookie是由服务器生成,通过response将cookie写回浏览器(set-cookie),保留在浏览器上,下一次访问,浏览器根据一定的规则携带不同的cookie(通过request的头 cookie),我们服务器就可以接受cookiecookie的api:new Cookie(String key,String value)写回浏览器:response.addCookie(Cookie c)获取cookie:Cookie[] request.getCookies()cookie的常用方法:getName():获取cookie的key(名称)getValue:获取指定cookie的值
/
案例1-步骤分析:1.创建一个serlvet RemServlet 路径:/rem2.在servlet中:获取指定cookie 例如:名称为 lastTimerequest.getCookies()判断cookie是否为空若为空:提示信息 第一次访问若不为空:获取此cookie的value展示信息:你上次访问时间是....将这次访问时间记录,写会浏览器

cookie-总结:常用方法:setMaxAge(int 秒):设置cookie在浏览器端存活时间  以秒为单位若设置成 0:删除该cookie(前提必须路径一致)setPath(String path):设置cookie的路径.当我们访问的路径中包含此cookie的path,则携带默认路径: 访问serlvet的路径,从"/项目名称"开始,到最后一个"/"结束例如:访问的serlvet路径:/day11/a/b/hello默认路径为:/day11/a/b手动设置路径:以"/项目名"开始,以"/"结尾;
/
案例2:记录用户浏览历史
需求:当用户访问一个商品的时候,需要将该商品保留在浏览记录中
技术分析:cookie
步骤分析:1.先将product_list.htm转成jsp2.点击一个商品,展示该商品的信息,将该商品id记录到cookie  (GetProductById)获取之前的浏览记录 例如名称:ids判断cookie是否为空若为空 将当前商品的id起个名称 ids 放入cookie中  ids=1若不为空,获取值 例如:ids=2-1  当前访问的id=1  使用"-"分割商品id判断之前记录中有无该商品若有:将当前的id放入前面  结果 ids=1-2若没有:继续判断长度是否>=3若>=3,移除最后一个,将当前的id放入最前面若<3,直接将当前的id放入最前面.若 ids=3-2-1 现在访问1 结果 ids=1-3-2若 ids=4-3-2 现在访问1 结果 ids=1-4-33.再次回到product_list.jsp页面,需要将之前访问商品展示在浏览记录中获取ids  例如:ids=2-3-1切割
/
扩展:删除浏览记录
技术分析:cookie.setMaxAge(0)
步骤分析:1.在浏览器记录中添加一个超链接 <a href="/day1101/clearHistroy">清空</a>2.创建servlet clearHistroy创建一个cookie 名称路径保持一致setMaxAge(0)写回浏览器3.页面跳转重定向 product_list.jsp/
注意:cookie不能跨浏览器cookie中不支持中文
/
案例3-添加到购物车
需求:在商品详情页面有一个添加到购物车,点击则将该商品添加到购物车,点击购物车连接将里面的所有商品展示出来
技术分析:session
//
session:服务器端会话技术.当我们第一次访问的服务器的时候,服务器获取id,能获取id要拿着这个id去服务器中查找有无此session若查找到了:直接拿过来时候,将数据保存,需要将当前sessin的id返回给浏览器若查找不到:创建一个session,将你的数据保存到这个session中,将当前session的id返回给浏览器不能获取id创建一个session,将你的数据保存到这个session中,将当前session的id返回给浏览器获取一个session:HttpSession  request.getSession()域对象:xxxAttribute生命周期:创建:第一次调用request.getsession()创建销毁:服务器非正常关闭session超时默认时间超时:30分钟  web.xml有配置 手动设置超时:setMaxInactiveInterval(int 秒) 了解手动干掉session★session.invalidate()存放的私有的数据.

步骤分析:1.点击添加到购物车的时候,提交到一个servlet add2CartServlet需要将商品名称携带过去2.add2CartServlet中的操作获取商品的名称将商品添加到购物车 购物车的结构 Map<String 名称,Integer 购买数量>将购物车放入session中就可以了将商品添加到购物车分析:获取购物车判断购物车是否为空若为空:第一次添加创建一个购物车将当前商品put进去.数量:1将购物车放入session中若不为空:继续判断购物车中是否有该商品若有:取出count 将数量+1 将商品再次放入购物车中若没有:将当前商品put进去 数量:1提示信息:你的xx已添加到购物车中3.点击购物车连接的时候 cart.jsp从session获取购物车判断购物车是否为空若为空:提示信息若不为空:遍历购物车即可//
案例2-扩展清空购物车:思路1:将购物车移除思路2:将session干掉
步骤分析:在cart.jsp上添加一个超链接 清空购物车<a href="/day1101/clearCart">清空购物车</a>在clearCart中需要调用session.invalidate()重定向到购物车页面        

上午回顾:
jsp:java 服务器页面就是在html代码嵌套java代码,本质上就是一个servlet,运行在服务器,接受请求,处理业务逻辑,生成动态内容jsp三个脚本:<%...%> java片段 生成在jsp的service方法中<%=...%> 输出表达式生成service方法中不能";"结尾<%!...%> 声明成员
cookie:浏览器端会话技术由服务器生成,key=value格式,通过响应头(set-cookie)写回浏览器保存在浏览器端,当浏览器下一次访问的时候,根据一定的规则携带不同的cookie,通过请求头(cookie)携带
常用方法:构造:new Cookie(String key,String value);写回浏览器:response.addCookie(Cookie c)获取:Cookie[] request.getCookies();cookie的api:getName():获取cookie的名称getValue():获取cookie的值setMaxAge(int 秒):设置cookie在浏览器的存活时间若设置为0:删除cookie(前提必须路径保持一致)setPath(String path):设置cookie的路径  /day1101/若访问的路径中包含cookie的path,则携带过去注意:cookie不能跨浏览器cookie中不支持中文
///
session:服务器端会话技术:依赖于cookie浏览器访问服务器,服务器获取jsessionid若获取不到创建一个sesion,将数据保存,将当前session的jsessionid通过cookie返回浏览器若获取到拿着该jsessionid去session池中查找有无该session若查找到:直接拿过来使用,将jsessionid写回浏览器若查找不到创建一个sesion,将数据保存,将当前session的jsessionid通过cookie返回浏览器常用方法:获取session:HttpSession request.getSession():域对象:session生命周期创建:java代码中可以认为 第一次使用request.getSession创建销毁:服务器关闭session超时默认超时手动设置超时★手动干掉session session.invalidate()/

转载于:https://www.cnblogs.com/chenyanlong/p/9976074.html

day11-(cookiesession)相关推荐

  1. python 之路,Day11 (下)- sqlalchemy ORM

    python 之路,Day11 - sqlalchemy ORM 本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 多对多关系 表结构设计作业 1. ORM介绍 ...

  2. day11 - 15(装饰器、生成器、迭代器、内置函数、推导式)

    day11:装饰器(装饰器形成.装饰器作用.@语法糖.原则.固定模式) 装饰器形成:最简单的.有返回值的.有一个参数的.万能参数 函数起的作用:装饰器用于在已经完成的函数前后增加功能 语法糖:使代码变 ...

  3. Java基础day11

    Java基础day11 Java基础day11-多态&抽象类&接口 1 多态 1.1多态的概述 1.2多态中的成员访问特点 1.3多态的好处和弊端 1.4多态中的转型 1.5多态的案例 ...

  4. Day11多态部分-6 【1.4 多态的应用以及注意事项】

    [1.4 多态的应用以及注意事项] 在多态中:父类指向子类对象时 成员函数的特点: 编译看左边 运行看右边 在编译时期 参阅引用型变量所属的类中是否有调用的方法 如果有,编译通过;如果没有, 编译失败 ...

  5. Day11多态部分-6 【1.3 对象的向上转型和向下转型】

    [1.3 对象的向上转型和向下转型] + - 向上转型 子类对象赋值给父类类型的引用时 会自动将子类对象对应的类型 提升为父类类型 语法: 父类类型 引用 = new 子类的构造方法(); 特点: 此 ...

  6. Day11多态部分-5

    package Day11;public class Test_05 {public static void main(String[] args) {MainBoard mb = new MainB ...

  7. Day11多态部分-4

    package Day11;public class Test_04 {public static void main(String[] args) {Fu s1 = new Fu();zi z =n ...

  8. Day11多态部分-3

    package Day11; public class Test_03 { public static void main(String[] args) { // Manager m =new Man ...

  9. Day11多态部分-2-1

    package Day11; public class Test_022 { public static void main(String[] args) { Animal1 c = new Cat1 ...

  10. Day11多态部分-2 【1.2 多态的前提】

    [1.2 多态的前提]***** 1.类与类/接口interface 存在关系, 要不就继承extends,要不就实现implements; 2.子类存在重写 3.父类引用 指向 子类对象 packa ...

最新文章

  1. sqlalchemy.exc.InternalError: (pymysql.err.InternalError) Packet sequence number wrong - got 40 expe
  2. Android Studio androidx 包冲突解决方法
  3. python爬取糗事百科
  4. Android开发之SDK开发获取资源id报错的问题
  5. 5分钟能回答的人,年薪25万美金以上
  6. TCP传输过程中丢包问题
  7. Python调用Java代码部署及初步使用
  8. 一文看懂JUC之AQS机制
  9. Maven中几张重要的总结图
  10. 《Troubleshooting Windows 7 Inside Out》文摘-1
  11. Redis基础学习(四)—Redis的持久化
  12. jsoup实现超简单的爬虫
  13. 毕业设计之 - 题目:基于LSTM的预测算法 - 股票预测 天气预测 房价预测
  14. winrar解压时出现诊断信息怎么办?
  15. ssd1306.py
  16. Android获取外网ip
  17. word中尾注分隔符删除后还有一个回车符怎么删
  18. Android快速开发之appBase——(1).appBase介绍
  19. 解决Visual Studio 2015创建工程时的“DNX SDK version 'dnx-clr-win-x86.1.0.0-beta5' failed to install.”错误
  20. rn 地图根据区名获取经纬度_React Native获取地理位置(获取具体城市、经纬度)...

热门文章

  1. HDOJ 1213 HDU 1213 How Many Tables ACM 1213 IN HDU
  2. Design Pattern - Adapter Pattern
  3. Kubernetes系统架构简介
  4. GPU 加速下的图像处理
  5. 10.17 配置IP,网络问题排查
  6. 童国华正式执掌大唐电信集团
  7. Swift 范的 CGRect、CGSize 和 CGPoint
  8. ajax传递复杂参数
  9. android插件化-apkplug框架基本结构-01
  10. 我们不要框计算 我们要更好的搜索体验