Servlet之间数据共享及监听器+过滤器介绍

 一   ServletContext接口(全局作用域对象)(里面放当前网站的核心关键数据)
   1)介绍:
               1)来自于Servlet规范中一个接口,在Tomcat中存在servlet-api.jar。 在Tomcat中负责提供这个接口实现类                     
               2)如果两个Servlet来自于同一个网站,批次之间通过网站的ServletContext实例对象实现数据共享
               3)开发人员习惯于将ServletContext对象成为[全局作用域对象]

   2)工作原理:
                每一个网站都存在一个全局作用域对象,这个全局作用域对象相当于一个Map
                在这个网站中OneServlet可以将一个数据存入到全局作用域对象,当前网站中其他Servlet此时都可以从全局作用域对象得到这个数据进行使用

   3)生命周期:
               1)在Http服务器驱动过程中,自动为当前网站在内存中创建一个全局作用域对象
               2)在Http服务器运行期间时,一个网站只有一个全局作用域对象
               3)在Http服务器运行期间,全局作用域对象一直处于存活状态
               4)在Http服务器准备关闭时,负责将当前网站中全局作用域对象进行销毁处理
               ***********全局作用域对象生命周期贯穿网站整个运行期间*************
    
   4)命令实现:在同一个网站 OneServlet将数据共享给TwoServlet
                        OneServlet{
                           
                             public void doGet(HttpServletRequest requset,HttpServletResponse response){
                                                 //1.通过请求对象向Tomcat索要当前网站中的全局作用域对象
                                              ServletContext application = request.getServletContext();
                                               //2.将数据添加到全局作用域对象中作为共享数据
                                              application.setAttribute("key1",数据);
                                      }
                                  }

                          TwoServlet{

                             public void doGet(HttpServletRequest requset,HttpServletResponse response){
                                               //1.通过请求对象向Tomcat索要当前网站中的全局作用域对象
                                             ServletContext application = request.getServletContext();
                                               //2.从全局作用域对象中得到指定关键字所对应的数据
                                             Object 数据 = application.getAttribute("key1");
                                      }

                                 }


 二  Cookie(里面放当前用户的私人数据,提供服务质量)
      1介绍:
         1)来自于Servlet规范中一个工具类,存在于Tomcat提供servlet-api.jar中
         2)如果两个Servlet来自于同一个网站,并且他们为同一个浏览器/用户提供服务,此时借助于Cookie对象进行数据共享
         3)Cookie存放当前用户的私人数据,用于在共享数据过程中提高服务质量
         4)在现实生活场景中,Cookie相当于用户在服务端所得到的vip卡

      2原理:
            用户通过浏览器第一次向myWeb网站发送请求申请OneServlet,OneServlet在运行期间创建一个Cookie来存储与当前用户
            相关的数据,OneServlet在工作完毕后,【将Cookie写入到响应头】交还给当前浏览器。浏览器在收到响应包之后,将Cookie
            存储在浏览器的缓存中。一段时间之后,用户通过【同一个浏览器】再次向【myWeb网站】发送请求申请TwoServlet时,【浏览器
            需要无条件的将myWeb之前推送过来的Cookie写入到请求头】发送过去。此时TwoServlet在运行时,就可以通过读取请求头中
            Cookie中的信息,得到OneServlet提供的共享数据

      3实现命令:
             同一个网站中的OneServlet与TwoServlet借助于Cookie实现数据共享
             OneServlet{
                                  
             public void  doGet(HttpServletRequest request,HttpServletResponse resp){

             //1.创建一个Cookie对象来保存共享数据(当前用户的数据)
              Cookie card=new Cookie("key1","abc");
              Cookie card1=xxxxxxxxxxxxxxxx;
              ****cookie相当于一个map
              ****一个cookie中只能存放一个键值对
              ****这个键值对的key与value只能是String
              ****键值对中的key不能是中文
             //2.【发卡】将cookie写入到响应头来交给浏览器
                       resp.addcookie(card);
                       resp.addcookie(card1);
                      }
                  }
          
                 浏览器/用户 <--------------响应包 【状态行200】
                                           【cookie: key1=abc;key2=efg】
                                           【空白行】
                                           【响应体:处理结果】

               浏览器向myWeb网站发送请求访问TwoServlet------------->请求包【url:/myWeb/two   method:get】
                                                                                      【
                                                                                         请求参数:xxxx
                                                                                         Cookie   key1=abc;key2=efg
                                                                                         】
                                                                                        【空白行】
                                                                                        【响应体:处理结果】

                             TwoServlet{

                                public void  doGet(HttpServletRequest request,HttpServletResponse resp){

                                        //1.调用请求对象通请求头中得到浏览器所返回的cookie
                                          Cookie  cookieArray[] = request.getCookies();
                                       //2.循环遍历数据 得到每一个cookie的key与value
                                             for(Cookie card : cookieArray){
                                                 String key= card.getName(); 读取key “key1”
                                                 String value = card.getValue();读取value “abc”
                                                    提供较好的服务..............
                                           }
                                             
                                 }
                            }

                  4.cookie销毁时机:
                                   
                          1).在默认情况下,Cookie对象存放在浏览器的缓存中,因此只要浏览器关闭,cookie对象就被销毁掉了
                          2).在手动设置情况下,可以要求浏览器将接收的Cooki存放在客户端计算机上的硬盘上,同时需要
                             指定cookie在硬盘上存活时间,在存活时间范围内,关闭浏览器 关闭客户端计算机 关闭服务器 
                             都不会导致cookie被销毁。在存活时间到达的时候,cookie将自动从硬盘上被删除

                             cookie.setMaxAge(60);//cookie在硬盘上存活1分钟
                
 三  HttpSession接口【会话作用域对象】:
                      
                 1.介绍:
                       1): HttpSession接口来自于Servlet规范下的一个接口,存在于Tomcat中servlet-api-jar
                       其相关实现类由Http服务器提供,Tomcat提供的实现类存在于servlet-api-jar
                       2): 如果两个Servlet来自于同一个网站,并且他们为同一个浏览器/用户提供服务,此时借助于
                       HttpSession对象进行数据共享
                       3): 开发人员习惯于将HttpSession接口修饰对象称为【会话作用域对象】

                 2.HttpSession与Cookie的区别【常见面试题】
                       1)存储位置不同:一个在天上,一个在地下
                       Cookie存放在客户端计算机(浏览器内存/硬盘)
                       HttpSession存放在服务端计算机内存中
                       2)存储数据类型
                       Cookie对象所存储的数据类型只能是字符串类型(String)
                       HttpSession对象可以存储任意类型的共享数据(Object)
                       3)数据数量
                       一个Cookie对象只能存储一个共享数据
                       HttpSession使用Map集合存储共享数据,可以存储任意数量共享数据
                       4)参照物
                       Cookie相当于客户在服务端【会员卡】
                       HttpSession相当于客户在服务器【私人保险柜】

                  3.命令实现:
                       同一个网站(myWeb)下OneServlet将数据传递给TwoServlet
                       OneServlet{
                       public void doGet(HttpServletRequest request,HttpServletResponse response){
                       1.调用请求对象 向Tomcat索要当前用户在服务端的私人储物柜
                       HttpSession session = request.getSession();
                       //2.将数据添加到用户私人储物柜中
                       session.setAttribute("key1",共享数据);
                         }
                     }

                      浏览器访问/myWeb中TwoServlet                                      
                                                         
                      TwoServlet{

                       public void  doGet(HttpServletRequest request,HttpServletResponse resp){

                         //1.调用请求对象 向Tomcat索要当前用户在服务端的私人储物柜
                          HttpSession session = request.getSession();
                         //2.从会话作用域中得到OneServlet提供的共享数据
                          Object 共享数据 = session.getAttribute("key1");
						  
                                }
                            }
																 
			      4.Http服务器如何将用户与HttpSession关联起来
								Cookie JSessionid=xxx;
																   
				  5.getSession()与getSession(false)
					 1)getSession():如果当前用户在服务端已经拥有了自己的私人储物柜
					   要求Tomcat将这个私人储物柜进行返回
					   如果当前用户在服务端尚未拥有自己的私人储物柜
					   要求Tomcat为当前用户来创建一个全新的私人储物柜
																	   
					 2)getSession(false):如果当前用户在服务端已经拥有了自己的私人储物柜
					   要求Tomcat将这个私人储物柜进行返回
					   如果当前用户在服务端尚未拥有自己的私人储物柜
					   此时Tomcat将返回null
																		  
				  6.HttpSession销毁时机:
					   1.用户与HttpSession关联时使用的Cokkie只能存放在浏览器缓存中
					   2.在浏览器关闭时,意味着用户与他的HttpSession关系被切断
					   3.由于Tomcat无法检测浏览器何时关闭,因此在浏览器关闭时并不会导致Tomcat
					   将浏览器关联的HttpSession进行销毁
					   4.为了解决这个问题,Tomcat会为每一个HttpSession设置一个【空闲时间】
					   这个空闲时间默认是30分钟,如果当前HttpSession对象空闲时间达到了30分钟
					   此时Tomcat认为用户已经放弃了自己的HttpSession,此时Tomcat就会销毁掉这个HttpSession
														 
				  7.HttpSession空闲时间的手动设置
				       在当前网站/web/WEB-INF/web.xml
					   <session-config>
					   <session-timeout>5</session-timeout>  <!--当前网站中每一个Session最大的空闲时间5分钟-->
					   </session-config>
					   
 四 HttpServletRequest接口实现数据共享【请求作用域对象】
                  1.介绍:
                         1) 在同一个网站中,如果两个Servlet之间通过[请求转发]方式进行调用,彼此之间共享同一个
                            请求协议包,而一个请求协议包只对应一个请求对象,因此这2个servlet之间共享一个请求对象
                            此时可以利用请求对象在两个Servlet之间实现数据共享
                         2) 在请求对象实现Servlet之间数据共享时,开发人员将请求对象称为【请求作用域对象】
						 
                  2.命令实现:OneServlet通过请求转发调用TwoServlet时,需要给TwoServlet提供共享数据
                              OneServlet{
							  public void doGet(HttpServletRequest req,HttpServletResponse response){
                                     //1.将数据添加到【请求作用域对象】中的Attribute属性
									   req.setAttribute("key1",数据);//数据类型可以为任意类型Object
							         //2.向Tomcat申请调用TwoServlet
									   req.getRequestDispatcher("/two").forward(req,response);
							     }
							  
							  }	
							  
							  TwoServlet{
							  public void doGet(HttpServletRequest req,HttpServletResponse response){
                                     //1.从当前请求对象中得到OneServlet写入到的共享数据
									   Object 数据 = req.getAttribute("key1");
							         //2.向Tomcat申请调用TwoServlet
									   req.getRequestDispatcher("/two").forward(req,response);
							     }
							  
							  }	
							  
 五 Servlet规范扩展----监听器接口					
                  1.介绍:
                          1)一组来自于Servlet规范下的接口,共有8个接口。在Tomcat中存在servlet-api.jar包中
                          2)监听器接口需要开发人员来亲自实现,Http服务器提供的jar包中没有对应的实现类
                          3)监听器接口的实现类用于监控【作用域对象生命周期变化时刻】以及【作用域对象共享数据变化时刻】
                  2.作用域对象:
                          1)在Servlet认为在服务端内存中可以再某些条件下为2个Servlet之间提供数据共享方案
                            的对象被称为【作用域对象】
                          2)在Servlet规范下的作用域对象:
                            ServletContext:全局作用域对象             
                            HttpSession:会话作用域对象
                            HttpServletRequest:请求作用域对象		
                  3.监听器接口实现类开发规范:三步
                          1)根据监听的实际情况,去选择对应的监听器接口进行实现
                          2)重写监听器接口中所声明的【监听事件处理方法】
                          3)在web.xml文件中,将监听器接口实现类注册到Http服务器
                  4.ServletContextListener接口:
                          1)作用:通过这个接口可以合法监测全局作用域对象被初始化的时刻以及被销毁的时刻
                          2)监听事件处理方法:
                            public void contextInitlized(); 在全局作用域对象被Http服务器初始化时被调用
							public void contextDestory(); 在全局作用域对象被Http服务器进行销毁是触发调用
                  5.ServletContextAttributeListener接口:
                          1)作用:通过这个接口可以合法监测全局作用域对象共享数据变化时刻
                          2)监听事件处理方法:
                            public void contextAdd(); 在全局作用域对象去添加共享数据时触发
                            public void contextReplaced(); 在全局作用域对象更新共享数据时触发
                            public void contextRemove(); 在全局作用域对象删除共享数据时触发
                  6.全局作用域对象共享数据变化时刻
                          ServletContext application = request.getServletContext();
                              application.setAttribute("key1",100); //新增共享数据
                              application.setAttribute("key1",200); //更新共享数据
                              application.removeAttribute("key1"); //删除共享数据		
							  
  Servlet规范扩展----Filter接口(过滤器接口)					
                  1.介绍:
                          1)来自于Servlet规范下的接口,存在于Tomcat提供servlet-api.jar包中	
                          2)Filter接口实现类由开发人员负责提供,Http服务器不负责提供
                          3)Filter接口在Http服务器去调用资源文件之前,对Http服务器进行拦截
						  
                  2.具体作用:		
                          1)拦截Http服务器,帮助Http服务器去检测当前请求的合法性
                          2):拦截Http服务器,对当前请求进行增强操作
				
				  3.Filter接口实现类开发步骤:3步	
				          1):创建一个Java类实现Filter接口
						  2):重写Filter接口中的doFilter()方法
						  3):web.xml文件中,将Filter器接口实现类注册到Http服务器
						  
			      4.Filter拦截地址格式
				          1):命令格式:
						     <filter-mapping>
							   <filter-name>oneFilter<filter-name>
							   <url-patten>拦截地址</url-patten>
							 </filter-mapping>
							  
						  2):命令作用:
						      拦截地址通知Tomcat在调用何种资源文件之前需要调用OneFilter过滤进行拦截
						  3):要求Tomcat在调用某一个具体文件之前,来调用OneFilter拦截
						     <url-patten>/img/mm.jpg</url-patten>
						  4):要求Tomcat在调用某一个文件夹下所有的资源文件之前,来调用OneFilter拦截
                  			 <url-patten>/img/*</url-patten>	
                          5):要求Tomcat在调用任意文件夹下某种类型文件之前,来调用OneFilter拦截	
						     <url-patten>*.jpg</url-patten>
						  6):要求Tomcat在调用网站中任意文件时,来调用OneFilter拦截
						     <url-patten>/*</url-patten>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值