java学习与应用(4.6)--过滤器、监听器、JQuery、AJAX、JSON等

过滤器

Filter过滤器:客户端在请求服务器资源前和返回响应,会通过过滤器,以拦截请求完成特殊功能。登录校验、统一编码校验等一些通用操作放置到过滤器。
定义类实现接口Filter(javax.servlet),复写方法(init(服务器启动调用),doFilter(写入FilterChain.doFilter进入方法放行,之后的代码为返回响应执行的信息),destory(服务器关闭前执行)),配置拦截路径(@WebFilter(/*为所有资源都拦截))。
web.xml配置(WEB_INF下),配置filter标签下的filter-name,filter-class。配置filter-mapping标签下url-pattern,filter-name。也可直接用注解@WebFilter配置即可。
配置详解:拦截路径配置(具体资源路径、目录/xxx/*、后缀*.jsp,所有资源/*等)。
配置符合请求方式访问资源前进行的拦截(REQUEST浏览器直接请求,FORWARD转发访问资源,INCLUDE包含访问资源,ERROR跳转资源,ASYNC异步访问资源),使用注解的dispatcherType(可传入数组)。
也可配置web.xml的dispatcher标签拦截符合条件的资源被访问方式。
过滤器链(多个过滤器),资源进入通过的过滤器和返回的顺序相反。使用注解:过滤器执行的先后使用类名字符串比较(如AFilter,BFilter等)顺序执行。使用web.xml:filter-mapping的先后顺序执行
设置登录校验,可以在Filter中对指定页面校验session值判断放行和跳转等。敏感词汇过滤:使用装饰模式、代理模式等来增强request。在代理模式中使用代理对象代理真实对象达到增强真实对象,代理中增强返回值为。
静态代理使用类文件描述代理模式,动态代理在内存中形成代理类。代理对象和真实对象实现相同接口,使用Proxy的newInstance获取代理对象(传入如:lenovo. getClass(). getClassLoader(), lenovo. getClass(). getInterfaces(), new InvocationHandler( ),然后重写invoke),使用代理对象获取真实。
proxy为代理对象,method为代理对象被调用的方法,args为被调用时传递的参数。invoke中写入Object obj=method.invoke(xxx,args);return obj方式增强真实对象。通过修改代理传入的参数,返回值,和方法体,进行增强和修改。

监听器

Listener监听器:注册监听:将事件、事件源、监听器绑定在一起。当事件源 上发生某个事件后,执行监听器代码。
ServletContextListener对象监听ServletContext对象的创建(contextInitialized方法)和销毁(contextDestoryed方法)。可以用于加载资源文件[全局资源文件](web.xml中context-param标签下的param-name和param-value标签配置资源路径),使用ServletContext.getInitParameter方法获取该文件,最后加载进内存。
定义类实现ServletContextListener接口,复写其方法,配置监听(web.xml中的listener标签下的listener-class标签,或注解)。

JQuery

JQuery(JavaScript的框架),简化js的开发,优化了HTML文档操作。
使用JQuery获取元素JQuery对象($("#id"),$("tag")等选择器),然后可以转换为js对象,两种对象都可以当做数组使用,方法不通用,但是前者更方便,如拥有将内容修改方法html等。
转换方式js->jq(使用:$(js对象))。jq->js(使用:jq对象[索引]或者jq对象.get(索引),获取js对象)。
选择器以选择元素对象:事件绑定($("xx").click(function(){})绑定单击事件),入口函数($(function(){})文档加载完毕执行的代码,和onload的区别如后者只能定义一次,前者不会被覆盖),样式控制(使用.css方法,传入DOM或css键值对修改)。
选择器见图:

 

 

 

后代选择器包括了所有子代,子选择器只选择其下一代标签。选择器中标签选择器可以使用!=(不等),^=(前缀匹配),$=(后缀匹配),*=(包含匹配)等运算符。
过滤选择器中,根据索引,过滤器等进行过滤。过滤器选中的元素后加的冒号进行过滤,表单转转等。
 

JQuery的DOM操作

内容操作方法如:html获取标签体内容,text获取存文件内容,val获取属性value值。可以获取并修改其内容。

属性操作:通用操作如:attr获取(传入键)/设置(传入键值)属性,removeAttr删除属性,prop获取/设置属性,removeProp删除属性。元素固有属性(手册中存在的属性)使用prop,操作自定义属性使用attr。
对class操作:addClass(添加class属性值),removeClass(删除class属性值),toggleClass(存在则添加,不存在则删除),css方法获取属性等。
CRUD操作:append父元素将子元素添加到内部,并位于末尾(prepend方法添加到内部并位于开头)。appendTo,prependTo方法将子元素方法放到父元素内部等。
 after/insertAfter方法,添加兄弟元素到本元素[注意本元素指代]后,before/insertBefore添加到本元素[注意本元素指代]前。remove方法移除元素,empty清空所有元素的子元素。
其他方法见jquery手册如clone方法。

JQuery的动画

JQuery的动画,遍历方法,事件绑定。动画使用见图片。
JQuery的遍历方式(js可以使用for循环):jq对象.each(function(){this.xxx(this为该对象的内容,不用写for,或使用function中传入索引index和elemet使用替代this,element为js对象[可转jq对象])}),回调函数function中的return false和ture分别替代break和continue。

遍历方式:$.each (jq对象,function(){}),遍历方式:for ... of 方式:for(li of citys){回调体},jq3.0以后支持。

事件绑定:jq对象.事件方法(回调函数[去掉on的一群方法,不传入回调函数则执行自动触发对应事件])(可以使用链式编程),jq对象.on(绑定事件,传入事件名称和回调函数).off(解绑,传入事件,不传入则解绑全部事件) 
 , jq对象.toggle事件切换,传入多个回调函数轮流执行各个回调函数(jq3.0以上版本需要引入插件,该方法位于低版本中)。

插件:可以增强JQuery的功能。

实现方式: $. fn.extend(object) 增强通过Jquery获取的对象的功能[使用对象调用]   $.extend(object)增强JQeury对象自身的功能[全局]。object格式为{方法名:function(){}}。该方法可以被JQuery对象调用[使用对象调用],或直接用$.方式调用[全局]。

AJAX

AJAX(Asynchronous JavaScript And XML),异步的JavaScript和XML。异步方式下,客户端发出请求后不被服务器响应阻塞,客户端可以进行其它操作。不加载整个网页情况下能对局部信息进行更新。
可以使用原生的js实现方式(使用原始js代码向服务器异步请求,使用xmlhttp的方法,见手册即可)和JQuery的实现方式使用:$.ajax(),$.get  $.post。
$.ajax()中传入{}键值对,如url的请求路径,type的请求方式,date的携带参数字符串或json格式,success的响应成功[返回200]执行的回调函数,error的发送请求出错执行的函数。dateTpye的设置接收的响应数据格式。键值对以逗号隔开。
$.get发送get请求,分别传入url,date,callback,type进行设置。$.post发送post请求,类似get方法。type可以发送给客户端json而不被认为是字符串。或在服务器端设置MIME类型response.setContentType设置响应格式为json。

JSON

JSON(JavaScript Object Notation JavaScript对象表示法),用于存储和交换文本信息的语法,比XML更小更快。
JSON基本规则:数据由键值对构成,键值用单引号或双引号也可以不使用引号,值类型为数字/字符串/逻辑值/数组/对象/null等。数据逗号分隔,方括号保存数组(方括号中花括号使用定义数组对象),花括号保存对象定义为json格式。
获取对象:json对象.键名,json.对象["键名"],使用for in 方式进行遍历,可以获取key,再利用对象和key获取值。
Java对象和json对象的转换:
Java对象转为JSON对象使用解析器(Jsonlib、Gson、fastjson,jackson)。导入jar包,创建Jackson核心对象ObjectMapper,然后使用其方法进行解析。
方法如:writeValue传入File/Writer/OutputStream和obj,将obj转json并填充到指定的位置。writeValueAsString传入对象输出json字符串。
注解@JsonIgnore忽略该属性,@JsonFormat(pattern)。在函数的成员变量前使用,对值进行处理。List集合转换后为数组的json,Map集合转换后为json,和对象一致。
json转换为java对象,使用readValue方法,传入json数据和Class类型,返回指定类型的对象。
 
原文地址:https://www.cnblogs.com/bai2018/p/12318183.html