通用异常处理方案总结
type
Post
status
Published
date
Nov 2, 2021
slug
summary
介绍SpringBoot项目中通用的统一异常处理方式
tags
项目方案
category
技术分享
icon
password

SpringMVC 异常机制

原则:MVC 三层出现的异常都通过 throws 抛出,最终由前端控制器 DispatcherServlet 捕获,交由异常处理器 HandlerExceptionResolver 处理
  • HandlerExceptionResolver 是异常处理器接口,实现这个接口可以自定义异常处理器
  • HTTP 异常可以在 web.xml 中配置自定义异常页面
    抵御 XSS 跨站脚本攻击
    type
    Post
    status
    Published
    date
    Oct 10, 2021
    slug
    summary
    在过滤器将请求类进行包装,并覆盖 http 参数处理方法方式实现参数转义的方式对可能的 XSS 脚本代码过滤
    tags
    项目方案
    category
    技术分享
    icon
    password

    XSS 攻击介绍

    XSS 就是一段可以被网页程序执行的恶意代码指令,通常是JavaScript,但实际上也可以包括 Java、 VBScript、ActiveX、 Flash 或者甚至是普通的HTML。
    攻击者通过 XSS 可以获得比较高的权限来执行一些操作,例如获取私密网页内容、会话和cookie等各种内容,对应用安全造成影响。
    • 例如用户在发帖或者注册的时候,在文本框中输入<script>alert('xss')</script>,这段代码如果不经过转义处理,而直接保存到数据库。将来视图层渲染HTML的时候,把这段代码输出到页面上,那么<script>标签的内容就会被执行。
    模板引擎:Thymeleaf
    type
    Post
    status
    Published
    date
    Sep 23, 2021
    slug
    summary
    tags
    模板引擎
    category
    技术分享
    icon
    password
    Thymeleaf 是 SpringBoot 官方推荐的模板引擎,和 Freemarker 相比:
    • 支持HTML原型格式,浏览器可以直接打开
    • 可以作为 HTML 片段、代码模板、右键模板等
    模板引擎:FreeMarker
    type
    Post
    status
    Published
    date
    Sep 16, 2021
    slug
    summary
    tags
    模板引擎
    category
    技术分享
    icon
    password
    模板引擎是服务端渲染,页面静态化技术之一,也是MVC架构中的V(视图层)技术,和JSP类似
    页面静态化:
    • 例如有的列表页访问量大,但数据变化频率不高,每一次访问都需要查询数据库动态获取数据进行展示,对数据库造成很大的访问压力
    • 页面静态化将原来动态网页(如通过ajax请求动态获取数据库中的数据并展示的网页)改为通过静态化技术生产的静态网页,这样用户在访问网页时,服务器直接响应静态html页面,而不进行动态查询数据库
    Go语言文件处理相关库使用
    type
    Post
    status
    Published
    date
    Aug 21, 2021
    slug
    summary
    tags
    Golang
    category
    技术分享
    icon
    password

    打开文件

    os.Create

    创建指定目录和名词的文件,如果已经存在则清空原有文件
    Maven 聚合工程实例
    type
    Post
    status
    Published
    date
    Jul 2, 2021
    slug
    summary
    Maven 父子聚合工程项目搭建实例
    tags
    Maven
    项目方案
    category
    技术分享
    icon
    password
    平日普通的 Java 工程目录结构中,常在单独的模块中开发
    Maven 聚合工程可以让多个普通的包拆分到多个模块中,模块之间相互依赖,也能分开部署
    在分布式微服务项目中使用的非常多

    操作步骤