文章保存及删除的拦截

当在网站管理后台-内容管理中,对文章进行保存操作时,拦截保存前,要保存的 News、NewsData 的数据,对其进行处理,处理完后在进行保存。 ## 创建一个演示的插件 1. 创建一个包 com.xnx3.wangmarket.plugin.newsDemo 1. 创建一个类 com.xnx3.wangmarket.plugin.newsDemo.Plugin 1. 实现一个接口 com.xnx3.wangmarket.admin.pluginManage.interfaces.NewsInterface 1. 实现接口的方法,就可以将文章保存进数据库的前一刻,对文章数据进行更改处理;又或者当文章删除时,会触发某个方法 Plugin.java的代码: ```` package com.xnx3.wangmarket.plugin.newsDemo; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.xnx3.wangmarket.admin.entity.News; import com.xnx3.wangmarket.admin.entity.NewsData; import com.xnx3.wangmarket.admin.pluginManage.interfaces.NewsInterface; /** * 演示文章保存、删除的拦截 * @author 管雷鸣 * */ public class Plugin implements NewsInterface{ /** * 拦截 News 进行预处理。这里是在保存入数据库之前拦截下来,进行处理,处理完后将其存入数据库 * 当有以下动作时会进行拦截,触发此方法: *
    *
  • 内容管理中,新增文章,点击保存时
  • *
  • 内容管理中,编辑文章,点击保存时
  • *
  • 内容管理中,修改文章的发布时间
  • *
* @param news 要处理的 {@link News} * @return 已处理过的 news */ @Override public News interceptNews(HttpServletRequest request, HttpServletResponse response, News news) { System.out.println("这里拦截到的保存的文章标题是:"+news.getTitle()); return news; } /** * 拦截 NewsData 进行预处理。这里是在保存入数据库之前拦截下来,进行处理,处理完后将其存入数据库 * 当有以下动作时会进行拦截,触发此方法: *
    *
  • 内容管理中,新增文章,点击保存时
  • *
  • 内容管理中,编辑文章,点击保存时
  • *
* @param newsData 要处理的 {@link NewsData} * @return 已处理过的 newsData */ @Override public NewsData interceptNewsData(HttpServletRequest request, HttpServletResponse response, NewsData newsData) { return newsData; } /** * {@link News} 文章删除时会触发此方法。当文章点击删除后,在文章删除成功之后,会调用此方法 * 当有以下动作时会进行拦截,触发此方法: *
    *
  • 内容管理中,文章列表,点击某篇文章进行删除时
  • *
* @param news 被删除的文章 */ @Override public void newsDelete(HttpServletRequest request, HttpServletResponse response, News news) { System.out.println("删除的文章为:"+news.getTitle()); } } ```` ###### 注意事项 1. 创建的类必须要在 com.xnx3.wangmarket.plugin 这个包之下,不然扫描不到。 2. 必须实现上面提到的 NewsInterface 这个接口 3. 类的名字随便。 4. 如果有多个插件都实现了这个接口,并进行了操作,他们是共同存在且生效的。 因为这个demo演示,不需要在管理后台提供进入的入口,所以 @PluginRegister 这个就省掉了 ## 取消拦截规则 若想取消某个文章保存前的拦截规则,只需要将其实现这个接口的类删掉即可!