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

网站做链接代码google chrome浏览器

网站做链接代码,google chrome浏览器,宁德seo推广,做团购网站的心得需求:后端需要提供一个文章发布的接口,接口中需要先对文章内容进行如下校验,校验通过后才能发布 1. 文章长度不能超过1万个字符 2. 不能有敏感词 3. 文章中图片需要合规 责任链相当于一个链条一样,链条上有很多节点,节…

需求:后端需要提供一个文章发布的接口,接口中需要先对文章内容进行如下校验,校验通过后才能发布

1. 文章长度不能超过1万个字符
2. 不能有敏感词
3. 文章中图片需要合规

责任链相当于一个链条一样,链条上有很多节点,节点与节点之间形成了一个单向的链表。

每个节点相当于一个处理步骤,一个任务过来后,会交给链条上第一个节点进行处理,第一个节点处理后再传递给下一个节点,下一个节点处理完成后,继续向后传递。

目前文章发布中的校验有下面3个步骤,每个步骤相当于责任链上一个节点,每个步骤对应一个类,如果要进行扩展,只需要添加一个类,然后调整下链表的顺序便可。



具体实现
1 pom.xml

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId>
</dependency>

2 pojo类,ArticlePublishRequest: 数据传输对象,封装了文章发布请求的数据。

import lombok.Data;@Data
public class ArticlePublishRequest {// 文章内容private String content;
}

3 IArticlePublishCheck: 定义文章发布校验的接口,包含校验和设置下一个校验器的方法

import com.example.demo_23.aaaaa.dto.ArticlePublishRequest;
public interface IArticlePublishCheck {/*** 对文章进行校验** @param req*/void check(ArticlePublishRequest req);/*** 设置下一个文章校验器,并返回下一个校验器** @param next* @return*/IArticlePublishCheck setNext(IArticlePublishCheck next);
}

4 AbstractCheck: 提供责任链模式的抽象实现,包含默认的校验流程和设置下一个校验器的逻辑

import com.example.demo_23.aaaaa.dto.ArticlePublishRequest;public abstract class AbstractCheck implements IArticlePublishCheck {private IArticlePublishCheck next;@Overridepublic void check(ArticlePublishRequest req) {//校验this.checkIn(req);//调用下一个校验器进行校验if (this.next != null) {this.next.check(req);}}/*** 子类实现** @param req*/protected abstract void checkIn(ArticlePublishRequest req);@Overridepublic IArticlePublishCheck setNext(IArticlePublishCheck next) {this.next = next;return this.next;}
}

5 校验具体实现类

  • ContentLengthCheck: 实现内容长度校验,确保文章内容长度在合理范围内。

  • ImageCheck: 实现图片合法性校验,确保文章中的图片是合法的(当前未实现具体逻辑)。

  • PublishCountCheck: 实现发布次数校验,限制用户每天发布文章的数量。

  • SensitiveWordsCheck: 实现敏感词校验,确保文章内容不包含敏感词汇。

import com.example.demo_23.aaaaa.dto.ArticlePublishRequest;
import org.apache.commons.lang3.StringUtils;/*** 内容长度校验*/
public class ContentLengthCheck extends AbstractCheck {@Overrideprotected void checkIn(ArticlePublishRequest req) {if (StringUtils.length(req.getContent()) < 1 || StringUtils.length(req.getContent()) > 10) {throw new RuntimeException("文章长度不能超过10000个字符");}}
}---------------------------------------------import com.example.demo_23.aaaaa.dto.ArticlePublishRequest;
/*** 图片合法性校验*/
public class ImageCheck extends AbstractCheck {@Overrideprotected void checkIn(ArticlePublishRequest req) {//校验图片是否合法?不合法则抛出异常boolean checked = true;if (!checked) {throw new RuntimeException("图片不合法");}}
}---------------------------------------------import com.example.demo_23.aaaaa.dto.ArticlePublishRequest;
import java.util.concurrent.atomic.AtomicInteger;/*** 发布次数校验器,每日限制5篇文章*/
public class PublishCountCheck extends AbstractCheck {AtomicInteger publishCount = new AtomicInteger(0);@Overrideprotected void checkIn(ArticlePublishRequest req) {if (publishCount.incrementAndGet() > 5) {//发布次数校验,比如每日只允许发布5篇文章throw new RuntimeException("今日发布已满,请明日继续分享!");}}
}---------------------------------------------import com.example.demo_23.aaaaa.dto.ArticlePublishRequest;
import java.util.Arrays;
import java.util.List;/*** 敏感词校验*/
public class SensitiveWordsCheck extends AbstractCheck {@Overrideprotected void checkIn(ArticlePublishRequest req) {//敏感词列表List<String> sensitiveWordsList = Arrays.asList("逼");//有敏感词则抛出异常for (String sw : sensitiveWordsList) {if (req.getContent().contains(sw)) {throw new RuntimeException("有敏感词:" + sw);}}}
}

6 ArticleCheckConfig: 配置类,负责创建和配置责任链中各个校验器,并设置它们之间的顺序。

import com.example.demo_23.aaaaa.article.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;@Configuration
public class ArticleCheckConfig {@Beanpublic ContentLengthCheck contentLengthCheck() {return new ContentLengthCheck();}@Beanpublic SensitiveWordsCheck sensitiveWordsCheck() {return new SensitiveWordsCheck();}@Beanpublic ImageCheck imageCheck() {return new ImageCheck();}@Beanpublic PublishCountCheck publishCountCheck() {return new PublishCountCheck();}@Beanpublic IArticlePublishCheck articlePublishCheck() {ContentLengthCheck firstCheck = this.contentLengthCheck();firstCheck.setNext(this.sensitiveWordsCheck()).setNext(this.imageCheck()).setNext(this.publishCountCheck());return firstCheck;}
}

7 ArticleController: 控制器类,处理文章发布请求,使用责任链进行校验。

import com.example.demo_23.aaaaa.article.IArticlePublishCheck;
import com.example.demo_23.aaaaa.dto.ArticlePublishRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;@RestController
public class ArticleController {@Autowiredprivate IArticlePublishCheck articlePublishCheck;/*** 发布文章,责任链版本实现,更容易扩展** @param req* @return*/@PostMapping("/article/publishNew")public Object publishNew(@RequestBody ArticlePublishRequest req) {try {this.articlePublishCheck.check(req);return "发布成功";} catch (RuntimeException e) {return "发布失败:" + e.getMessage();}}
}

http://www.mmbaike.com/news/143.html

相关文章:

  • 淘宝网站可以做seo吗浏览器大全网站
  • 如何做局域网网站建设app推广接单渠道
  • 北京 公司网站开发免费收录网站
  • 东莞网站建设制作公司排名seo优化效果
  • 科技类公司网站设计市场调研报告范文模板word
  • 中国电信黄页最新版seo独立站
  • 互联在线app开发网站网站优化及推广
  • 建筑工程完工证明格式优化网站推广教程整站
  • 网站免费建站的方法巩义网络推广公司
  • 免费做网站的软件5g影讯5g天线在线观看免费视频
  • wordpress加速网站插件如何做网站推广
  • 放单网站站长素材
  • 做搬运的话哪个网站好百度关键词seo优化
  • 网站设计建设 武汉推广赚佣金项目
  • 淄博营销网站建设提升神马seo关键词自然排名
  • 出格做网站怎么样seo教程网站
  • 课程网站开发关键词优化排名软件
  • 中英网站怎么做百度经验实用生活指南
  • 福州外网站建设西安seo优化推广
  • 新疆机票网站制作什么是seo标题优化
  • 做设计接外快在哪个网站在线网站分析工具
  • c 语言做网站网络外贸推广
  • 秦皇岛外贸网站建设seo企业推广案例
  • 网站建设策划案模版苏州seo关键词优化排名
  • 有哪些免费做电子名片的网站怎样创建网站平台
  • 建设一个网站的基本成本军事网站大全军事网
  • wordpress主题虚拟会员下载网站seo基础
  • 中英网站建立重庆seo全网营销
  • 深圳公司做年报网站seo搜狗
  • 做赌博网站推广赚佣金新手运营从哪开始学