后台技术学习6
Filter过滤器
作用:一般用于完成通用的操作
过滤器细节
1、web.xml配置
<filter> <filter-name>demo1</filter-name>//过滤名称 <filter-class>Filter.Demo1</filter-class>//过滤器目录 </filter> <filter-mapping> <filter-name>demo1</filter-name> <url-pattern>/*</url-pattern>//拦截设置 </filter-mapping>
2、过滤器也可以在Filter文件中完成
@WebFilter(value = "/index.jsp")//配置拦截资源
3、过滤器的执行流程和生命周期
拦截->放行->再放行
生命周期:init():服务器启动,创建Filter对象,执行一次
doFilter():拦截资源 执行多次
destory():服务器正常关闭,销毁Filter对象,执行一次
放行:filterChain(servletRequest,servletResponse);
4、过滤器配置详解
①具体的资源路径:/index.jsp 访问index.jsp资源时 Filter执行
②拦截目录:/目录/* 访问该目录的资源时,全部拦截
③后缀名拦截:*.jsp 访问jsp资源时,全部拦截
④拦截所有:/*
5、拦截方式配置:设置资源被访问的方式
注解配置:设置dispatcherTypes属性
①REQUEST:默认,在浏览器请求资源时直接拦截
②FORWORD:转发访问资源时进行拦截
③INCLUDE:若该资源包含访问资源,则进行拦截
④ERROR:发生错误时进行跳转
⑤ASYNC:异步访问资源
web.xml配置:<dispatcher></dispatcher>
6、过滤器链
前提:多个过滤器; 假设:两个过滤器Filter1 Filter2
顺序:Filter1->Filter2->资源->Filter2->Filter1 类似于栈
先后顺序问题:按类名的字符串比较规则比较,值小的先执行
web.xml配置:将哪个过滤器定义在上面谁先执行
Listener
事件监听机制:监听器(一个对象),注册监听(将事件、监听器绑定在一起,当事件源发生某件事,执行监听器代码)
ServletContextListener:监听ServletContextListener对象创建和销毁
web.xml配置
<listener> <listener-class>Listener.contextListener</listener-class> </listener>
再代码中直接进行@webListener即可
JSON
JSON是一种轻量级的数据交换格式
1、json由键值对组成,有三种定义方式
//第一种
var person = {"name": "张三", "age": 20, "sex": "男"};
//第二种
var persons = {
"persons": [{"name": "张三", "age": 21, "sex": true},
{"name": "李四", "age": 21, "sex": true},
{"name": "翠翠", "age": 21, "sex": false}
]
}
//第三种
var ps = [{"name": "张三", "age": 21, "sex": true},
{"name": "兰兰", "age": 21, "sex": false},
{"name": "青青", "age": 21, "sex": false}
];
获取数据:
①json对象.键名
②json对象["键名"]
③数组对象[index]
2、两个常用方法
JSON.stringify() 把json对象转换为json字符串
JSON.parse() 把json字符串转换为json对象
var jsonobj = JSON.stringify(person);
alert(jsonobj);
//将JSON字符串转换为JSON对象
var jsonobj1 = JSON.parse(jsonobj);
alert(jsonobj1);
3、其他转换方式 需要gson jar包
togson()可以把java对象转换为json字符串
fromgson(jsonString,对象类型) 把json字符串转为Java对象
public class JSONTest { //javabean和json互转 @Test public void test1(){ Person p = new Person(1,"张三"); Gson gson = new Gson(); String pString = gson.toJson(p); System.out.println(pString); Object obj = gson.fromJson(pString,Person.class); System.out.println(obj); } @Test public void test2(){ List<Person> list = new ArrayList<>(); list.add(new Person(1,"清清")); list.add(new Person(2,"兰兰")); Gson gson = new Gson(); String s = gson.toJson(list); System.out.println(s); //返回对象 List list1 = gson.fromJson(s,list.getClass()); System.out.println(list1); //返回集合 List<Person> list2 = gson.fromJson(s,new JSONType().getType()); System.out.println(list2); } //map和json互转 @Test public void test3(){ Map<Integer,Person> map = new HashMap<>(); map.put(1,new Person(1,"张三")); map.put(2,new Person(2,"李四")); Gson gson = new Gson(); String s = gson.toJson(map); System.out.println(s); // Map<Integer,Person> map2 = gson.fromJson(s,new MapType().getType()); //匿名内部类 Map<Integer,Person> map2 = gson.fromJson(s,new TypeToken<HashMap<Integer,Person>>(){}.getType()); System.out.println(map2); Person p = map2.get(1); System.out.println(p); }
AJAX
ajax是一种浏览器通过js异步发起请求,局部更新页面的技术
实现方式
①原生js
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script> //定义方法 function fun() { //发送异步请求 //创建核心对象 var xmlhttp; if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码 xmlhttp=new XMLHttpRequest(); } else { // IE6, IE5 浏览器执行代码 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } //建立连接 /* * 参数:1、请求方式 get post * 2、请求的url * 3、true(异步) false(同步) * */ xmlhttp.open("GET","/ajaxServlet?username=tom",true); //发送请求 xmlhttp.send(); xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myDiv").innerHTML=xmlhttp.responseText; } } } </script> </head> <body> <input type="button" value="发送异步请求" onclick="fun()"> </body> </html>
②jQuery
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="jquery-3.6.0.js"></script> <script> function fun() { /*$.ajax()实现 $.ajax({ url:"/ajaxServlet",//请求路径 type:"POST", //data:"username=jack&age=23", data:{"username":"jack","age":21}, success:function (data) { alert(data); }, });*/ $.get("/ajaxServlet",{username:"rose"},function (data) { alert(data+hello") },"text"); } </script> </head> <body> <input type="button" value="发送异步请求" onclick="fun()"> </body> </html>
注:需要配合Servlet使用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署