web过滤器,前后端同步异步交互,跨域问题,json等知识点

一.过滤器

(1)什么是过滤器

过滤器(Filter):是web服务器管理所有的web资源例如servlet,例如实现权限访问控制、过滤敏感词汇、压缩响应信息等。

(2)过滤器的作用

通过过滤器可以实现对服务器web资源的拦截,例如编码过滤器通过对web资源的过滤拦截可以实现对所有web资源的统一编码,从而减少代码冗余,增加开发效率。一个web资源可以经过多个过滤器,一个过滤器可以有多个web资源经过。

(3)过滤器的搭配

在Javaee项目中过滤器(Filter)是一个接口,该过滤器在一个项目包底下的
(1)首先在该Filter包下创建一个类实现Filter接口,重写里面的doFilter抽象方法,Filter里面的init()和destory()不用时可以不必重写。
(2)在doFilter()方法中设置相应需要编码的东西,然后离开过滤器,如下编码过滤器

 

(3)在web.xml中配置该过滤器,让那些servlet程序可以通过过滤器

(4)过滤器的适用场景

 过滤器适合在例如配置编码格式,进行权限验证等进入。

二.前后端交互发送请求(同步和异步请求)

(1)同步请求:

指同一时刻只能完成一件事情,在前后端交互指的是前端提交数据到后端在后端响应回前端时,前端的客户端该时刻只能同时进行一件事,例如:登录页面,在前端将账号响应回·后端时此时后端验证账号有无注册,然后响应回前端,前端此时验证有无账号通过后,再点击密码框此时后端响应会来的数据会覆盖客户端页面。

前端同步请求

 后端相应同步请求

 

(2)异步请求:

指同一时刻可以完成多件事情,在前后端交互指在前后端交互指的是前端提交数据到后端在后端响应回前端时,前端的客户端该时刻可以同时进行多件事后端响应回来的·数据·不会覆盖客户端页面,以登陆界面为例可以同时进行账号验证和密码输入。

如下:

相应前端代码,使用了axios对异步请求进行封装,普通html项目需要下载axios到js中与导入axios

相应后端代码

 

进行账号验证时后端相应回来的数据不会覆盖客户端的页面,并且可以·同时进行密码的输入,对客户端比较友好。

三.跨域问题

(1)什么是跨域

跨域是在异步请求中出现的问题,由于浏览器不允许不同服务器(只要服务器之间协议,关系域,端口有一个不同即称为跨域)之间进行交互,因此前后端异步交互时会出现跨域问题。

(2)为什么会出现跨域问题

浏览器认为不同服务器之间进行数据交互·是不安全的,例如如果在银行系统账号密码·登录界面·如果此时·点击了其他不明的界面·可能出现账号密码泄露,因此浏览器·为了安全·期间不允许不同服务器之间进行数据交互。

(3)为什么浏览器不允许·跨域还要进行跨域交互

例如同一家公司有许多不同的产品,为了访问这些不同的产品·就需要跨域访问。

(4)如何解决跨域问题

跨域问题本质是前端问题,但可以在后端解决,后端要通过过滤器·进行。

如下:

四.后端的json格式

(1)什么是json格式

json格式是为前后端交互规定的一种数据格式,后端响应的数据不一定是字符串·还可能是一个对象,一个集合等,为了·前端·能解析后端的数据,为此规定了·json格式。

(2)json格式

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring Boot框架中,解决跨域问题可以通过自定义过滤器来实现。下面是一个简单的示例: ```java @Component public class CorsFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; HttpServletRequest request = (HttpServletRequest) req; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, Content-Length, X-Requested-With"); if ("OPTIONS".equalsIgnoreCase(request.getMethod())) { response.setStatus(HttpServletResponse.SC_OK); } else { chain.doFilter(req, res); } } @Override public void init(FilterConfig filterConfig) {} @Override public void destroy() {} } ``` 在上面的代码中,我们创建了一个名为"CorsFilter"的过滤器。该过滤器实现了javax.servlet.Filter接口,并覆盖了doFilter方法,用于处理跨域请求。 在doFilter方法中,我们首先将ServletResponse类型的res转换为HttpServletResponse类型的response,将ServletRequest类型的req转换为HttpServletRequest类型的request。然后,我们设置了Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Max-Age和Access-Control-Allow-Headers等响应头信息,以允许跨域请求。 最后,我们判断当前请求是否为OPTIONS请求,如果是,我们设置响应状态码为HttpServletResponse.SC_OK,否则我们继续执行过滤器链中的下一个过滤器。 在上面的示例中,我们将"Access-Control-Allow-Origin"设置为"*",表示接受来自任何域名的跨域请求。如果你希望限制跨域请求来源,可以将该值设置为具体的域名。 然后,我们将"Access-Control-Allow-Methods"设置为"POST, GET, OPTIONS, DELETE, PUT",表示接受这些HTTP方法的跨域请求。如果你希望限制跨域请求使用的HTTP方法,可以将该值设置为具体的HTTP方法。 最后,我们设置了"Access-Control-Allow-Headers",表示接受这些自定义请求头的跨域请求。如果你希望限制跨域请求使用的自定义请求头,可以将该值设置为具体的请求头。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值