接上篇servlet规范继续更新~~~好了,废话不多说,开始正题!
十六、Cookie类:
1) java web开发基础文档 来自于Servlet规范中提供一个工具类
2) 如果两个Servlet为同一个用户/用一个浏览器提供服务,此时借助于用户的cookie实现数据共享
3) cookie在现实生活中相当于用户的会员卡
2.实现原理
运行OneServlet
//1.生成一个Cookie对象Cookie card= new Cookie("共享数据名","共享数据");
//*一个Cookie对象只能存储一个共享数据
//*cookie中共享数据只能String类型
//2.调用响应对象将cookie写入到响应头response.addCookie(card);
运行twoServlet
//1.调用请求对象读取请求头中所有的cookie
Cookie cookieArray[]= request.getCookies();
//2.遍历循环数组,读取OneServlet在cookie存入的数据
for(Cookie card:cookieArrray){
String key = card.getName(); // 返回共享数据名
String value = card.getValue(); //返回共享数据
}
4.生命周期
1)在正常情况下,cookie存放在浏览器内存中。在浏览器关闭时,cookie将被销毁
2)在命令控制下,可以要求浏览器将接收cookie存放在客户端计算机的硬盘上并指定存活时间。在存活时间范围内,关闭浏览器,关闭服务器,关闭计算机都不会导致cookie销毁
cookie对象.setMaxAge(60); 在硬盘上存活1分钟
十七、HttpSession接口
1.介绍
1)HttpSession接口来自于Servlet规范中
2) HttpSession接口实现类由Http服务器厂商提供
3) HttpSession接口修饰对象被称为会话作用域对象
4)如果两个Servlet为同一个用户/同一个浏览器提供服务此时可以借助于用户的HttpSession对象进行数据共享
Cookie是一个类
HttpSession是一个接口
2) 存放位置不同:
Cookie存放在客户端计算机会话作用域对象存放在服务端计算机内存
3)存放共享数据个数不同
一个cookie对象只能存储一个共享数据
一个会话作用域对象通过map存储,因此可以任何个共享数据
4) 存放数据类型不同
cookie只能存放String类型的共享数据
会话作用域对象存放Object类型的共享数据
5) 与用户关系
一个用户可以拥有多个cookie
一个用户只能拥有一个会话作用域对象
6) 参照物不同
cookie相当于用户在服务端拥有的会员卡
会话作用域对象相当于用户在服务端拥有的私人储物柜
//运行OneServlet
//1.调用请求对象向Tomcat索要当前用户私人储物柜
HttpSession session = request.getSession();
//2.将共享数据添加到当前用户私人储物柜
session.setAttribute("共享数据名")
//运行TwoServlet
//1.调用请求对象向Tomcat索要当前用户私人储物柜
HttpSession session = request.getSession(false);
//2.读取OneServlet存入到共享数据
Object data = session.getAttribute("共享数据名")
如果当前用户在服务端拥有私人储物柜,要求tomcat返回这个储物柜
如果当前用户在服务端尚未拥有私人储物柜,要求tomcat为当前用户创建一个全新的私人储物柜
如果当前用户在服务端拥有私人储物柜,要求tomcat返回这个储物柜
如果当前用户在服务端尚未拥有私人储物柜,要求tomcat返回null
3) 如果当前用户身份【经过登录验证审核判定为合法】,此时应该使用request.getSession()来索要私人储物柜
4)如果当前用户身份尚未确认合法,此时应该使用request.getSession(false)来索要私人储物柜
在浏览器关闭时,切断了用户与浏览器之间联系但是tomcat是服务端计算机中资源调度软件无法侦测浏览器何时关闭的,因此在浏览器关闭时,服务端是不会销毁用户的session
如果session对象从上次使用完毕到现在空闲时间达到了【最大空闲时间】tomcat认为用户放弃了自己的session.此时tomcat负责销毁
4)网站自行设置session 【最大空闲时间】
web.xml
<session-config>
<session-timeout>5</session-timeout><!--session最大空闲时间5分钟-->
</session-config>
因此两个Servlet共享这个请求协议包中请求对象和响应对象
所以在请求转发过程中两个Servlet可以通过当前请求对象实现数据共享。
当请求对象实现数据共享时使用内部attribute(ConcurrentHashMap)属性存储共享数据
此时开发人员将请求对象称为【请求作用域对象】
运行OneServlet
request.setAttribute("共享数据名",共享数据);
request.getRequestDispatcher("/two").forward(request,response)
运行TwoServlet
Object 共享数据 = request.getAttribute("共享数据名");
十八、监听器接口:
1)一组(8个)来自于Servlet规范中接口
2) 监听器接口由项目开发人员负责实现
3) 监听器负责监听作用域对象并在指定事件中调用监听处理方法
存在于服务端计算机内存中,可以在指定条件下为servlet之间提供数据共享服务的对象
2.HttpSession接口 ------会话作用域对象
3.HttpServletRequest接口----请求作用域对象
2) 监听作用域对象存放共享数据变化时刻
1)根据监听目的选择对应接口进行实现
2)重写监听器接口中事件处理方法,这些方法在指定事件产生时由tomcat负责调用
3)web.xml向tomcat注册监听器接口实现类
监听全局作用域对象生命周期变化时刻
2)在Tomcat运行时,一个网站有且只能有一个全局作用域对象
3)在Tomcat关闭时,自动销毁网站中全局作用域对象
ServletContext application = request.getServletContext();
application.setAttribute("key1",100); //新增共享数据
application.setAttribute("key1",200);//更新共享数据
application.removeAttribute("key1");//移除共享数据
10.浴池拖鞋管理方案:
1.在浴池营业之前,实现购买一批拖鞋
2.在浴池营业时,每当接受一个客人直接提供一双拖鞋
3.在浴池营业时,客人接收服务完毕后需要返还拖鞋,为下一个用户准备
11.数据库连接池管理方案(Connection)
1.在Tomcat启动时,预先创建一定数量的Connection
2.在Tomcat运行时,为用户提供服务时选择一个空闲的Connection为用户使用
3.在Tomcat运行时,用户服务处理完毕后不会销毁Connection。而是重新设置为空闲状态
4.在Tomcat准备关闭时,销毁掉所有Connection
12.数据库连接池管理方案遇到问题:
1.如何确保连接通道在tomcat运行时一直存在的 (application)
3.如何知晓tomcat何时启动何时关闭(ServletContextListener)
十九、过滤器接口(Filter)
1)Filter接口来自于Servlet规范
2)Filter接口实现类由项目开发人员实现
3) Filter接口可以在tomcat调用资源文件之前进行拦截
2.Filter接口作用:
1) 拦截tomcat之后,帮助tomcat检测本次请求合法性
2) 拦截tomcat之后,对本次拦截的请求做增强服务
3.Filter接口实现类开发步骤:3步
1) 创建Filter接口实现类
2) 重写doFilter方法
3)web.xml注册过滤器接口实现类
4.过滤器拦截地址:
<url-pattern>/文件名.后缀名</url-pattern>
<url-pattern>/文件夹名/*</url-pattern>
<url-pattern>*.jpg</url-pattern>
<url-pattern>/*</url-pattern>
5.恶意登录解决方案----令牌机制
最后奉上视频教程👇,视频观看效果更佳!!走过路过别忘素质三连哦~~
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/24549.html