• 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类型,返回指定类型的对象。
     
  • 相关阅读:
    图解Http协议 url长度限制
    cpu占用工具,亲测可用
    python使用mysql 获取数据,感知不到数据变化的原因
    dns压测工具dnsperf
    sqlalchemy.exc.ArgumentError: Mapper mapped class Result->result could not assemble any primary key 报错解决
    DevTools failed to load SourceMap: Could not load content for chrome-extension 解决
    tcp/udp 的一些测试
    win端 vscode 远程连接 centos,配置调试
    gitllab访问报错:Permission denied (publickey). 以及后续测试
    linux文件表项测试
  • 原文地址:https://www.cnblogs.com/bai2018/p/12318183.html
Copyright © 2020-2023  润新知