filter
对于java后端来说,一个http请求过来会先经过filter,进行过滤,在filter下我们可以通过session做一些权限管理的过滤,把没有权限的接口直接放回403,filter也可以操作请求头做一些跨域请求如下图所示:
filter实现跨域请求

相关代码(我知道肯定有人想要这段代码的):
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpServletRequest request = (HttpServletRequest) servletRequest;
// 指定允许其他域名访问
response.setHeader("Access-Control-Allow-Origin", "*");
// 响应类型
response.setHeader("Access-Control-Allow-Methods", "POST, GET, DELETE, OPTIONS, DELETE");
// 响应头设置
response.setHeader("Access-Control-Allow-Headers", "Content-Type, x-requested-with, X-Custom-Header, HaiYi-Access-Token");
//
if ("OPTIONS".equals(request.getMethod())){
response.setStatus(HttpStatus.SC_NO_CONTENT);
}
filterChain.doFilter(servletRequest, servletResponse);
}
另外struct2框架是基于filter开发的
servlet
http请求经过filter的过滤之后如果没有被拦截就会回掉到doget(),dopost()方法分别对应前端的get,post操作,如下图所示:

注意:因为对于java后端来说get和post没有任何区别,所以一般把get回调post去设计restful框架,这样设计的restful框架就能同时能被get和post调用
有一点要注意的是世面上的一些大众框架springmvc其实只是基于servlet开发的一个多例框架
session(cookie)
cookie和session类似于key value的一个map的数据结构,另外注意的是session一般也是key value的形式,浏览器第一次请求服务器时,服务器会生成一个sessionId,并返回给浏览器,这个sessionId会被保存在浏览器的会话cookie中,第二次访问的时候会把sessionid带上(也就是cookie).