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

网站风格指的是什么自己建的网站如何百度搜索

网站风格指的是什么,自己建的网站如何百度搜索,长沙公司制作网站费用多少,企业内部网站宣传方案小编在前文中向大家描述了Spring AOP的相关内容#xff1a;Spring AOP-CSDN博客感兴趣的各位老铁可查看一下#xff01;#xff01; 那么#xff0c;我们本文主要是代理搭建来实现一个Spring Boot统一功能处理模块了#xff0c;当然#xff0c;这个也是Spring AOP的实战环… 小编在前文中向大家描述了Spring AOP的相关内容Spring AOP-CSDN博客感兴趣的各位老铁可查看一下 那么我们本文主要是代理搭建来实现一个Spring Boot统一功能处理模块了当然这个也是Spring AOP的实战环节因此不知道Spring AOP是啥的铁汁请先看一下前篇博客Spring AOP-CSDN博客做一个简单了解在来研究本文内容 本文要实现的目标大概有3个 统一用户登录权限验证统一数据格式返回统一异常处理 用户登录权限校验 用户登录权限的发展从之前每个方法中自己验证用户登录权限到现在统一的用户登录验证处理它是一个逐渐完善和逐渐优化的过程。 最初的用户登录验证 RestController RequestMapping(/user) public class User1Controller {/*** 某方法1* param request* return*/RequestMapping(/m1)public Object method(HttpServletRequest request){//有session就获取没有不会创建HttpSession sessionrequest.getSession(false);if (session ! null session.getAttribute(userinfo) ! null){//说明已经登录业务处理return true;}else {//未登录return false;}}/*** 某方法2* param request* return*/RequestMapping(/m2)public Object method2(HttpServletRequest request){//有session就获取没有不会创建HttpSession sessionrequest.getSession(false);if (session ! null session.getAttribute(userinfo) ! null){//说明已经登录业务处理return true;}else {//未登录return false;}}/*** 其他方法*/ }从上述代码可以看出每个⽅法中都有相同的⽤户登录验证权限它的缺点是 每个⽅法中都要单独写⽤户登录验证的⽅法即使封装成公共⽅法也⼀样要传参调⽤和在⽅法中进⾏判断。添加控制器越多调⽤⽤户登录验证的⽅法也越多这样就增加了后期的修改成本和维护成本。这些⽤户登录验证的⽅法和接下来要实现的业务⼏何没有任何关联但每个⽅法中都要写⼀遍。 所以提供⼀个公共的 AOP ⽅法来进⾏统⼀的⽤户登录权限验证迫在眉睫 Spring AOP用户统一登录验证的问题 说到统一的用户登录验证我们想到的第一个方案是Spring AOP前置通知或者环绕通知来实现具体的实现代码如下 Aspect Component public class User1Aspect {//定义切点方法controller包下子孙包下所有类的所有方法Pointcut(execution(* com.example.demo.Controller..*.*(..)))public void pointcut(){//空方法}//前置方法Before(pointcut())public void doBefore(){}//环绕方法Around(pointcut)public Object doAround(ProceedingJoinPoint joinPoint){Object objnull;System.out.println(Around方法开始执行);try {///执行拦截方法objjoinPoint.proceed();} catch (Throwable e) {e.printStackTrace();}System.out.println(Around方法执行结束);return obj;}}如果要在以上 Spring AOP 的切⾯中实现⽤户登录权限效验的功能有以下两个问题 没办法获取到 HttpSession 对象。我们要对⼀部分⽅法进⾏拦截⽽另⼀部分⽅法不拦截如注册⽅法和登录⽅法是不拦截的这样的话排除⽅法的规则很难定义甚⾄没办法定义。 那么这个问题该如何解决呢 Spring拦截器 对于以上问题Spring中提供了具体的实现拦截器HandlerInterceptor拦截器的实现分为以下两个步骤 自定义拦截器实现HandlerInterceptor接口的preHandle执行具体方法之前的预处理方法将自定义拦截器加入WebMvcConfigurer的addInterceptors方法中 那么有了上述的两个步骤我们便可以自定义拦截器了 1.自定义拦截器 接下来使用代码来实现一个用户登录的权限校验自定义拦截器是一个普通类具体的实现代码如下 Component //注入Spring框架中 public class loginInterceptor implements HandlerInterceptor {//调用目标方法之前执行的方法//此方法返回Boolean类型的只若返回true表示拦截器验证成功继续走后续流程执行目标方法// 若返回false表示拦截器执行失败后续流程和目标方法都不要在执行了Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception{//用户登录判断业务HttpSession sessionrequest.getSession(false);if (session ! null session.getAttribute(session_userinfo) !null){//getAttribute用户的身份信息//用户已经登录return true;}// response.sendRedirect(https://www.baidu.com);//sendRedirect跳转//response.setStatus(401);//401没有权限response.setContentType(application/jsoncharsetutf8);//指定字符集为utf8// response.setCharacterEncoding(utf8);response.getWriter().println({\code\:-1,\msg\:\登录失败\,\data\:\\});//getWriter()拿到输出流//code状态码//msg报错信息//另一种方式使用ObjectMapper给这个对象里面设置属性然后再将JSON对象转化为字符串就OK了return false;} }2.将自定义拦截器加入到系统配置 将上一步中的自定义拦截器加入到系统配置信息中具体实现代码如下 Configuration public class WebMvcConfigurer implements org.springframework.web.servlet.config.annotation.WebMvcConfigurer {Autowiredprivate loginInterceptor loginInterceptor;//自定义拦截器Overridepublic void addInterceptors(InterceptorRegistry registry){registry.addInterceptor(loginInterceptor) //将自定义的拦截器添加到系统配置项中.addPathPatterns(/**) //拦截所有Url.excludePathPatterns(user/login)//排除url/user/login不拦截.excludePathPatterns(user/reg).excludePathPatterns(/image/**);//排除image文件夹下所有文件} }其中 addInterceptor表示需要拦截的URL“**”表示拦截任意方法也就是所有方法 excludePathPatterns表示需要排除的URL 说明以上的拦截规则可以拦截此次昂木中的使用的URL包括静态文件图片文件JS和CSS等文件 练习 登录注册页面不拦截其他页面都拦截当登录成功写入session之后拦截的页面可正常访问 统一异常处理 统一异常处理使用的是ControllerAdvice ExceptionHandler来实现的ControllerAdvice表示的是控制器通知类ExceptionHandler是异常处理器两个结合表示当出现异常的时候执行某个通知也就是执行某个方法事件。 创建一个异常处理类 ControllerAdvice //作用随着Spring的启动而启动接收Controller中的异常 public class MyExceptionAdvice {} 创建异常检测的类和处理业务方法 ControllerAdvice //作用随着Spring的启动而启动接收Controller中的异常 ResponseBody public class MyExceptionAdvice {//处理空指针异常ExceptionHandler(NullPointerException.class)// ExceptionHandler异常管理器 NullPointerException.class空指针异常public HashMapString ,Object doNullPointExcepyion(NullPointerException e){ //企业中不允许这样写//e异常种类HashMapString,Object resultnew HashMap();result.put(code,-300);//状态码result.put(msg,空指针e.getMessage());//状态描述信息result.put(data,null);//异常的详细信息return result;}//默认的异常处理当具体的异常匹配不到时会执行此方法ExceptionHandler(Exception.class)//Exception.class所有异常的父类public HashMapString,Object doException(Exception e){HashMapString,Object resultnew HashMap();result.put(code,-300);result.put(msg,Exception:e.getMessage());//e.getMessage()异常的详细信息result.put(data,null);return result;} }统一数据返回格式的实现强制性统一数据返回在返回数据之前进行数据重写 统一数据返回格式可以用ControllerAdvice ResponseBodyAdvice的方式实现 ControllerAdvice public class ResponseAdvice implements ResponseBodyAdvice {Autowiredprivate ObjectMapper objectMapper;//是否执行beforeBobyWrite方法true执行重写返回结果Overridepublic boolean supports(MethodParameter returnType,Class converterType){return true;}//返回数据之前进行数据重写OverrideSneakyThrowspublic Object beforeBodyWrite(Object body, MethodParameter returnType,MediaType selectedContentType, Class selectedConverterType,ServerHttpRequest request, ServerHttpResponse response) {//规定标准返回格式//HashMapString,Object--code msg data//判断是否为统一的数据格式if (body instanceof HashMap) {//判断body的类型是否为HashMapreturn body;}//重写返回结果让其返回一个统一的数据格式HashMapString,Object resultnew HashMap();result.put(code,200);result.put(data,body);result.put(msg, );//状态码的描述if (body instanceof String){//返回一个将对象转化为JSON String字符串return objectMapper.writeValueAsString(result);//一样的写法//return {\code\:200,\msg\:\,\data\:\body\};//在统一数据重写时单独处理String类型让其返回一个Spring字符串而非HashMap}return result;} }综合练习用户登录拦截器 实现注册和登录功能添加统一的错误处理ControllerAdvice添加登录拦截器 WebMvcConfigurer HandlerInterceptor用户登录之后能到欢迎页面未登录直接跳到登录页面添加统一的返回格式包含status,data,msg等字段 为什么需要统一数据返回格式 方便前端程序员更好的接收和解析后端接口返回的数据降低前端程序员和后端程序员的沟通成本按照某个格式实现就OK了因为所有接口都是这样返回的有利于项目统一数据的维护和修改有利于后端技术部门的统一规范的标准的指定不会出现稀奇古怪的内容………………
http://www.pierceye.com/news/874645/

相关文章:

  • 电脑搭建网站需要空间wordpress文件夹权限设置方法
  • 建设网站基础医疗网站建设比较好的
  • 建个网站视频教程小程序开发是前端还是后端
  • 广州分享网站建设网站速度查询
  • 做电商网站价钱传奇类网页游戏大全
  • 如何选择南京网站建设网站制作能赚多少钱
  • 一站式网站设计已有域名如何在花生壳网站做二级域名托管
  • 哪个网站可以接图纸做返利网站怎么做的
  • 旅游网站建设国内外现状辽阳专业建设网站公司
  • 免费视频模板网站wordpress不写代码
  • 设计网站公司 露 联湖南岚鸿小程序网站开发公司
  • 聊城网站设计seo公司重庆
  • 网站布局技术厦门网站建设680元
  • 深圳物流公司网站建e网怎么做效果图
  • 做营销网站公司建个个人网站一年多少钱
  • 阆中网站网站建设代理网络服务器
  • 企业网站新模式seo排名推广工具
  • 山东做网站三五个人网页设计作品简单
  • 福州网站建设软件网站做了301怎么查看跳转前网站
  • 网站开发竞品分析网站开发与规划
  • 香山红叶建设有限公司网站网络营销方式落后的表现
  • 合肥百姓网网站建设263云通信官方网站
  • 深圳建设网站seo 手机电商数据分析师
  • 网站内外链怎么做公司建设包括哪些方面
  • 织梦网站环境搭建电子邮件怎么注册
  • 企业营销类专业网站app设计尺寸规范
  • 奈曼旗建设局网站建设旅游门户网站
  • 网站设计一般会遇到哪些问题wordpress文章关闭缩略图
  • 优质东莞网站制作公司thinkphp网站源码下载
  • 公司网站做一下多少钱最吉利旺财的公司名字