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

上海闵行区官网qq群排名优化

上海闵行区官网,qq群排名优化,红酒企业网站模板,wordpress如何建目录目录 1.统一异常处理 2.统一记录日志 1.统一异常处理 在 HomeController 类中添加请求方法#xff08;服务器发生异常之后需要统一处理异常#xff0c;记录日志#xff0c;然后转到 500 页面#xff0c;需要人工处理重定向到 500 页面#xff0c;提前把 500 页面请求访问…目录 1.统一异常处理 2.统一记录日志 1.统一异常处理 在 HomeController 类中添加请求方法服务器发生异常之后需要统一处理异常记录日志然后转到 500 页面需要人工处理重定向到 500 页面提前把 500 页面请求访问配置 RequestMapping(path /error, method RequestMethod.GET)public String getErrorPage() {return /error/500;} 在 controller 类下新建 advice 包创建 ExceptionAdvice 类 添加注解 ControllerAdvice 统一处理异常此时这个组件会扫面所有的 Bean做一个限制 ControllerAdvice(annotations Controller.class)这个组件只去扫面带有 Controller 注解的 Bean添加所有方法处理所有错误情况添加注解 ExceptionHandler 表示这个方法处理所有异常的方法—— ExceptionHandler({Exception.class})通常参数为 Exception e, HttpServletRequest request, HttpServletResponse response注入日志并且把异常记录日志想要把异常非常详细的栈的信息记录遍历栈的信息得到的是数组每次遍历得到一条异常信息打印日志然后给浏览器响应重定向到错误页面这时候还需要判断这个请求是普通请求还是异步请求浏览器访问服务器可能是普通请求希望返回网页然后重定向到 500也可能是异步请求希望返回 JSON不可以返回到页面 HTML通过 request.getHeader(x-requested-with) 获取请求返回 String如果返回值等于 XMLHttpRequest则表示为异步请求这个请求是以 XML 的形式访问希望返回 XML只有异步请求才希望返回 XML普通请求返回 HTML然后响应字符串application/plain;charsetutf-8向浏览器返回普通字符串可以是 JSON 格式需要人为的将字符串转化为 JS 对象获取输出流输出JSON字符串如果是普通请求重定向到错误页面获取项目访问路径 /error 路径 package com.example.demo.controller.advice;import com.example.demo.util.CommunityUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter;//添加注解 ControllerAdvice 统一处理异常此时这个组件会扫面所有的 Bean //做一个限制 ControllerAdvice(annotations Controller.class)这个组件只去扫面带有 Controller 注解的 Bean ControllerAdvice(annotations Controller.class) public class ExceptionAdvice {private static final Logger logger LoggerFactory.getLogger(ExceptionAdvice.class);//添加所有方法处理所有错误情况添加注解 ExceptionHandler 表示这个方法处理所有异常的方法ExceptionHandler({Exception.class})public void handleException(Exception e, HttpServletRequest request,HttpServletResponse response) throws IOException {//注入日志并且把异常记录日志想要把异常非常详细的栈的信息记录// 遍历栈的信息得到的是数组每次遍历得到一条异常信息打印日志logger.error(服务器发生异常: e.getMessage());for (StackTraceElement element : e.getStackTrace()) {logger.error(element.toString());}//然后给浏览器响应重定向到错误页面//这时候还需要判断这个请求是普通请求还是异步请求浏览器访问服务器可能是普通请求希望返回网页然后重定向到 500// 也可能是异步请求希望返回 JSON不可以返回到页面 HTML//通过 request.getHeader(x-requested-with) 获取请求返回 String如果返回值等于 XMLHttpRequest则表示为异步请求// 这个请求是以 XML 的形式访问希望返回 XML只有异步请求才希望返回 XML普通请求返回 HTMLString xRequestedWith request.getHeader(x-requested-with);if (XMLHttpRequest.equals(xRequestedWith)) {// 然后响应字符串application/plain;charsetutf-8向浏览器返回普通字符串//可以是 JSON 格式需要人为的将字符串转化为 JS 对象response.setContentType(application/plain;charsetutf-8);//获取输出流输出JSON字符串如果是普通请求重定向到错误页面获取项目访问路径 /error 路径PrintWriter writer response.getWriter();writer.write(CommunityUtil.getJSONString(1, 服务器异常!));} else {response.sendRedirect(request.getContextPath() /error);}} }2.统一记录日志 可不可以利用控制器通知统一处理控制器通知在发生异常时可以统一处理而统一记录日志并不是发生异常才记录可不可以使用拦截器拦截器也是针对控制器做处理而记录日志并不是只有在控制器中记录目前我们对业务组件做日志记录使用传统方法把记录日志的内容封装到组件中在不同的业务组件service方法中调用比如在一开始记录日志在写也业务方法之前记录日志。这种方法也有弊端业务组件方法是处理业务但是在之前添加日志需求不是业务需求是系统需求所以在业务方法中耦合了系统需求是有弊端的例如现在系统需求发生变化不想在业务之前记录日志而是在之后记录日志改动比较大很麻烦解决问题的最好方法将记录日志系统需求单独实现——使用 AOP单独定义一个组件不和业务组件发生直接关系将业务组件通用逻辑封装在这个组件中 对于 AOP 的知识可以阅读之前学习的 AOP 博客Spring AOP-CSDN博客 在 pom.xml 添加依赖 !-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-aop/artifactId /dependency 对所有业务组件记录日志在业务组件一开始记录日志新建 aspect 包创建 ServiceLogAspect 类存放切面主键 添加注解 Component、Aspect实例化 Logger声明切点所有业务组件都去处理使用前置通知在业务组件一开始记录日志记录格式用户[1.2.3.4],在[xxx],访问了[com.example.demo.service.xxx()].用户 ip 通过 request 获取获取 requestRequestContextHolder.getRequestAttributes();拼接时间new Date然后实例化访问某个类某个方法类名 方法名给方法添加 JoinPoint 连接点参数连接点指代程序植入的目标方法最后再进行全部拼接 package com.example.demo.aspect;import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes;import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.Date;Component Aspect public class ServiceLogAspect {//实例化 Loggerprivate static final Logger logger LoggerFactory.getLogger(ServiceLogAspect.class);//声明切点所有业务组件都去处理Pointcut(execution(* com.example.demo.service.*.*(..)))public void pointcut() {}//使用前置通知在业务组件一开始记录日志Before(pointcut())public void before(JoinPoint joinPoint) {//记录格式用户[1.2.3.4],在[xxx],访问了[com.example.demo.service.xxx()].//用户 ip 通过 request 获取获取 requestRequestContextHolder.getRequestAttributes();ServletRequestAttributes attributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request attributes.getRequest();String ip request.getRemoteHost();//拼接时间new Date然后实例化String now new SimpleDateFormat(yyyy-MM-dd HH:mm:ss).format(new Date());//访问某个类某个方法类名 方法名给方法添加 JoinPoint 连接点参数连接点指代程序植入的目标方法String target joinPoint.getSignature().getDeclaringTypeName() . joinPoint.getSignature().getName();//全部拼接logger.info(String.format(用户[%s],在[%s],访问了[%s]., ip, now, target));} }
http://www.sadfv.cn/news/205134/

相关文章:

  • seo引擎搜索网站关键词年度网站信息化建设工作计划
  • 旅游网站模板库麻涌建设网站
  • 锦州滨海新区城市建设规划网站网站开发项目描述
  • 做哪一类的网站可以短时间变现平台推广引流怎么做
  • 风中有朵雨做的云电影网站深圳品牌网站制作多少钱
  • 宁波专业的网站建设团队中小企业网址
  • 如何做网站搬家北京WordPress爱好者
  • 仿网站被封怎么办外贸网站怎么推广
  • 做的网站百度上可以搜到吗如何用手机网站做淘宝客
  • 建设网站用哪个好网站设计中怎么显示链接内容
  • 上海网站建设 报价泉州免费网站制作
  • 杭州制作网站的公司织梦动漫网站模板
  • 湖北省住房建设部官方网站苏州网页设计app
  • 站酷网页版seo臻系统
  • IC 网站建设建设建材网站的目的
  • 做分类信息网站赚钱吗企业的网站建设需要做什么
  • 一款蛋糕食品类企业手机网站源码电商企业网站建设的一般要素有哪些6
  • 深圳哪个公司做网站好源码做微信电影网站
  • 印象网站建设律所网站方案
  • 湘潭网站建设 在线磐石网络怎么找电商卖自己的产品
  • 龙岗建设网站美丽南方的网站建设
  • photoshop画简单网站高新企业建设网站公司
  • 阿里绿网网站违规做网站横幅的图片多大
  • 著名的设计企业网站哪个餐饮店微网站做的有特色
  • 设计培训网站建设猎头
  • 有九类商标可以做网站名吗网站备案制作
  • 腾讯网站建设方案关于我们页面模板
  • 青州网站搭建微信公众号 做不了微网站吗
  • 南阳做做网站上海传媒公司李闪闪身价
  • 做手机网站要多少钱网页视频提取