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

中国芗城区城乡建设局网站wordpress 分类打不开

中国芗城区城乡建设局网站,wordpress 分类打不开,怎么学建设网站,学校网站建设先进个人荣誉一.拦截器快速入门 1.1了解拦截器 什么是拦截器#xff1a; 概念 #xff1a;拦截器是Spring框架提供的核⼼功能之⼀, 主要⽤来拦截⽤⼾的请求, 在指定⽅法前后, 根据业务需要执⾏预先设定的代码。 也就是说, 允许开发⼈员提前预定义⼀些逻辑, 在⽤⼾的请求响应前后执⾏. 也…一.拦截器快速入门 1.1了解拦截器 什么是拦截器 概念 拦截器是Spring框架提供的核⼼功能之⼀, 主要⽤来拦截⽤⼾的请求, 在指定⽅法前后, 根据业务需要执⾏预先设定的代码。 也就是说, 允许开发⼈员提前预定义⼀些逻辑, 在⽤⼾的请求响应前后执⾏. 也可以在⽤⼾请求前阻⽌其执⾏. 在拦截器当中开发⼈员可以在应⽤程序中做⼀些通⽤性的操作, ⽐如通过拦截器来拦截前端发来的请求, 判断Session中是否有登录⽤⼾的信息. 如果有就可以放⾏, 如果没有就进⾏拦截. 想象一下你去一个需要门禁的办公楼拦截器就像是那个门禁系统。当你请求想要进入办公楼访问某个资源时门禁系统拦截器会先检查你是否符合条件比如是否持有有效的门禁卡或是否已经通过身份验证。如果符合条件门禁系统会放行让你进入办公楼如果不符合条件门禁系统会阻止你进入并可能要求你进行其他操作比如登记或联系相关人员。 在SpringBoot中拦截器就是这样一种机制它可以在请求到达控制器之前或之后“拦截”请求并根据预定义的规则对请求进行处理。   拦截器在SpringBoot中主要有以下几个作用 身份验证和权限控制 就像门禁系统检查门禁卡一样拦截器可以检查用户的身份验证状态和权限。例如当用户尝试访问一个需要登录才能查看的页面时拦截器会检查用户是否已经登录。如果用户未登录拦截器可以重定向用户到登录页面或返回错误信息。日志记录 拦截器可以在请求到达控制器之前或之后记录日志信息。这对于监控和调试应用程序非常有用因为它可以帮助你了解请求是如何被处理的以及处理过程中发生了哪些事情。请求预处理和响应后处理 在请求到达控制器之前拦截器可以对请求进行预处理比如修改请求参数、设置请求头等。在控制器处理完请求并生成响应后拦截器还可以对响应进行后处理比如修改响应头、添加额外的数据到响应中等。异常处理 拦截器还可以捕获并处理请求处理过程中发生的异常。例如如果控制器在处理请求时抛出了异常拦截器可以捕获这个异常并根据异常类型进行相应的处理比如返回自定义的错误页面或错误信息。 1.2拦截器的基本使用 拦截器的使⽤步骤分为两步 定义拦截器 注册配置拦截器 1.⾃定义拦截器实现HandlerInterceptor接⼝并重写其所有⽅法 Slf4j Component public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponseresponse, Object handler) throws Exception {log.info(LoginInterceptor ⽬标⽅法执⾏前执⾏..);return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponseresponse, Object handler, ModelAndView modelAndView) throws Exception {log.info(LoginInterceptor ⽬标⽅法执⾏后执⾏);}Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex) throws Exception {log.info(LoginInterceptor 视图渲染完毕后执⾏最后执⾏);} } preHandle()⽅法⽬标⽅法执⾏前执⾏. 返回true: 继续执⾏后续操作; 返回false: 中断后续操作. postHandle()⽅法⽬标⽅法执⾏后执⾏ afterCompletion()⽅法视图渲染完毕后执⾏最后执⾏(后端开发现在⼏乎不涉及视图, 暂不了解) 2.注册配置拦截器实现WebMvcConfigurer接⼝并重写addInterceptors⽅法  Configuration public class WebConfig implements WebMvcConfigurer {//⾃定义的拦截器对象Autowiredprivate LoginInterceptor loginInterceptor;Overridepublic void addInterceptors(InterceptorRegistry registry) {//注册⾃定义拦截器对象registry.addInterceptor(loginInterceptor).addPathPatterns(/**);//设置拦截器拦截的请求路径 /** 表⽰拦截所有请求} }3.启动服务, 试试访问任意请求, 观察后端⽇志 可以看到preHandle ⽅法执⾏之后就放⾏了, 开始执⾏⽬标⽅法, ⽬标⽅法执⾏完成之后执⾏ postHandle和afterCompletion⽅法. 4.我们把拦截器中preHandle⽅法的返回值改为false, 再观察运⾏结果 可以看到, 拦截器拦截了请求, 没有进⾏响应. 1.2拦截器详解 拦截器的⼊⻔程序完成之后接下来我们来介绍拦截器的使⽤细节。拦截器的使⽤细节我们主要介绍 两个部分 拦截器的拦截路径配置 拦截器实现原理 拦截路径是指我们定义的这个拦截器, 对哪些请求⽣效. 我们在注册配置拦截器的时候, 通过 addPathPatterns() ⽅法指定要拦截哪些请求. 也可以通过 excludePathPatterns() 指定不拦截哪些请求. 上述代码中, 我们配置的是 /** , 表⽰拦截所有的请求. ⽐如⽤⼾登录校验, 我们希望可以对除了登录之外所有的路径⽣效。 import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; Configuration public class WebConfig implements WebMvcConfigurer {//⾃定义的拦截器对象Autowiredprivate LoginInterceptor loginInterceptor;Overridepublic void addInterceptors(InterceptorRegistry registry) {//注册⾃定义拦截器对象registry.addInterceptor(loginInterceptor).addPathPatterns(/**).excludePathPatterns(/user/login);//设置拦截器拦截的请求路径(/** 表⽰拦截所有请求)}} 在拦截器中除了可以设置 /** 拦截所有资源外还有⼀些常⻅拦截路径设置 以上拦截规则可以拦截此项⽬中的使⽤ URL包括静态⽂件(图⽚⽂件, JS 和 CSS 等⽂件) 1.3拦截器执行流程 正常的调⽤顺序: 有了拦截器之后会在调⽤ Controller 之前进⾏相应的业务处理执⾏的流程如下图 1.添加拦截器后, 执⾏Controller的⽅法之前, 请求会先被拦截器拦截住. 执⾏ preHandle() ⽅法 这个⽅法需要返回⼀个布尔类型的值. 如果返回true, 就表⽰放⾏本次操作, 继续访问controller中的 ⽅法. 如果返回false则不会放⾏(controller中的⽅法也不会执⾏). 2.controller当中的⽅法执⾏完毕后再回过来执⾏ postHandle() 这个⽅法以afterCompletion() ⽅法执⾏完毕之后最终给浏览器响应数据. 1.4登录校验 学习拦截器的基本操作之后接下来我们需要完成最后⼀步操作通过拦截器来完成图书管理系统中的登录校验功能. 1.定义拦截器 从session中获取⽤⼾信息, 如果session中不存在, 则返回false,并设置http状态码为401, 否则返回true. import com.example.demo.constant.Constants;import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Component;import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession; Slf4j Component public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponseresponse, Object handler) throws Exception {HttpSession session request.getSession(false);if (session ! null session.getAttribute(Constants.SESSION_USER_KEY) ! null) {return true;}response.setStatus(401);return false;} }http状态码401: Unauthorized Indicates that authentication is required and was either not provided or has failed. If the request already included authorization credentials, then the 401 status code indicates that those credentials were not accepted. 中⽂解释: 未经过认证. 指⽰⾝份验证是必需的, 没有提供⾝份验证或⾝份验证失败. 如果请求已经包含授权凭据那么401状态码表⽰不接受这些凭据 2.注册配置拦截器 import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; Configuration public class WebConfig implements WebMvcConfigurer {//⾃定义的拦截器对象Autowiredprivate LoginInterceptor loginInterceptor;Overridepublic void addInterceptors(InterceptorRegistry registry) {//注册⾃定义拦截器对象registry.addInterceptor(loginInterceptor).addPathPatterns(/**)//设置拦截器拦截的请求路径(/**表⽰拦截所有请求).excludePathPatterns(/user/login)//设置拦截器排除拦截的路径.excludePathPatterns(/**/*.js) //排除前端静态资源.excludePathPatterns(/**/*.css).excludePathPatterns(/**/*.png).excludePathPatterns(/**/*.html);} }3.删除之前的登录校验代码 RequestMapping(/getListByPage)public Result getListByPage(PageRequest pageRequest, HttpSession session) {log.info(获取图书列表, pageRequest:{}, pageRequest); // //判断⽤⼾是否登录 // if (session.getAttribute(Constants.SESSION_USER_KEY)null){ // return Result.unlogin(); // } // UserInfo userInfo (UserInfo) session.getAttribute(Constants.SESSION_USER_KEY); // if (userInfonull || userInfo.getId()0 || .equals(userInfo.getUserName())){ // return Result.unlogin(); // }//⽤⼾登录, 返回图书列表PageResultBookInfo pageResult bookService.getBookListByPage(pageRequest);log.info(获取图书列表222, pageRequest:{}, pageResult);return Result.success(pageResult);} 4运⾏程序, 通过Postman进⾏测试: 4.1查看图书列表 观察返回结果: h 也可以通过Fiddler抓包观察 4.2登录 4.3再次查看图书列表  数据进⾏了返回
http://www.hkea.cn/news/14556127/

相关文章:

  • 怎么用网站做word文件格式网站开发公司宣传语
  • 如何做网站报价如何做酒店网站设计
  • 布吉网站建设哪家效益快word模板网站
  • 做网站做推广有效果吗莱阳做网站
  • 用asp做网站企业馆展厅设计公司
  • 手术室专科建设网站建设信用中国网站
  • 网站建设是在商标哪个类别新乡百度关键词优化外包
  • 代做吧机械网站外贸pi是什么意思
  • 网站建设 英语词汇制作人英语
  • 哪个网站可以学做馒头wordpress后台504
  • 上海建设银行官方网站免费可以绑定域名网站空间
  • 北京响应式网站建设推荐wordpress document
  • ps做网站的时候分辨率是中国十大权威新闻媒体
  • 免费建网站哪个平台好小程序开发怎么做
  • 南京专业网站营销windows优化大师卸载不掉
  • 中山做网站的公司哪家好嘉定企业网站制作
  • 免费自助建站自己做自己的私人网站
  • 苏宁电器网站建设特点分析公司设计网站详情
  • 网站建设实训目的网站数据库连接失败
  • 如何做电子书下载网站鞍山 网站建设
  • 网站设计案例方案广州网站建设哪家好
  • 淘宝网站官网彩虹二级域名分发
  • 中国建设银行网站首页手机银行网站流量平台
  • 金融软件网站建设公司龙华营销型网站制作哪家好
  • 做网站包头免费网站设计什么价格
  • 儿童学做彩泥的网站江门网站建设外包
  • 阳澄湖大闸蟹网站建设怎样攻击网站
  • 上海网站建设备案号怎么恢复wordpress用户权限说明
  • 户户通行业网站私人承包小工程哪里有
  • 网站开发一般用什么软件有哪些重庆网站备案多久