1、HttpServletResponse
1.1http协议响应消息
常见响应状态码:
200:成功响应 正常响应
302:重定向 正常响应
404:路径错误或资源不存在,检查url之类的
405:请求的方法不合法(doget与dopost有没有写错)
500:必然是服务器后端出错,它会有错误的日志
1.2response对象
1.2.1概念
response对象也是在浏览器(客户端)发送请求时由服务器创建出来给开发者使用的,用来设置我们想要发给浏览器的数据。
1.2.2response的api
response.getWrite().write("写入你想要发送给前端的内容")
写入中文时页面乱码:
response.setContentType("text/html;charset=utf-8");
![](https://img-blog.csdnimg.cn/img_convert/28053b3f2248c9bd072a3868f2845084.png)
response.sendRedirect("你想要重定向到的位置的url"):重定向用法
![](https://img-blog.csdnimg.cn/img_convert/e0fbd0284d8d61db0e63f222297dc51b.png)
1.2.3重定向和请求转发
重定向特征:
多次请求,由浏览器发起了新的一次请求
浏览器地址栏有变化
可以跳转到任意合法的url(包括内外部服务器资源)
请求转发特征:
一次请求,服务器内部资源的一种跳转
浏览器地址栏没有变化
只能转发到服务器内部资源
借钱案例
请求转发:张三找李四借钱,李四没有钱又去找王五借钱,借到以后李四再把钱给了张三,但是张三不知道这个钱是王五的,这就是请求转发
重定向:张三找李四借钱,李四没有钱于是将王五的联系方式给了张三,张三转过头又向王五借钱,这就是重定向
2、会话技术
2.1概念
会话:一次会话包含浏览器与服务器之间的多次请求和响应。一次会话,从浏览器第一次发送请求开始,会话建立,直到其中一方主动断开连接为止,会话结束
会话技术解决的问题:解决多次请求和响应之间的共享数据
2.2cookie(客户端会话技术---小饼干)
共享数据存放在浏览器中,cookie存储的数据格式:名值对
2.2.1入门
在servlet中创建一个Cookie对象 new Cookie(String name,value)
使用response对象,response.addCookie()服务器告知浏览器存储一些cookie数据
在另外一个servlet,使用request.getCookies(),获取之前存储的cookie
2.2.2基本原理
服务器基于响应头set-cookie让浏览器保存cookie,后续对该服务器的所有请求,浏览器都会在请求消息中使用请求头cookie带上所有的cookie信息
2.2.3细节问题
默认情况下,浏览关闭则cookie信息消失(信息存在浏览器的内存中)
setMaxAge(int seconds):设置cookie在浏览器中保存的时间,seconds为负数,默认情况;为正整数,代表存活seconds秒;为0时,删除该cookie
cookie可以保存多个,多次调用response.addCookie(cookie)
cookie可以存储中文,不能存储空格,可以先编码,使用时在解码
编码:URLEncoder.encoder("待编码字符串","utf-8")
解码:URLDecoder.decoder("待解码字符串","utf-8")
2.2.4cookie特点
能保存的数据量较小,类型只能是String类型
保存在浏览器中,受浏览器的管控,个数受到限制,一般不超过20个
安全性较弱,容易被篡改
实践中多用于在用户没有登录时保存用户相关的配置信息
![](https://img-blog.csdnimg.cn/img_convert/d40700989f59b6c93bc8b17a7a76eb21.png)
![](https://img-blog.csdnimg.cn/img_convert/4d2fe5c620edf5b3cd897cd818fae46c.png)
2.3session(服务端会话技术)
共享数据存放在服务器中
2.3.1基本原理
在一次会话中多次请求和响应之间共享数据,该共享数据存放在HttpSession对象中
HttpSession它也是一个域对象,作用范围就是一次会话
获取HttpSession:通过request.getSession()
2.3.2细节问题
服务器不重启,浏览器关闭之后再打开,获取到session对象不是同一个,默认情况JSEESIONID保存再浏览器内存中
浏览器不关闭,服务器重启,前后两次获取的session对象不是同一个,但是该对象的数据是一模一样的
2.3.3session对象何时会被销毁
服务器关闭
默认tomcat服务器会有30分钟session失效的功能,浏览器一定时间之内不和服务器交互,session就会失效
配置tomcat服务器session默认不活跃的失效时间
ssession.invalidate()服务器可以主动关闭session
![](https://img-blog.csdnimg.cn/img_convert/80195ed2eaaa5bb5091bf5194bd7dc39.png)
![](https://img-blog.csdnimg.cn/img_convert/84d67ced917086a3953fa690a7251e44.png)
2.4session和cookie两种会话技术的区别
cookie共享数据保存再客户端,个数,大小都有限制,类型只能是字符串,不安全
session共享数据保存在服务端,个数,大小都没有限制,类型是任意对象,数据相对安全