随笔 - 217  文章 - 4  评论 - 4  阅读 - 23587

后台技术学习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使用。

     

  

 

posted on   跨越&尘世  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示