Filter

Filter表示过滤器, 是JavaWeb三大组件(Servlet, Filter, Listener)之一.

Filter可以把资源的请求拦截下来, 从而实现一些特殊的功能

Filter一般完成一些通用的操作, 比如权限控制, 统一编码处理, 敏感字符处理等...

Filter快速入门

注解配置的是拦截路径
/*代表全都拦截
filterChain.doFilter();是放行用的

@WebFilter("/*")
public class FilterDemo implements Filter {

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("FilterDemo...");

        //放行
        filterChain.doFilter(servletRequest, servletResponse);
    }

    @Override
    public void destroy() {

    }
}

Filter的执行流程

执行放行前逻辑 --> 访问资源 --> 执行放行后逻辑

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        //1.放行前, 对request数据进行处理

        //放行
        filterChain.doFilter(servletRequest, servletResponse);

        //2.放行后, 对response数据进行处理
        
    }

Filter拦截路径配置

拦截具体的资源: /index.jsp
目录拦截: /usr/*
后缀名拦截: *jsp
拦截所有: /*

Listener

基本使用

package com.itheima.web.listener;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class ContextLoaderListener implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        //加载资源
        System.out.println("contextInitialized.....");
    }

    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        //释放资源
    }
}

常见的Listener

Listener

AJAX

Axios 是基于 Promise 的 HTTP 客户端,提供了更简单和更强大的 API,能够让开发者更方便地进行 AJAX 请求

Axios的基本使用

GET请求

    //1.get
    axios({
        method:"get",
        url:"http://localhost:8080/ajax-demo/axiosServlet?username=zhangsan"
    }).then(function (resp) {
        alert(resp.data);
    })

POST请求

    //2.post
    axios({
        method:"post",
        url: "http://localhost:8080/ajax-demo/axiosServlet",
        data: "username=lisi"
    }).then(function (resp) {
        alert(resp.data)
    })

Axios的简化使用

    axios.get("http://localhost:8080/ajax-demo/ajaxLoginServlet?username=zhangsan").then(function (resp) {
        if (resp.data === "true") {
            alert("用户名没问题!");
        }
    })
        
axios.post("http://localhost:8080/ajax-demo/ajaxLoginServlet", "username=zhangsan").then(function (resp) {
    if (resp.data === "true") {
        alert("用户名没问题!");
    }
})

JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人和机器阅读和编写。

JSON基础语法

定义JSON字符串

var jsonStr = '{"name":"zhangsan","age":23,"addr":["北京","上海","西安"]}';

JSON字符串和JS对象的相互转换

//JSON字符串转JS对象
let jsonObject = JSON.parse(jsonStr);

//JS对象转为JSON字符串
let jsonStr2 = JSON.stringify(jsonObject);

在Axios中, JSON字符串和JS对象可以自动转换

jSON字符串和Java对象相互转换

首先要导入阿里巴巴开源的FASTJSON, 详情请见Maven依赖

        User user = new User();
        user.setId(1);
        user.setUsername("zhangsan");
        user.setPassword("123456");
        
        //1.将Java对象转换为json字符串
        String jsonString = JSON.toJSONString(user);
        System.out.println(jsonString);

        
        //2.将json字符串转成Java对象
        User u = JSON.parseObject(jsonString, User.class);
        System.out.println(u);