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
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);