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

网站可以做库存吗农村做网站开发

网站可以做库存吗,农村做网站开发,昆明房产信息网,国外网站平台有哪些一、登录验证 登录验证通过拦截器实现#xff0c;拦截器就是在用户访问服务器时#xff0c;预先拦截检查一下用户的访问请求。 没有拦截器时#xff0c;用户访问服务器的流程是#xff1a;用户–controller–service–Mapper。有拦截器时#xff0c;用户访问…一、登录验证 登录验证通过拦截器实现拦截器就是在用户访问服务器时预先拦截检查一下用户的访问请求。 没有拦截器时用户访问服务器的流程是用户–controller–service–Mapper。有拦截器时用户访问服务器流程是:用户–拦截器–controller–service–Mapper。 拦截器起到了预先帮助Controller层检查请求是否合规的作用让Controller层的代码更加专注于核心的业务逻辑。 登录验证就是拦截器的一种应用。在请求没Controller层处理前先判断发出请求的用户是否是登录状态。 创建拦截器类 拦截器类要实现拦截器接口HanderInterCeptor重写里面的preHandle方法这个preHandle方法就是拦截器在拦截到http请求后做的事情。 返回值是Boolean类型返回true代表通过拦截继续向深层代码执行返回false代表请求不合规被拦截了直接返回响应。 Component public class LoginInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {HttpSession sessionrequest.getSession(false);if(session!null session.getAttribute(userinfo)!null){return true;}return false;} }配置拦截器拦截的url 重新创建一个配置类并且这个类要加上Configuration注释交给Spring容器托管。继承WebMvcConfigurer接口并且重写addInterceptor方法 参数InterceptorRegistry就是拦截器的注册列表要将拦截器添加到列表中拦截器才能在url访问时候调用。registry的addInterceptor方法就是将传入的拦截器对象注册加入拦截器列addPathPatterns方法就是添加拦截器的拦截路径/※代表这一级的所有路径/** 代表所有的多级路径。excludePathPatterns方法就是在已添加的路径中剔除路径 Configuration public class LoginConfiguration implements WebMvcConfigurer {Autowiredprivate LoginInterceptor interceptor;Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(interceptor).addPathPatterns(/**).excludePathPatterns(/image/**).excludePathPatterns(/sayhi);} } 拦截器的工作原理 为了理解拦截器源码实现首先要知道一件事一个http请求访问到项目项目进行处理的时候是有一个调度器DispatcherServlet来调度程序执行的先后顺序的.这个调度器是SpringMVC框架实现的。 当spring boot项目启动后控制台没有DispatcherServlet启动的日志 但是当首个http请求发出后DispatcherServlet就会被初始化 调度器在收到http请求后的首先就会执行拦截器列表中的拦截器对象的方法只有列表中的所有方法都返回true后拦截器才会调度深层代码继续执行。有一个返回false都会直接返回响应。 二、统一异常处理 当前端传入的某些特殊数据时可能会导致后端程序在执行时抛出异常如果不对这个异常做出处理后端会直接返回500的错误页面破坏前后端交互的正常进行异常处理的作用就是就算后端抛出了异常响应也要按照正确格式返回只是在返回的时候说明后端发生了错误。 自定义异常处理类 这个类要用ControllerAdvice和ResponseBody修饰 类内的方法要指定是针对哪个异常进行处理使用ExceptionHandeler注解指定异常注解参数是异常类的class对象 处理方法的返回值就是响应的body返回值要将按正常格式返回 ControllerAdvice ResponseBody public class MyExceptionController {ExceptionHandler(Exception.class)public HashMapString,Object handException(Exception e){HashMapString,Object mapnew HashMap();map.put(data,e.getMessage());return map;} } 上面的代码指定的异常类的class是所有异常的父类Exception,这样指定是起到一个保底的作用因为异常是不可预知的你在写代码的时候并不知道代码会抛出什么异常针对特定异常的处理是极少的直接使用父类异常接受可以兜底保证异常抛出时会被正确的处理。 抛出异常时处理方法的匹配原则是先匹配对应异常的处理方法如果没有才会匹配父类异常的处理方法。 三、统一数据格式 要定义一个格式处理类使用ControllerAdvice类修饰然后这个类要继承ResponseBodyAdvice接口重写supports方法和beforeBodyWrite方法 Support方法的返回值就是设置是否要调用beforeBodyWrite方法的true表示要调用false表示不调用 beforeBodyWrite就是修改body的数据格式的方法可以根据自带的object参数body获取判断参数格式是否符合要求。用instanceof方法判断Object是否是约定要返回的对象类型 ControllerAdvice public class ResponseAdvice implements ResponseBodyAdvice {Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return true;}Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {if(body instanceof HashMap){//格式正确return body;}HashMapString,Object mapnew HashMap();map.put(code,1);map.put(data,body);return map;} }注意如果body是String类型的数据将这个hashMap最终转换成json格式的时候会报错。 原因就是在hashmap转换成json字符串的时候会判断Value的类型如果HashMap中的value是Object并且原类型是String就是使用的StringHttpMessageConverter进行转换,这个转换就会出错。 解决办法就是在统一格式转换方法里将body为String的HashMap直接转换成Json格式字符串 ControllerAdvice public class ResponseAdvice implements ResponseBodyAdvice {Overridepublic boolean supports(MethodParameter returnType, Class converterType) {return true;}Overridepublic Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) {if(body instanceof HashMap){//格式正确return body;}HashMapString,Object mapnew HashMap();map.put(code,1);map.put(data,body);//判断是否是Stringif(body instanceof String){ObjectMapper objectMappernew ObjectMapper();String result null;try {result objectMapper.writeValueAsString(map);} catch (JsonProcessingException e) {e.printStackTrace();}return result;}return map;} }
http://www.pierceye.com/news/713429/

相关文章:

  • 做网站学的是代码吗机器封所有端口 不支持做网站
  • 类似于美团的网站开发两学一做网站专栏怎么设置
  • 天津seo网站管理千川推广官网
  • 技术支持 光速东莞网站建设企业信息免费查询系统
  • 网站设计主流尺寸weui wordpress模板
  • 汕头市网站建设商机互联网站建设
  • 口碑好的网站建设苏州园区做网站公司
  • 网站互联网设计图风格网站服务器异常是什么意思
  • 有哪些好的做兼职网站有哪些免费做ppt的网站
  • 学生成绩管理系统网站建设上海公共招聘网12333官网
  • 邵东做网站的公司wordpress修改文章字体颜色
  • 那个网站百度收录快天河高端网站建设
  • 网站建设 客户拜访wordpress设置新页面
  • 做百度推广送的网站网站建设中gif
  • 网站风格介绍wordpress怎么给产品编号
  • 站长聚集地深圳网络提速优化服务包
  • 西安外贸网站建设公司网站域名过期后续费多长时间生效
  • 网站制作资质2017建设厅网站
  • 网站系统开发毕业设计哈尔滨seo优化软件
  • 南通企业网站网站制作的书籍
  • 长沙网站收录怎么网站能找人做装修事
  • 鞍山网站制作谁家好2021没封的网站有人分享吗
  • 网站建设公司net2006iis虚拟网站
  • 有哪些竞价网站wordpress手机端网站模板下载
  • 浙江建设厅网站施工员报名莱芜庞允盟
  • 网站建设 销售 知乎云南网站设计外包
  • 网站建设怎么学习phpcms门户网站
  • 佛山营销型网站定制三站合一网站建设方案
  • 广州市哪有做网站的查找全国免费网站建设
  • 江门seo网站推广跳动爱心代码html教程