JAVA学习笔记20——过滤器与监听器,JQuery

过滤器与监听器

1. Filter过滤器

1.1 作用

当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能

1.2 快速入门

@WebFilter("/*")
public class Demo1Filter implements Filter {
    
    
    public void destroy() {
    
    
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
    
    
        System.out.println("Filter");
        chain.doFilter(req,resp);
    }

    public void init(FilterConfig config) throws ServletException {
    
    

    }

}

1.3 细节

1.3.1 执行流程

执行过滤器→执行放行后资源→回来执行过滤器放行代码下边的代码

1.3.2 生命周期方法

init:在服务器启动后,会创建Filter对象,然后调用init方法。只执行一次。用于加载资源
doFilter:在每一次请求被拦截资源时,会执行。执行多次
destroy:在服务器关闭后,Filter对象被销毁。如果服务器是正常关闭,则会执行destroy方法。只执行一次,用于资源释放

1.3.3 配置详解

1.3.3.1 拦截路径配置

具体资源路径:/index.jsp 只有访问index.jsp资源时,过滤器才会被执行
目录拦截:/user/ * 访问user下的所有资源时,过滤器都会被执行
后缀名拦截:.jsp 访问后缀名为jsp资源时,过滤器都会被执行
拦截所有资源:/
访问所有资源过滤器都会被执行

1.3.3.2 拦截方式配置

1.注解配置
设置dispatcherTypes属性
REQUEST:默认值。浏览器直接请求资源
FORWARD:转发访问资源
INCLUDE:包含访问资源
ERROR:错误跳转资源
ASYNC:异步访问资源

1.4 登陆验证案例

2. Listener监听器

2.1 基本概念

事件监听机制
事件:一件事情
事件源:事件发生的地方
监听器:一个对象
注册监听:将事件、事件源、监听器绑定在一起。当事件源上发生某个事件后,执行监听器代码

JQuery

1. 基本概念

一个JavaScript的框架
JavaScript框架:本质上就是一些js文件,封装了js的原生代码而已

2. 快速入门

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>js框架</title>
    <script src="js/jquery-3.3.1.min.js"></script>
</head>
<body>
    <div id = "div1">div1...</div>
    <div id = "div2">div2...</div>
<script>
    //使用JQuery获取元素对象
    var div1 = $("#div1");
    alert(div1.html());
</script>
</body>
</html>

JS与JQuery

<body>
    <div id = "div1">div1...</div>
    <div id = "div2">div2...</div>
<script>
    //1.通过JS方式获取名称叫div的所有html元素对象
    var divs = document.getElementsByTagName("div");
    alert(divs.length); //可当作数组使用
    //2.通过JQuery方式获取名称叫div的所有html元素对象
    var $divs = $("div");
    alert($divs.length);    //可当作数组使用
    //直接改变divs中所有div内容
    $divs.html("div");
    //JS对象转换为JQuery:$(js对象)
    for (var i = 0;i < divs.length;i++){
    
    
        $(divs[i]).html("DIV")
    }
</script>
</body>

3. 基本语法

3.1 事件绑定

<body>
    <div id = "div1">div1...</div>
    <div id = "div2">div2...</div>
    <input type="button" value="click" id="b1">
<script>
    //给b1按钮添加事件
    //1.获取按钮
    $("#b1").click(function () {
    
    
        alert("click");
    })
</script>
</body>

3.2 入口函数

    <script>
        $(function () {
    
    
            $("#b1").click(function () {
    
    
                alert("click")
            })
        })
    </script>
</head>
<body>
    <div id = "div1">div1...</div>
    <div id = "div2">div2...</div>
    <input type="button" value="click" id="b1">
</body>

3.3 样式控制

    <script>
        $(function () {
    
    
            $("#div1").css("backgroundColor","red");
        });
    </script>
</head>
<body>
    <div id = "div1">div1...</div>
    <div id = "div2">div2...</div>
    <input type="button" value="click" id="b1">
</body>

4. 选择器

筛选具有相似特征的元素(标签)

4.1 基本选择器

	<script type="text/javascript">
		// <input type="button" value="保存"  class="mini" name="ok"  class="mini" />
		// <input type="button" value="改变 id 为 one 的元素的背景色为 红色"  id="b1"/>
		// <input type="button" value=" 改变元素名为 <div> 的所有元素的背景色为 红色"  id="b2"/>
		// <input type="button" value=" 改变 class 为 mini 的所有元素的背景色为 红色"  id="b3"/>
		// <input type="button" value=" 改变所有的<span>元素和 id 为 two 的元素的背景色为红色"  id="b4"/>
		$(function () {
    
    
			$("#b1").click(function () {
    
    
				$("#one").css("backgroundColor","pink");	//id
			});
			$("#b2").click(function () {
    
    
				$("div").css("backgroundColor","pink");		//标签
			});
			$("#b3").click(function () {
    
    
				$(".mini").css("backgroundColor","pink");	//类
			});
			$("#b4").click(function () {
    
    
				$("span,#two").css("backgroundColor","pink");	//并集
			});
		});

	</script>

4.2 层级选择器

    <script type="text/javascript">
		// <input type="button" value="保存"  class="mini" name="ok"  class="mini" />
		// <input type="button" value=" 改变 <body> 内所有 <div> 的背景色为红色"  id="b1"/>
		// <input type="button" value=" 改变 <body> 内子 <div> 的背景色为 红色"  id="b2"/>
		$(function () {
    
    
			$("#b1").click(function () {
    
    
				$("body div").css("backgroundColor","pink");
			})
			$("#b2").click(function () {
    
    
				$("body > div").css("backgroundColor","pink");
			})
		})
	</script>

4.3 属性选择器

	 <script type="text/javascript">
		 // <input type="button" value="保存"  class="mini" name="ok"  class="mini" />
		 // <input type="button" value=" 含有属性title 的div元素背景色为红色"  id="b1"/>
		 // <input type="button" value=" 属性title值等于test的div元素背景色为红色"  id="b2"/>
		 // <input type="button" value=" 属性title值不等于test的div元素(没有属性title的也将被选中)背景色为红色"  id="b3"/>
		 // <input type="button" value=" 属性title值 以te开始 的div元素背景色为红色"  id="b4"/>
		 // <input type="button" value=" 属性title值 以est结束 的div元素背景色为红色"  id="b5"/>
		 // <input type="button" value="属性title值 含有es的div元素背景色为红色"  id="b6"/>
		 // <input type="button" value="选取有属性id的div元素,然后在结果中选取属性title值含有“es”的 div 元素背景色为红色"  id="b7"/>
		 $(function () {
    
    
			 $("#b1").click(function () {
    
    
				$("div[title]").css("backgroundColor","pink");
			 });
			 $("#b2").click(function () {
    
    
				 $("div[title='test']").css("backgroundColor","pink");
			 });
			 $("#b3").click(function () {
    
    
				 $("div[title!='test']").css("backgroundColor","pink");
			 });
			 $("#b4").click(function () {
    
    
				 $("div[title^='te']").css("backgroundColor","pink");
			 });
			 $("#b5").click(function () {
    
    
				 $("div[title$='est']").css("backgroundColor","pink");
			 });
			 $("#b6").click(function () {
    
    
				 $("div[title*='es']").css("backgroundColor","pink");
			 });
			 $("#b7").click(function () {
    
    
				 $("div[id][title*='es']").css("backgroundColor","pink");
			 });
		 });
		
	</script>

4.4 过滤选择器

	<script type="text/javascript">
		// <input type="button" value="保存"  class="mini" name="ok"  class="mini" />
		// <input type="button" value=" 改变第一个 div 元素的背景色为 红色"  id="b1"/>
		// <input type="button" value=" 改变最后一个 div 元素的背景色为 红色"  id="b2"/>
		// <input type="button" value=" 改变class不为 one 的所有 div 元素的背景色为 红色"  id="b3"/>
		// <input type="button" value=" 改变索引值为偶数的 div 元素的背景色为 红色"  id="b4"/>
		// <input type="button" value=" 改变索引值为奇数的 div 元素的背景色为 红色"  id="b5"/>
		// <input type="button" value=" 改变索引值为大于 3 的 div 元素的背景色为 红色"  id="b6"/>
		// <input type="button" value=" 改变索引值为等于 3 的 div 元素的背景色为 红色"  id="b7"/>
		// <input type="button" value=" 改变索引值为小于 3 的 div 元素的背景色为 红色"  id="b8"/>
		// <input type="button" value=" 改变所有的标题元素的背景色为 红色"  id="b9"/>
		$(function () {
    
    
			$("#b1").click(function () {
    
    
				$("div:first").css("backgroundColor","pink");
			})
			$("#b2").click(function () {
    
    
				$("div:last").css("backgroundColor","pink");
			})
			$("#b3").click(function () {
    
    
				$("div:not(.one)").css("backgroundColor","pink");
			})
			$("#b4").click(function () {
    
    
				$("div:even").css("backgroundColor","pink");
			})
			$("#b5").click(function () {
    
    
				$("div:odd").css("backgroundColor","pink");
			})
			$("#b6").click(function () {
    
    
				$("div:gt(3)").css("backgroundColor","pink");
			})
			$("#b7").click(function () {
    
    
				$("div:eq(3)").css("backgroundColor","pink");
			})
			$("#b8").click(function () {
    
    
				$("div:lt(3)").css("backgroundColor","pink");
			})
			$("#b9").click(function () {
    
    
				$(":header").css("backgroundColor","pink");
			})
		})
		 
	</script>

4.5 表单过滤选择器

    <script type="text/javascript">
		// <input type="button" value="保存"  class="mini" name="ok"  class="mini" />
		// <input type="button" value=" 利用 jQuery 对象的 val() 方法改变表单内可用 <input> 元素的值"  id="b1"/>
		// <input type="button" value=" 利用 jQuery 对象的 val() 方法改变表单内不可用 <input> 元素的值"  id="b2"/>
		// <input type="button" value=" 利用 jQuery 对象的 length 属性获取复选框选中的个数"  id="b3"/>
		// <input type="button" value=" 利用 jQuery 对象的 length 属性获取下拉框选中的个数"  id="b4"/>
		$(function () {
    
    
			$("#b1").click(function () {
    
    
				$("input[type='text']:enabled").val("aaa");
			})
		})
		$(function () {
    
    
			$("#b2").click(function () {
    
    
				$("input[type='text']:disabled").val("aaa");
			})
		})
		$(function () {
    
    
			$("#b3").click(function () {
    
    
				alert($("input[type='checkbox']:checked").length);
			})
		})
		$(function () {
    
    
			$("#b4").click(function () {
    
    
				alert($("#job > option:selected").length);
			})
		})
	
	</script>

5. DOM操作

5.1 内容操作

		<script>

			$(function () {
    
    
                //获取myinput 的value值
				var value = $("#myinput").val();
				alert(value);
                $("#myinput").val("李四");
                // 获取mydiv的标签体内容
				var html = $("#mydiv").html();
				alert(html);
                $("#mydiv").html("<p>aaaa</p>");
                // 获取mydiv文本内容
                var text = $("#mydiv").text();
                alert(text);
                $("#mydiv").text("bbb");

            });

		</script>
		
	</head>
	<body>
		<input id="myinput" type="text" name="username" value="张三" /><br />
		<div id="mydiv"><p><a href="#">标题标签</a></p></div>
	</body>

5.2 属性操作

5.2.1 通用属性操作

	<script type="text/javascript">
		$(function () {
    
    
            //获取北京节点的name属性值
			var name = $("#bj").attr("name");
			//alert(name);
            //设置北京节点的name属性的值为dabeijing
            $("#bj").attr("name","dabeijing");
            //新增北京节点的discription属性 属性值是didu
            $("#bj").attr("discription","didu");
            //删除北京节点的name属性并检验name属性是否存在
            $("#bj").removeAttr("name");
            //获得hobby的的选中状态
			var checked = $("#hobby").prop("checked");
			alert(checked);

            //var checked = $("#hobby").attr("checked"); //获取不到,弹出undefined

        });

		
	</script>
	
	
	</head>
	 
	<body>
				
		 <ul>
		 	 <li id="bj" name="beijing" xxx="yyy">北京</li>
			 <li id="tj" name="tianjin">天津</li>
		 </ul>
		 <input type="checkbox" id="hobby"/>
		 
		
	</body>

attr与prop区别:
1.如果操作的是元素的固有属性,建议使用prop
2.如果操作的是元素的自定义属性,建议使用attr

5.2.2 class属性操作

    <script type="text/javascript">

		$(function () {
    
    
            //<input type="button" value="采用属性增加样式(改变id=one的样式)"  id="b1"/>
			$("#b1").click(function () {
    
    
				$("#one").prop("class","second");
            });
            //<input type="button" value=" addClass"  id="b2"/>
            $("#b2").click(function () {
    
    
                $("#one").addClass("second");
            });
            //<input type="button" value="removeClass"  id="b3"/>
            $("#b3").click(function () {
    
    
                $("#one").removeClass("second");
            });
            //<input type="button" value=" 切换样式"  id="b4"/>
            $("#b4").click(function () {
    
    
                $("#one").toggleClass("second");
            });
            //<input type="button" value=" 通过css()获得id为one背景颜色"  id="b5"/>
            $("#b5").click(function () {
    
    
                var backgroundColor = $("#one").css("backgroundColor");
                alert(backgroundColor);

            });
            //<input type="button" value=" 通过css()设置id为one背景颜色为绿色"  id="b6"/>
            $("#b6").click(function () {
    
    
                 $("#one").css("backgroundColor","green");

            });

        });

		 
		 
	
	</script>
   
	</head>
	 
	<body>
				
		 <input type="button" value="保存"  class="mini" name="ok"  class="mini" />
		 <input type="button" value="采用属性增加样式(改变id=one的样式)"  id="b1"/>
		 <input type="button" value=" addClass"  id="b2"/>
		 <input type="button" value="removeClass"  id="b3"/>
		 <input type="button" value=" 切换样式"  id="b4"/>
		 <input type="button" value=" 通过css()获得id为one背景颜色"  id="b5"/>
 		 <input type="button" value=" 通过css()设置id为one背景颜色为绿色"  id="b6"/>
 
		 <h1>有一种奇迹叫坚持</h1>
		 <h2>自信源于努力</h2>
		 
	     <div id="one">
	    	 id为one 
		 </div>
		
		 <div id="two" class="mini" >
	    	   id为two   class是 mini 
		       <div  class="mini" >class是 mini</div>
		</div>
		
		 <div class="one" >
		 	    class是 one 
		       <div  class="mini" >class是 mini</div>
			   <div  class="mini" >class是 mini</div>
		 </div>
		 
		 <div class="one" >
		 	  class是 one 
		       <div  class="mini01" >class是 mini01</div>
			   <div  class="mini" >class是 mini</div>
		</div>
		
		

		<span class="spanone">    span
		</span>
		
	</body>

5.3 CRUD操作

	 <script type="text/javascript">

		 $(function () {
    
    
             // <input type="button" value="将反恐放置到city的后面"  id="b1"/>

			 $("#b1").click(function () {
    
    
				 //append
				 //$("#city").append($("#fk"));
				 //appendTo
                 $("#fk").appendTo($("#city"));
             });
             // <input type="button" value="将反恐放置到city的最前面"  id="b2"/>
             $("#b2").click(function () {
    
    
                 //prepend
                 //$("#city").prepend($("#fk"));
                 //prependTo
                 $("#fk").prependTo($("#city"));
             });
             // <input type="button" value="将反恐插入到天津后面"  id="b3"/>
             $("#b3").click(function () {
    
    
                 //after
				 //$("#tj").after($("#fk"));
                 //insertAfter
                 $("#fk").insertAfter($("#tj"));

             });
             // <input type="button" value="将反恐插入到天津前面"  id="b4"/>
             $("#b4").click(function () {
    
    
                 //before
                 //$("#tj").before($("#fk"));
                 //insertBefore
                 $("#fk").insertBefore($("#tj"));

             });
         });

	</script>
    <script type="text/javascript">
	$(function () {
    
    
        // <input type="button" value="删除<li id='bj' name='beijing'>北京</li>"  id="b1"/>
		$("#b1").click(function () {
    
    
			$("#bj").remove();
        });
        // <input type="button" value="删除city所有的li节点   清空元素中的所有后代节点(不包含属性节点)"  id="b2"/>
        $("#b2").click(function () {
    
    
            $("#city").empty();
        });
    });
	</script>

1.对象1.append(对象2):将对象2添加到对象1元素内部末尾
2.对象1.prepend(对象2):将对象2添加到对象1元素内部开头
3.对象1.appendTo(对象2):将对象1添加到对象2内部末尾
4.对象1.prependTo(对象2):将对象1添加到对象2内部开头
5.对象1.after(对象2):将对象2添加到对象1后面。对象1与对象2兄弟关系
6.对象1.before(对象2):将对象2添加到对象1前面。对象1与对象2兄弟关系
7.对象1.insertAfter(对象2):将对象2添加到对象1后面。对象1与对象2兄弟关系
8.对象1.insertBefore(对象2):将对象2添加到对象1前面。对象1与对象2兄弟关系
9.对象.remove():将对象删除掉
9.对象.empty():将对象的后代全部清空,但是保留当前对象以及其属性节点

6. 动画效果

6.1 默认显示和隐藏方式

6.1.1 默认显示和隐藏方式

  1. show([speed,[easing],[fn]])
    参数:
    speed:动画的速度。三个预定义的值(“slow”,“normal”, “fast”)或表示动画时长的毫秒数值(如:1000)
    easing:用来指定切换效果,默认是"swing",可用参数"linear"
  • swing:动画执行时效果是 先慢,中间快,最后又慢
  • linear:动画执行时速度是匀速的
    fn:在动画完成时执行的函数,每个元素执行一次。
  1. hide([speed,[easing],[fn]])
  2. toggle([speed],[easing],[fn])

6.1.2 滑动显示和隐藏方式

滑动显示和隐藏方式

  1. slideDown([speed],[easing],[fn])
  2. slideUp([speed,[easing],[fn]])
  3. slideToggle([speed],[easing],[fn])

6.1.3. 淡入淡出显示和隐藏方式

  1. fadeIn([speed],[easing],[fn])
  2. fadeOut([speed],[easing],[fn])
  3. fadeToggle([speed,[easing],[fn]])
    <script>
        //隐藏div
        function hideFn(){
    
    
           /* $("#showDiv").hide("slow","swing",function(){
                alert("隐藏了...")
            });*/
/*

           //默认方式
            $("#showDiv").hide(5000,"swing");
*/
/*

            //滑动方式
            $("#showDiv").slideUp("slow");

            */

            //淡入淡出方式
            $("#showDiv").fadeOut("slow");
        }

        //显示div
        function showFn(){
    
    
            /*$("#showDiv").show("slow","swing",function(){
                alert("显示了...")
            });*/

            /*
            //默认方式
            $("#showDiv").show(5000,"linear");
            */
/*
            //滑动方式
            $("#showDiv").slideDown("slow");
            */

            //淡入淡出方式
            $("#showDiv").fadeIn("slow");
        }


        //切换显示和隐藏div
        function toggleFn(){
    
    

            /*
            //默认方式
            $("#showDiv").toggle("slow");
*/
            /*
            //滑动方式
            $("#showDiv").slideToggle("slow");
*/

            //淡入淡出方式
            $("#showDiv").fadeToggle("slow");
        }




    </script>

</head>
<body>
<input type="button" value="点击按钮隐藏div" onclick="hideFn()">
<input type="button" value="点击按钮显示div" onclick="showFn()">
<input type="button" value="点击按钮切换div显示和隐藏" onclick="toggleFn()">

7.遍历

1.jq对象.each(callback)

    <script type="text/javascript">
        $(function () {
    
    
            //获取所有ul下的li
            var cities = $("#city li");
            //遍历li
            cities.each(function (index,element) {
    
    
                //获取li对象:this
                alert(this.innerHTML);
                //获取li对象,在回调函数中定义参数
                alert(index + ":" + $(element).html());
            })
        })

    </script>

2.$.each(object,[callback])

    <script type="text/javascript">
        $(function () {
    
    
            var cities = $("#city li");
            $.each(cities,function () {
    
    
                alert($(this).html());
            })
        })
    </script>

3.for … of

    <script type="text/javascript">
        $(function () {
    
    
            var cities = $("#city li");
            for(li of cities){
    
    
                alert($(li).html());
            }
        })
    </script>

8. 事件绑定

8.1 jquery标准绑定方式

jq对象.事件方法(回调函数);

    <script type="text/javascript">
        $(function () {
    
    
            //获取name对象,绑定click事件
            // $("#name").click(function () {
    
    
            //     alert("click")
            // })
            //链式编程
            $("#name").mouseover(function () {
    
    
                alert("over")
            }).mouseout(function () {
    
    
                alert("out")
            });
        });
    </script>

8.2 on绑定事件/off解除绑定

jq对象.on(“事件名称”,回调函数);
jq对象.off(“事件名称”);

    <script type="text/javascript">
        $(function () {
    
    
            //使用on给按钮绑定单击事件 click
            $("#btn").on("click",function () {
    
    
                alert("click");
            })
            //使用off接触单机事件
            $("#btn2").click(function () {
    
    
                $("#btn").off();
            })
        });

    </script>

8.3 事件切换

jq对象.toggle(fn1,fn2);

    <script type="text/javascript">
        $(function () {
    
    
            $("#btn").toggle(function () {
    
    
                $("#myDiv").css("backgroundColor","green");
            },function () {
    
    
                $("#myDiv").css("backgroundColor","red");
            })
        })
        

    </script>

猜你喜欢

转载自blog.csdn.net/qq_44708714/article/details/109356570