丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
会话技术的作用:是用来存储会话过程中,浏览器和服务器交互产生的N多数据的
会话技术的分类:
使用cookie或session去存储浏览器和服务器交互中产生的数据的场景:
作用:存储数据进行传递的
特点:
cookie的整个使用过程(完成私人数据在多个servlet之间进行数据传递):
cookie的应用场景
注意:
Cookie:
//将cookie发送给浏览器。注意:服务器可以给浏览器传递多个cookie,浏览器都会保存,但存在key值覆盖voidaddCookie(Cookiecookie)HttpServletRequest:
//获取浏览器发送的cookieCookie[]getCookies()注意:
Cookie的生命周期
Cookie的有效路径
//设置cookie的有效路径。浏览器根据这个路径判断在访问哪些资源时携带该cookie给服务器voidsetPath(Stringuri)
session是保存在服务器端的会话技术,当通常情况下,Session是借助Cookie技术来传递ID属性的。
session的作用:为了保存会话中产生的数据
作用范围:
生命周期:
session的与cookie的区别
在一次会话中,使用的都是同一个session对象剖析:
过滤器的使用场景:
Filter:是Java中预先定义好了的接口,可以过滤不同的内容,具体怎么过滤,需要使用者定义一个实现类,然后实现接口中的过滤方法,在方法中书写过滤的条件。filter是对客户端访问资源的过滤,符合条件放行,不符合条件不放行
主要作用:对浏览器的请求进行拦截过滤的
Filter接口API
//过滤器的初始化方法voidinit(FilterConfigfilterConfig)//过滤器的核心过滤方法。写具体的过滤逻辑voiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)//过滤器的销毁方法voiddestroy()
使用步骤
方式2:在web.xml中配置filter要拦截的资源
过滤器链:需要对同一个请求,进行多次不同业务的过滤时,可以配置多个过滤器,只有所有的过滤器都对请求进行了放行,请求才能访问到目标资源,只要多个过滤器中只有一个过滤器不放行请求,那么这个请求都不能够访问到目标资源。多个过滤器组成的一个整体称为过滤器链。而且,过滤器链中的过滤器是一个一个的执行的,一个过滤器执行完毕之后,会执行下一个过滤器,后面没有过滤器了,才会访问到目标资源。只要其中一个过滤器没有放行,那么这个过滤器后面的过滤器也都不会执行了。
过滤器链中多个过滤器的执行顺序:
filter的执行流程
filter的生命周期
从filter的出生到filter的死亡,有3个方法:
filter默认只拦截Request(浏览器过来的请求,包括重定向),不拦截Forward(服务器内部的请求,即请求转发)
如果想让filter拦截服务器内部的请求:
浏览器发出的任何请求,通过过滤器统一处理中文乱码。
@WebFilter(filterName="EnCodingFilter",urlPatterns="/*")publicclassEnCodingFilterimplementsFilter{@Overridepublicvoidinit(FilterConfigfilterConfig)throwsServletException{}@OverridepublicvoiddoFilter(ServletRequestreq,ServletResponseresp,FilterChainchain)throwsServletException,IOException{//在执行servlet获取数据和响应数据之前执行该代码req.setCharacterEncoding("utf-8");resp.setContentType("text/html;charset=utf-8");//放行之前处理中文乱码chain.doFilter(req,resp);}@Overridepublicvoiddestroy(){}
web监听器是一种Servlet中的特殊的类,可以帮助开发者监听web中的特定事件,比如ServletContext,HttpSession,ServletRequest的创建和销毁等。可以在某些动作前后增加处理,实现监控。
Listener的作用:监听ServletContext,HttpSession,ServletRequest三大域对象的状态变化(三个域对象的创建和销毁)
使用场景:
java提供了监听器规范,不同的监听器规范要监听的内容不一样
常见监听器:
API
使用步骤(以ServletContextListenner监听器为例)
session监听器,统计session个数
Stringvalue=request.getHeader("user-agent");Stringencode;if(value.contains("Firefox")){//火狐浏览器中文(base64)Base64.Encoderencoder=Base64.getEncoder();encode="=utf-8B"+encoder.encodeToString(fileName.getBytes("utf-8"))+"=";}else{//其它浏览器中文(utf-8)encode=URLEncoder.encode(fileName,"utf-8");}//小说.txt--%E5%B0%8F%E8%AF%B4.txtresponse.setHeader("content-disposition","attachment;filename="+encode);
域对象可以在多个servlet/jsp之间进行数据传递
java后端的域对象有3个:
存入数据的作用范围:在一次会话中涉及的多个servlet可以共享数据