Filter、Listener和Ajax

Filter

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

过滤器可以把对资源的请求拦截下来,从而实现一些特殊的功能。

Filter快速入门

1.定义一个类实现Filter接口,重写所有方法
2.配置拦截路径
3.在doFilter中实现功能

//@WebFilter("/demo1") 精确
//@WebFilter("/user/*") 目录
//@WebFilter("*.jsp") 后缀
@WebFilter("/*")
public class FilterDemo1 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("过滤前代码");
        //放行
        filterChain.doFilter(servletRequest,servletResponse);
        System.out.println("过滤后代码");
    }

    @Override
    public void destroy() {

    }
}

Filter的执行流程
放行前代码 ->放行->访问资源->放行后代码

过滤器链

过滤器链是指在一个Web应用,可以配置多个过滤器,这多个过滤器称为过滤器链。

我们现在使用的是注解配置Filter,而这种配置方式的优先级是按照过滤器类名(字符串)的自然排序。

比如有如下两个名称的过滤器 : BFilterDemoAFilterDemo 。那一定是 AFilterDemo 过滤器先执行。

Listener

Listener 表示监听器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。

监听器可以监听就是在 applicationsessionrequest 三个对象创建、销毁或者往其中添加修改删除属性时自动执行代码的功能组件。

request 和 session 我们学习过。而 applicationServletContext 类型的对象。

ServletContext 代表整个web应用,在服务器启动的时候,tomcat会自动创建该对象。在服务器关闭时会自动销毁该对象。

AJAX

概念:AJAX(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML

AJAX作用:与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据

后台发送:浏览器的请求是后台js发送给服务器的,js会创建单独的线程发送异步请求,这个线程不会影响浏览器的线程运行。

局部刷新:浏览器接收到结果以后进行页面局部刷新

浏览器发送HTTP返回的是一个完整的网页,浏览器会显示这个网页,
浏览器会等待服务器的响应(同步请求)

AJAX返回的是部分数据,浏览器内容不会变化
后台发送,不影响浏览器的操作(异步请求)

所以用html+ajax来替换jsp页面

快速入门

原生ajax
步骤:
1.先创建XMLServletRequest对象
2.建立连接
3.发送请求
4.判断是否正确响应
5.获取响应的数据

	let xmlHttpRequest = new XMLHttpRequest();
    //请求方式,和访问路径
    xmlHttpRequest.open("GET","ajaxServlet");
    xmlHttpRequest.send();

    xmlHttpRequest.onreadystatechange=function (){
        /*4代表访问和响应完成*/
        if(xmlHttpRequest.readyState==4&&xmlHttpRequest.status==200){

            alert(xmlHttpRequest.responseText);
        }
    }

使用axios
步骤:
1.引用axios的js文件
2.使用axios

		 //post请求
            axios({
                method:"POST",
                url:"ajaxServlet",//可以带请求参数? 不可以
                data:"username=lisi&password=4444"
            }).then(resp=>{
                //resp 响应
                //resp.data :表示相应数据
                alert("post:" +resp.data)
            })

            //ajax获取的字符类型”true“
            //axios会自动将”true“转为boolean类型

最后

如果你对本文有疑问,你可以在文章下方对我留言,敬请指正,对于每个留言我都会认真查看。


版权声明:本文为weixin_47543906原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。