内置对象,监听器,过滤器

时间:2021-07-12 22:42:20

一、session内置对象

1.之前的request和response内置对象的属性(attribute)只是在当次请求有效(经过客户端跳转之后就无效,因为客户端跳转(重定向)属于第二个请求),也就是说request只代表当次请求的对象,如果要让客户端跳转之后属性还有效,则可以使用session内置对象(用户信息保存在request内置对象中是不合理的,应该保存到表示一个用户的内置对象中,就是session内置对象,就算客户端跳转了保存的attribute还是有效)

2.session工作机制 :当第一次调用getsession()就创建了session对象,并会为该对象分配一个id,将这个ud保存到session对象中,再复制一个副本以cookie的方式保存到浏览器。在以后调用getsession()方法的时候,会将客户端的cookie进行遍历判断,如果有JESSIONID并且能和服务器端的id进行匹配 则不再生成新的session内置对象,而是直接返回该对象。

 

二、config内置对象

之前的request是处理用户请求的对象,response是处理响应的对象,session是代表一个用户的对象主要用于实现登录操作,config内置对象主要是用来获取配置文件中的初始化参数,config内置对象的类型是“javax。servlet。servletconfig”

 

三、application内置对象

request内置对象保存的属性只是在当次请求有效,经过客户端跳转就无效了,保存在session对象中的属性范围当前用户有效,关闭当前浏览器就失效。如果要让关闭浏览器之后属性还有效应该保存在一个更大的内置对象中,该对象就是application内置对象,是一个表示服务器范围的内置对象。该内置对象是多个用户共享的内置对象,比如要监听当前上线用户的人数就需要使用到该对象。

 

四、九大内置对象

request      httpservletrequest

response      httpservletresponse

session      httpsession

application      servletcontext

out        jspwriter

pagecontext    pagecontext

page        object

exception      throwable

 

五、servlet在容器中是单例模式存在的,只会创建一个,如果有多个用户同时同一个servlet会存在线程安全问题吗?(避开在servlet中定义实例变量,如果需要使用到变量就在该方法中定义局部变量,辞职就不会存在数据共享的安全问题)

 

六、监听器

1.定义request监听器  实现servletrequestlistener接口,servletrequestattributelistener接口

2.session监听        实现httpsessionlistener接口,httpsessionattributelistener接口

3.application监听      实现servletcontextlistener接口,servletcontextattributelistener接口

 

七、过滤器

过滤器也是一种特殊的servlet,也需要在配置文件中进行配置或者使用注解进行配置,过滤器可以将指定的请求拦截下来,之后被拦截的请求进行相关的处理或者验证,处理完毕之后将拦截的请求继续放行。

内置对象,监听器,过滤器