Servlet总结续

Filter(过滤器)

过滤器的使用:
过滤器有点面向切面编程的意思,一般是想要在这个请求的前后做一些事情,才会使用过滤器,比如字符过滤器,就是为了统一编码格式,避免中文乱码情况。

  • 作用:

     对服务器接受的请求资源和响应给浏览器的资源进行管理。
     保护servlet
    
  • 使用:

     创建一个实现了Filter接口的普通Java类
     覆写接口的方法:
     		init方法:服务器启动即执行。资源初始化
     			doFilter方法:拦截请求的方法,在此方法中可以对资源进行管理
     		注意:
     			需要手动对请求进行放行。chain.doFilter(request, response);
     		destroy方法:服务器关闭的时候执行。
     	在web.xml中配置过滤器
    
配置过滤器:
  filter-name:为这个过滤器起一个名字,最好是见名知意
  filter-class:配置过滤器的路径,要求是全类名
  url-pattern:配置要拦截的请求
  
  <filter>
		<filter-name>MyFilter</filter-name>
	  	<filter-class>com.qlgydx.filter.MyFilter</filter-class>
  </filter>
  <filter-mapping>
 		<filter-name>MyFilter</filter-name>
		<url-pattern>/*</url-pattern>	  
 </filter-mapping>
  注意:
		url-pattern:/*
			表示拦截所有的请求。
		url-pattern:*.do
			表示所有以.do结尾的请求,一般是用来进行模块拦截处理。
		url-pattern:/ts
			表示拦截指定url的请求。针对某个servlet的请求进行拦截,保护servlet
				  			
  • 过滤器的生命周期:

     服务器启动到服务器关闭。
     	总结:
     		过滤器程序员声明和配置,服务器根据请求中的uri信息调用。
     	执行:
     		浏览器发起请求到服务器,服务器接受到请求后,根据URI信息在web.xml中找到对应的
     		过滤器执行的doFilter方法,该方法对此次请求进行处理后如果符合要求则放行,放行后
     		如果还有符合要求的过滤器则继续进行过滤,直到执行对应的servlet进行请求处理。servlet
     		对请求处理完毕后,也就是service方法执行结束后。还需继续返回相应的do
     		Filter方法继续执行。
     	案例:
     		统一编码格式设置。
     		session管理
     		权限管理
     		资源统一(统一水印,和谐词汇等等)
    

有个问题需要特别注意一下,过滤器的配置是在web.xml中配置的,如果配置了多个过滤器,那就有个先后顺序的问题,先配置的过滤器会先执行,所以有些过滤器的位置需要仔细考虑,比如字符过滤器,就应该放在第一位。

监听器

监听器的使用:

  • 作用:

     监听作用域对象request、session、application的创建、销毁和内容的改变
    
  • 使用:

     创建一个实现了指定接口的Java类
     	监听request--->ServletRequestListener  
     	监听request对象的创建和销毁
     		requestInitialized(ServletRequestEvent sre)//创建
     		requestDestroyed(ServletRequestEvent sre)//销毁
     		注意:
     			形参可以获取监听的request对象
     			sre.getServletRequest();
     	监听request--->ServletRequestAttributeListener  
     	监听request作用域数据的变更。
     		attributeAdded(ServletRequestAttributeEvent srae)
     		attributeRemoved(ServletRequestAttributeEvent srae)
     		attributeReplaced(ServletRequestAttributeEvent srae)
     		注意:
     			形参可以获取被监听的数据
     			srae.getName()  获取监听数据的键
     			srae.getValue()	获取监听数据的值
     	监听session--->HttpSessionListener 
     	监听session的创建和销毁
     			sessionCreated(HttpSessionEvent se) 创建
     			sessionDestroyed(HttpSessionEvent se)  销毁
     		注意:
     			形参可以获取被监听的session对象
     			se.getSession();
     	监听session--->HttpSessionAttributeListener 
     	监听session数据的变更
     			attributeAdded(HttpSessionBindingEvent event)
     			attributeRemoved(HttpSessionBindingEvent event)
     			attributeReplaced(HttpSessionBindingEvent event)
     			注意:
     				形参可以获取被监听的数据
     				event.getName()  获取数据的键名
     				event.getValue()	获取数据的值
     	监听application--->ServletContextListener 	
     	监听application对象的始化和销毁
     			contextInitialized(ServletContextEvent sce)	初始化  服务器启动
     			contextDestroyed(ServletContextEvent sce) 销毁  服务器关闭
     			注意:
     				形参可以获取当前application对象
     				sce.getServletContext()
     	监听application--->ServletContextAttributeListener 
     	监听application对象数据的变更
     			attributeAdded(ServletContextAttributeEvent event)
     			attributeRemoved(ServletContextAttributeEvent event)
     			attributeReplaced(ServletContextAttributeEvent event)
     			注意:
     				形参可以获取当前监听的数据
     				event.getName()  获取数据的键名
     				event.getValue()	获取数据的值
    
在web.xml中配置监听类
 				<listener>
				<listener-class>com.qlgydx.listener.MyListener</listener-class>
				</listener>

案例:

统计当前在线人数
统计网页浏览器次数

这里提一下Ajax的使用

Ajax

  • ajax的概念

     局部刷新技术,不是一门新技术,是多种技术的组合。是浏览器端的技术。
    
  • ajax的作用

     可以实现在当前结果页中显示其他请求的响应内容	
    
  • ajax的使用

     ajax的基本流程
     	创建ajax引擎对象
     		覆写onreadystatement函数
     			判断ajax状态码
     				判断响应状态码
     					获取响应内容(响应内容的格式)
     						普通字符串responseText
     							json(重点)responseText
     								其实就是将数据按照json的格式拼接好的字符串,方便使用eval方法
     								将接受到的字符串数据直接转换为js的对象用
     								
     								json的格式:
     									var 对象名={
     										属性名:属性值,
     										属性名:属性值,
     										...
     									}		
     						
     							XML数据responseXML 返回document对象
     								通过document对象将数据从XMl中获取出来
     							处理响应内容(js操作文档结构)
     	发送请求
     		get请求
     			get的请求实体拼在URL后面,?隔开,键值对
     			ajax.open("get","url");
     			ajax.send(null);
     		post请求
     			有单独的请求实体
     			ajax.open("post","url" );
     			下面这行代码告诉服务器按键值对解析请求数据,否则服务器会把请求数据当做字符串
     			ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     			ajax.send("name=张三&pwd=123");
     		ajax的状态码
     			ajax的状态码
     				readyState:0,1,2,3,4
     					4:表示响应内容被成功接受
     			响应状态码
     				status
     				200:表示一切OK
     				404:表示资源未找到
     				500:内部服务器错误
     		ajax的异步和同步
     			ajax.open(method,ur,async)
     			async:设置同步代码执行,还是异步代码执行
     				true代表异步,默认是异步
     				false代表同步
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值