当前位置: 首页 > news >正文

广州网站建设公司乐云seo598郑州优化公司有哪些

广州网站建设公司乐云seo598,郑州优化公司有哪些,wordpress快速发文插件,网站制作需要多少钱目录 前言 区别 联系 前言 过滤器(Filter)和拦截器(Interceptor)都是用于在Web应用程序中处理请求和响应的组件,但它们在实现方式和功能上有一些区别。 区别 1. 实现方式: - 过滤器是基于Servlet规范的组件,通过实现javax.servlet.Filt…

目录

前言

区别

联系


前言

  • 过滤器(Filter)和拦截器(Interceptor)都是用于在Web应用程序中处理请求和响应的组件,但它们在实现方式和功能上有一些区别。

区别

  • 1. 实现方式:

- 过滤器是基于Servlet规范的组件,通过实现javax.servlet.Filter接口来定义。过滤器可以在请求被处理之前和响应被发送到客户端之前进行操作。
- 拦截器是基于Java的反射机制,通过实现HandlerInterceptor接口来定义。拦截器可以在请求被处理之前、处理过程中和响应被发送到客户端之前进行操作。                

  • 2. 执行顺序:  

- 过滤器在Servlet容器中的执行顺序是由部署描述符(web.xml)中的配置顺序决定的,它们按照配置的顺序依次执行。
- 拦截器在Spring MVC框架中的执行顺序是由配置文件中的拦截器顺序决定的,它们按照配置的顺序依次执行。

具体参照文章:登录校验-Interceptor-详解_熵240的博客-CSDN博客

  • 3. 功能:

- 过滤器可以对请求进行预处理和后处理,例如修改请求参数、编码转换、请求拦截等。过滤器可以对所有的请求进行统一的处理。
- 拦截器可以对请求进行更加细粒度的控制和处理,例如权限验证、日志记录、性能监控等。拦截器可以根据具体的请求路径、请求方法、请求参数等进行处理。

  • 4. 作用范围:

- 过滤器是在Servlet容器中工作的,可以对所有的请求进行过滤处理,包括静态资源请求和动态请求。
- 拦截器是在Spring MVC框架中工作的只能对控制器(Controller)处理的请求进行拦截处理。

  • 5. 放行条件不一样

-过滤器(Filter)放行方式是执行doFilter()方法实现的

package com.example.tlias.Filter;import com.alibaba.fastjson.JSONObject;
import com.example.tlias.pojo.Result;
import com.example.tlias.utils.JwtUtils;
import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.util.StringUtils;import java.io.IOException;@Slf4j
//@WebFilter(urlPatterns = "/*")
public class LoginCheckFilter implements Filter {@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request = (HttpServletRequest) servletRequest;HttpServletResponse response = (HttpServletResponse) servletResponse;// 1.获取请求URL地址String url = request.getRequestURI().toString();log.info("获取到的URL地址为:{}", url);// 2.判断URL是否含有login路径,如果含有,则为登陆操作,放行if (url.contains("login")) {log.info("此请求为登陆操作,放行.......");filterChain.doFilter(request, response);return; //  todo 跳出过滤器}// todo 以下是对于不是登录操作的过滤// 3.获取请求头中的令牌(token)String token = request.getHeader("token");// 4.判断是否存在,如果不存在,返回错误结果(未登录)if (!StringUtils.hasLength(token)) {log.info("请求头token为空,返回为登录的信息");Result error = Result.error("NOT_LOGIN"); // 返回的错误信息通过接口文档与前端统一// todo 手动转换 将对象-->json格式数据===》可以使用阿里巴巴fastJson的工具包,在pom.xml配置文件中添加相关依赖// todo 控制类返回的对象会自动转换为JSON格式的字符串数据String noLogin = JSONObject.toJSONString(error);// 将数据写入响应对象response.getWriter().write(noLogin);return; // todo 跳出过滤器}// 5.解析token,如果解析失败,返回错误结果(未登录)try {JwtUtils.parseJWT(token);  // todo 如果解析失败方法就会报错} catch (Exception e) {  // token解析失败e.printStackTrace();log.info("解析令牌失败,返回未登录的错误信息");Result error = Result.error("NOT_LOGIN");String noLogin = JSONObject.toJSONString(error);response.getWriter().write(noLogin);return;}// 6.放行log.info("令牌合法,放行");filterChain.doFilter(request, response);}
}

 -拦截器(Interceptor)放行的方法是在preHandle()种返回true值

package com.example.tlias.Interceptor;import com.alibaba.fastjson.JSONObject;
import com.example.tlias.pojo.Result;
import com.example.tlias.utils.JwtUtils;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;@Component // 将该类标记为组件交给IOC容器管理
@Slf4j
public class LoginCheckInterceptor implements HandlerInterceptor {@Override  // todo 在目标资源方法(控制类中的方法)执行之前执行,返回true:放行;返回false:不放行public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {// 1.获取请求URL地址String url = request.getRequestURI().toString();log.info("获取到的URL地址为:{}", url);// 2.判断URL是否含有login路径,如果含有,则为登陆操作,放行if (url.contains("login")) {log.info("此请求为登陆操作,放行.......");return true; //  todo 跳出拦截器}// todo 以下是对于不是登录操作的过滤// 3.获取请求头中的令牌(token)String token = request.getHeader("token");// 4.判断是否存在,如果不存在,返回错误结果(未登录)if (!StringUtils.hasLength(token)) {log.info("请求头token为空,返回为登录的信息");Result error = Result.error("NOT_LOGIN"); // 返回的错误信息通过接口文档与前端统一// todo 手动转换 将对象-->json格式数据===》可以使用阿里巴巴fastJson的工具包,在pom.xml配置文件中添加相关依赖// todo 控制类返回的对象会自动转换为JSON格式的字符串数据String noLogin = JSONObject.toJSONString(error);// 将数据写入响应对象response.getWriter().write(noLogin);return false; // todo 跳出过滤器}// 5.解析token,如果解析失败,返回错误结果(未登录)try {JwtUtils.parseJWT(token);  // todo 如果解析失败方法就会报错} catch (Exception e) {  // token解析失败e.printStackTrace();log.info("解析令牌失败,返回未登录的错误信息");Result error = Result.error("NOT_LOGIN");String noLogin = JSONObject.toJSONString(error);response.getWriter().write(noLogin);return false;}// 6.放行log.info("令牌合法,放行");return true;}@Override // todo 在目标资源方法执行之后执行public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("postHandle()方法运行了");}@Override // todo 在视图渲染完毕后执行,最后执行public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("afterCompletion()发运行了");}
}

 

联系

  • 过滤器和拦截器都可以用于对请求进行处理,但它们的实现方式和功能不同。
  • 过滤器是基于Servlet规范的组件,可以对所有的请求进行统一的处理;拦截器是基于Spring MVC框架的组件,只能对控制器处理的请求进行处理。
  • 过滤器和拦截器都可以用于对请求进行预处理和后处理,但拦截器可以提供更加细粒度的控制和处理。
  • 过滤器和拦截器都可以在请求被处理之前和响应被发送到客户端之前进行操作,但它们的执行顺序不同。
http://www.dinnco.com/news/23296.html

相关文章:

  • 网站备案号含义关键词优化推广排名软件
  • 炫酷网站设计百度地图导航2021最新版
  • 苏州网站制作简述如何对网站进行推广
  • 哈尔滨做网站的oeminc网上开店如何推广自己的网店
  • 网站建设功能要求广州中小企业seo推广运营
  • 成都旅游景点排名前十名抚顺优化seo
  • 如何免费申请自己的网站seo网站关键词优化怎么做
  • 网站域名注册服务商广告推广怎么做
  • 欧美做瞹瞹嗳免费视频网站营销策略范文
  • wordpress 云相册seo网站优化推荐
  • 兑换网站建设天津seo排名费用
  • 大连做网站的企业河北网络科技有限公司
  • 云南房产网站建设整站seo排名
  • 西安南郊做网站seo技巧优化
  • 仿v电影 wordpressseo优化推荐
  • 做外贸用哪些网站女教师遭网课入侵视频大全
  • 建站模板免费国内搜索引擎排名
  • mvc5网站开发之美网络网站
  • 广州优俊网站制作公司竞价托管推广公司
  • 长春网站制作价格社区建站网站系统
  • 做app需要学什么编程上海网络营销seo
  • 入驻微信小程序多少钱陕西优化疫情防控措施
  • 沧州免费网站建设网络营销推广合作
  • 做布料的著名网站百度关键词优化快速排名软件
  • 英山县住房和城乡建设局网站seo优化的主要任务包括
  • 网站建设网站网站建设网站新浪体育nba
  • 哈尔滨模板网站搜索指数的数据来源
  • 百度网站验证怎么做营销网站建设免费
  • 网站建设物理架构营销目标分为三个方面
  • 做网站需要用什么开发软件seo搜索引擎优化薪酬