cookie&session

响应首行
setstatus(int)
sendError(int,String)
响应头
setHeader
addHeader
响应空行
响应正文
字符流 getWriter
字节流 getOutputstream

输出中文时,保证两端编码一致即可。

编码控制:
字符流:
1. response.setCharacterEncoding("UTF-8");
2.response.setContentType("text/html; charset=utf-8")
字节流:
string.getBytes("UTF-8")
浏览器解码控制:
1.response.setHeader("Content-Type","text/html;charset=utf-8")
2.response.getWriter().print("<>")
3.response.setContenttype("text/html;charset=utf-8")

request
一、获得信息
getMethod
getContextPath
getRequestURI
getRequestURL
getServletPath
getParameter 获得参数
getParameterNames 获得所有key
getParameterValues 根据key获得值(数组)
getParameterMap 获得封装参数的map
二、转发,包含
转发:将请求和响应继续向下传递到另一个servlet(jsp)
功能:servlet中处理逻辑,把显示的功能交给另一个servlet(jsp)来做。

转发和重定向对比:

  1. 转发不会改变地址栏,重定向会
    2.转发是请求一次,重定向请求两次
    3.转发过程中只有一个request对象产生,重定向是两个。
    4.转发不能转发到站外,重定向可以发送到站外。
    5.重定向的第2个请求的请求方式是什么,get.转发中第2个servlet(jsp)是什么请求方式?第一个servlet是什么第2个就是什么.

包含:两个servlet(jsp)共同完成响应。
功能:将页面重复内容封装.使用包含功能引用重复内容封装的页面。

三.域对象
request域.
一般使用在转发时.servlet处理完逻辑,将处理结果放到request域中,在jsp中取出显示.

关于域对象的操作:
setAttribute
getAttribute
removeAttribute
getA
三、域对象

学生信息保存
//1 获得表单提交上来的参数(number name age sex)
//2 验证
//3 封装到student对象
//4 创建dao
//5 调用dao保存对象
//6 返回结果

JSP
java server page
本质就是servlet.

JSP的构成
HTML+JSP脚本(JAVA)+标签

HTML代码 => 使用 out.write()输出

jsp中的脚本
<% %> ==>可以写java代码. 该脚本中写的java代码会生成到jsp类中生成的代码
<%= %> ==>编译之后的代码: out.print(I)
<%! %> ==>编译之后,脚本中的代码会出现在类中,可以使用该脚本定义全局变量和方法
<%-- --%> ==> 被注释掉的内容不会出现。搞清楚和html注释的区别

Cookie
Cookie干嘛的?
会话(cookie,session)技术的一种.
因为http协议是无状态的,每次都是基于一个请求一个响应.
每次请求和响应都跟上次没有关系.
我们需要记录之前对话信息.
cookie技术.是属于客户端(浏览器)保存信息的技术.


cookie&session_第1张图片
image.png

Cookie怎么用?


cookie&session_第2张图片
image.png

1.添加Cookie到浏览器
(1)新建一个Cookie(键值对)
(2)将cookie 添加到响应中
2.浏览器发送cookie到服务器,如何取
(1)获得所有浏览器发送的cookie
(2)遍历并判断我们要找的cookie
cookie原理.
让浏览器记住键值对.是向响应头重添加以下头即可:

set-Cookie:name=tom;
浏览器记住之后,向服务器发送键值对,是在请求头中添加下面的信息:
Cookie:name=tom
实例
例子1:浏览历史


cookie&session_第3张图片
image.png

//1 获得当前访问的品牌
//2 获得之前访问过的品牌
//3 将当前访问 加上之前访问的,创建一个新的cookie
//4 将cookie添加到响应中
//5 将商品记录 放置到request域中
//6 转发到jsp显示

cookie细节问题:
1.浏览器记多久?
默认是在会话期间有效.(关闭浏览器,cookie就被删除)
2.有效时间如何设置?
cookie最大有效时长setMaxAge(60*60);
设置为-1,就是相当于默认有效时间,浏览器关闭就消失.
删除cookie,设置为0

3.浏览器在什么情况下发送cookie:
cookie的默认路径就是发送cookie的servlet所在的目录

例子:浏览器记住用户名
1.获得用户名
2.获得是否需要记住用户名
3.判断是否勾选记住用户名
//勾选了 ==> 新建cookie
//没勾选 ==> 删除cookie
4.将cookie添加到response
5.去成功页面

4.cookie中的域(了解)
想要以下三个 主机能共享一个cookie。
www.baidu.ccom
music.baidu.com
map.baidu.com
完成两步即可:

  1. 设置cookie的域为“.baidu.com”
    2.设置cookie路径 为: "/"
    以上都是

Session
什么是session
服务器端保存会话信息为准


cookie&session_第4张图片
image.png

怎么用

原理
浏览器第一次访问服务器,服务器会在内存中开辟一个空间(session),并把session对应的ID发送给浏览器.
那么下次浏览器再去访问服务器,会把sessionID交给服务器,服务器通过sessionID找到刚才开辟的空间.
以上就是seesion的原理.
//1. 如何获得session
//2. 如何操作session
例子一:购物车;
将想要购买的商品保存在服务器端(session).


cookie&session_第5张图片
image.png

session细节
1>关闭浏览器cookie就丢失==>cookie丢失 sessionID就丢失
2>session中除了4个操作map的方法之外,还有哪些方法
getSerVletContext()
invalidate()
removeAttribute()
setAttribute()
getCreationTime()
getLastAccessedTime()
getId()
getMaxInactiveInterval()
isNew()//查看当前获得的session是否是新的
,只有在第一次访问服务器,session是新的
如何修改session的过期时间?
1.修改在tomcat的web.xml中 ==> 影响服务器中的所有项目
2.在项目的web.xml中 加入配置 ==> 影响当前项目
3.通过setMaxInactiveInterval(int interval)方法设置. ==> 当前操作的session
例子二:验证码


cookie&session_第6张图片
image.png

Application域
4>(了解内容)URL重写
如果浏览器禁用cookie功能不能保存任何cookie. 那么session技术要是用cookie来保存sessionID。没有cookie怎么保存?
使用url重写解决该问题.
将页面中所有的链接 末尾全都加上 cookieid的参数.这样用户点击链接访问网站,通过url把sessionID带到服务器。这样就解决了
但是 互联网行业没有这么干


cookie&session_第7张图片
image.png

你可能感兴趣的:(cookie&session)