前言

与前面也类似,注意将添加改成发布公告即可,编辑改成查看详情,已经发布的公告只能查看详情或删除,不能进行修改。

完整版本已开发完毕,并开源,见该篇文章
https://blog.csdn.net/weixin_39615182/article/details/115458248

功能实现

Notice.java中createDate字段,需要加上对日期格式化的注解

 @DateTimeFormat(pattern = "yyyy-MM-dd")//前台向后台传日期的接收模型@JSONField(format="yyyy-MM-dd")//对返回的时间对象用json格式化时间private Date createDate;

dao层实现
在NoticeMapper中增加几个方法

 /*** 查询公告信息*/List<Notice> queryNoticeAll(@Param("content") String content);/*** 公告删除*/void deleteNoticeByIds(List<Integer> id);/*** 根据id查询详细查询*/Notice queryNoticeById(Integer id);

对应NoticeMapper.xml,底部新增

<!--查询所有的公告信息--><select id="queryNoticeAll" resultType="com.yanzhen.po.Notice"  parameterType="String">select * from notice<where><if test="content!=null and content!=''">and content like '%${content}%'</if></where></select><!--根据id查询公告信息--><select id="queryNoticeById" resultMap="BaseResultMap" parameterType="int">select * from notice where id=#{id}</select><!--删除--><delete id="deleteNoticeByIds" parameterType="list">delete from notice where id in<foreach collection="list" item="id" open="(" close=")" separator="," >#{id}</foreach></delete>

service层
新建NoticeService.java

package com.yx.service;import com.github.pagehelper.PageInfo;
import com.yx.entity.Notice;import java.util.List;public interface NoticeService {//查询所有公告PageInfo<Notice> queryNoticeAll(String content, int page, int limit);//添加公告void insertNoticeInfo(Notice notice);//查询根据idNotice queryNoticeById(Integer id);//删除void deleteNoticeByIds(List<String> ids);
}

NoticeServiceImpl.java

package com.yx.service.impl;import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.yx.dao.NoticeMapper;
import com.yx.entity.Notice;
import com.yx.service.NoticeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.util.ArrayList;
import java.util.List;@Service("noticeService")
public class NoticeServiceImpl implements NoticeService {@Autowiredprivate NoticeMapper noticeMapper;@Overridepublic PageInfo<Notice> queryNoticeAll(String content, int page, int limit) {PageHelper.startPage(page,limit);List<Notice> list=noticeMapper.queryNoticeAll(content);PageInfo<Notice> pageInfo=new PageInfo<>(list);return pageInfo;}@Overridepublic void insertNoticeInfo(Notice notice) {noticeMapper.insert(notice);}@Overridepublic Notice queryNoticeById(Integer id) {return noticeMapper.queryNoticeById(id);}@Overridepublic void deleteNoticeByIds(List<String> ids) {List<Integer> list=new ArrayList<>();for(String id:ids){list.add(Integer.valueOf(id));}noticeMapper.deleteNoticeByIds(list);}
}

Controller层
NoticeController.java

package com.yx.controller;import com.github.pagehelper.PageInfo;
import com.yx.entity.Notice;
import com.yx.service.NoticeService;
import com.yx.util.DataInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;import java.util.Arrays;
import java.util.Date;
import java.util.List;@Controller
public class NoticeController {@Autowiredprivate NoticeService noticeService;@GetMapping("/noticeIndex")public String  noticeIndex(){return "notice/noticeIndex";}@GetMapping("/noticeIndex2")public String  noticeIndex2(){return "notice/noticeIndex2";}//发布公告页面跳转@GetMapping("/addNotice")public String addNotice(){return "notice/addNotice";}//详细转@GetMapping("/queryNotice")public String queryNoticeById(Integer id, Model model){//根据id查询公告详细信息Notice notice=noticeService.queryNoticeById(id);model.addAttribute("info",notice);return "notice/queryNotice";}/*** 查询所有的公告信息*/@RequestMapping("/noticeAll")@ResponseBodypublic DataInfo noticeAll(String content, @RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "15")Integer limit){PageInfo<Notice> pageInfo= noticeService.queryNoticeAll(content,page,limit);return DataInfo.ok("成功",pageInfo.getTotal(),pageInfo.getList());}/*** 公告发布提交方法*/@ResponseBody@RequestMapping("/addNoticeSubmit")public DataInfo addNoticeSubmit(Notice notice){//设置进入notice.setAuthor(1);notice.setCreateDate(new Date());noticeService.insertNoticeInfo(notice);return DataInfo.ok();}/*** 根据ids删除公告信息*/@ResponseBody@RequestMapping("/deleteNoticeByIds")public DataInfo deleteNoticeByIds(String ids){List list= Arrays.asList(ids.split(","));noticeService.deleteNoticeByIds(list);return DataInfo.ok();}
}

然后是对应的jsp
addNotice.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%String path=request.getContextPath();String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head><meta charset="utf-8"><title>layui</title><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><link rel="stylesheet" href="<%=basePath%>lib/layui-v2.5.5/css/layui.css" media="all"><link rel="stylesheet" href="<%=basePath%>css/public.css" media="all"><style>body {background-color: #ffffff;}</style>
</head>
<body>
<div class="layui-form layuimini-form"><div class="layui-form-item"><label class="layui-form-label required">公告内容</label><div class="layui-input-block"><textarea name="content" class="layui-textarea" placeholder="请输入公告内容信息"></textarea></div></div><div class="layui-form-item"><div class="layui-input-block"><button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">发布公告</button></div></div>
</div>
<script src="<%=basePath%>lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script>layui.use(['form'], function () {var form = layui.form,layer = layui.layer,$ = layui.$;//监听提交form.on('submit(saveBtn)', function (data) {var datas=data.field;//form单中的数据信息//向后台发送数据提交添加$.ajax({url:"addNoticeSubmit",type:"POST",data:datas,success:function(result){if(result.code==0){//如果成功layer.msg('发布成功',{icon:6,time:500},function(){parent.window.location.reload();var iframeIndex = parent.layer.getFrameIndex(window.name);parent.layer.close(iframeIndex);})}else{layer.msg("发布失败");}}})return false;});});</script>
</body>
</html>

noticeIndex.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%String path=request.getContextPath();String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>layui</title><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><link rel="stylesheet" href="<%=basePath%>lib/layui-v2.5.5/css/layui.css" media="all"><link rel="stylesheet" href="<%=basePath%>css/public.css" media="all">
</head>
<body>
<div class="layuimini-container"><div class="layuimini-main"><div class="demoTable">内容关键字:<div class="layui-inline"><input class="layui-input" name="content" id="content" autocomplete="off"></div><button class="layui-btn" data-type="reload">搜索</button></div><script type="text/html" id="toolbarDemo"><div class="layui-btn-container"><button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 发布公告 </button><button class="layui-btn layui-btn-sm layui-btn-danger data-delete-btn" lay-event="delete"> 删除 </button></div></script><table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter"></table><script type="text/html" id="currentTableBar"><a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="query">查询详情</a><a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a></script></div>
</div>
<script src="<%=basePath%>lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script>layui.use(['form', 'table'], function () {var $ = layui.jquery,form = layui.form,table = layui.table;table.render({elem: '#currentTableId',url: '<%=basePath%>noticeAll',//查询类型数据toolbar: '#toolbarDemo',defaultToolbar: ['filter', 'exports', 'print', {title: '提示',layEvent: 'LAYTABLE_TIPS',icon: 'layui-icon-tips'}],cols: [[{type: "checkbox", width: 50},{field: 'id', width: 100, title: 'ID', sort: true},{templet:"<div>{{d.content.substring(0,15)}}....</div>", width: 180, title: '公告内容'},{templet:"<div>{{layui.util.toDateString(d.createDate,'yyyy-MM-dd HH:mm:ss' )}}</div>", width: 280, title: '发布时间'},{field: 'author', width: 100, title: '发布人'},{title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"}]],limits: [10, 15, 20, 25, 50, 100],limit: 15,page: true,skin: 'line',id:'testReload'});var $ = layui.$, active = {reload: function(){var content = $('#content').val();//执行重载table.reload('testReload', {page: {curr: 1 //重新从第 1 页开始},where: {content: content}}, 'data');}};$('.demoTable .layui-btn').on('click', function(){var type = $(this).data('type');active[type] ? active[type].call(this) : '';});/*** tool操作栏监听事件*/table.on('tool(currentTableFilter)', function (obj) {var data=obj.data;if (obj.event === 'query') {  // 监听添加操作var index = layer.open({title: '公告详细',type: 2,shade: 0.2,maxmin:true,shadeClose: true,area: ['60%', '60%'],content: '<%=basePath%>queryNotice?id='+data.id,});$(window).on("resize", function () {layer.full(index);});} else if (obj.event === 'delete') {  // 监听删除操作layer.confirm('真的删除行么', function (index) {//调用删除功能deleteInfoByIds(data.id,index);layer.close(index);});}});//监听表格复选框选择table.on('checkbox(currentTableFilter)', function (obj) {console.log(obj)});/*** 获取选中记录的id信息*/function getCheackId(data){var arr=new Array();for(var i=0;i<data.length;i++){arr.push(data[i].id);}//拼接idreturn arr.join(",");};/*** 提交删除功能*/function deleteInfoByIds(ids ,index){//向后台发送请求$.ajax({url: "deleteNoticeByIds",type: "POST",data: {ids: ids},success: function (result) {if (result.code == 0) {//如果成功layer.msg('删除成功', {icon: 6,time: 500}, function () {parent.window.location.reload();var iframeIndex = parent.layer.getFrameIndex(window.name);parent.layer.close(iframeIndex);});} else {layer.msg("删除失败");}}})};/*** toolbar监听事件*/table.on('toolbar(currentTableFilter)', function (obj) {if (obj.event === 'add') {  // 监听添加操作var index = layer.open({title: '发布公告',type: 2,shade: 0.2,maxmin:true,shadeClose: true,area: ['60%', '60%'],content: '<%=basePath%>addNotice',});$(window).on("resize", function () {layer.full(index);});} else if (obj.event === 'delete') {/*1、提示内容,必须删除大于0条2、获取要删除记录的id信息3、提交删除功能 ajax*///获取选中的记录信息var checkStatus=table.checkStatus(obj.config.id);var data=checkStatus.data;if(data.length==0){//如果没有选中信息layer.msg("请选择要删除的记录信息");}else{//获取记录信息的id集合var ids=getCheackId(data);layer.confirm('真的删除行么', function (index) {//调用删除功能deleteInfoByIds(ids,index);layer.close(index);});}}});});
</script></body>
</html>

queryNotice.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ page isELIgnored="false" %><%String path=request.getContextPath();String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><html>
<head><meta charset="utf-8"><title>layui</title><meta name="renderer" content="webkit"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"><link rel="stylesheet" href="<%=basePath%>lib/layui-v2.5.5/css/layui.css" media="all"><link rel="stylesheet" href="<%=basePath%>css/public.css" media="all"><style>body {background-color: #ffffff;}</style>
</head>
<body>
<div class="layui-form layuimini-form"><div class="layui-form-item"><label class="layui-form-label required">公告信息</label><div class="layui-input-block">${info.content}</div></div><div class="layui-form-item layui-form-text"><label class="layui-form-label">发布人</label><div class="layui-input-block">${info.author}</div></div><div class="layui-form-item layui-form-text"><label class="layui-form-label">发布时间</label><div class="layui-input-block"><fmt:formatDate value="${info.createDate}" pattern="yyyy-MM-dd"></fmt:formatDate></div></div></div>
<script src="<%=basePath%>lib/layui-v2.5.5/layui.js" charset="utf-8"></script></body>
</html>

到数据库中加一条数据

运行Tomcat






框架提供的显示/隐藏功能可以,可隐藏ID


所有功能测试通过

基于SSM+Layui的图书管理系统(7)---公告管理功能开发相关推荐

  1. 基于SSM+Layui的图书管理系统教程(1)---准备工作

    目录 前言 一.数据库导入 二.创建Maven项目 三.基本环境搭建 前言 准备工作分三步:数据库导入.创建maven项目.基本环境搭建 项目技术栈如下 没有弄过分页的,可以先实现下分页 链接:htt ...

  2. 基于SSM+Layui的图书管理系统(附源码+数据库)

    目录 前言 一.以管理员身份登录展示 二.以读者身份登录展示 三.源码+数据库 前言 本人后端练手项目,该系统的技术栈如下: 注意:源码已经开源至Gitee,链接在文末 一.以管理员身份登录展示 1. ...

  3. 计算机代码设计-基于ssm的员工工资管理系统-人事工资管理系统设计-企业工资管理系统代码

    计算机代码设计-基于ssm的员工工资管理系统-人事工资管理系统设计-企业工资管理系统代码 注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 后台:SSM(Spr ...

  4. 基于SSM实现的图书管理系统-JAVA【数据库设计、源码、开题报告】

    1绪论 1.1项目研究的背景 随着计算机技术的飞速发展,计算机在企业管理中应用的普及,利用计算机实现图书信息的管理势在必行.目前图书管理的借阅工作部分大多数还是手工管理,工作效率很低,并且不能及时了解 ...

  5. 【JAVA项目实战】【图书管理系统】书籍管理功能【Servlet】+【JSP】+【MySql】+【Ajax】

  6. 基于SSM实现的图书借阅管理系统

    <基于SSM实现的图书管理系统> 该项目采用的技术实现如下: 后台框架:SSM(Spring.SpringMVC.MyBatis) UI界面:BootStrap.jQuery 数据库:My ...

  7. 基于SSM+Mysql的房屋租赁管理系统

    一.基于SSM+Mysql的房屋租赁管理系统 1.具有角色功能[管理员.租户] 管理员 房源信息管理.租赁合同信息.申请列表.报障模块(处理报障).租金信息(收租管理).我的日程管理.账户管理: 租户 ...

  8. 基于ssm残疾人公共服务管理系统的设计与实现信息检索论文

    摘要:随着互联网技术和国内残疾人公共服务行业持续高速地发展,管理员为了能够更加方便地管理残疾人公共服务,残疾人公共服务管理系统被开发出来的目的是为了能够更加方便管理残疾人公共服务. 本系统利用开源框架 ...

  9. 计算机毕业设计ssm基于用户激励的图书管理系统fx8il系统+程序+源码+lw+远程部署

    计算机毕业设计ssm基于用户激励的图书管理系统fx8il系统+程序+源码+lw+远程部署 计算机毕业设计ssm基于用户激励的图书管理系统fx8il系统+程序+源码+lw+远程部署 本源码技术栈: 项目 ...

最新文章

  1. java实现人字拼,地板怎么玩花式人字拼铺法 人字拼地板家居实例图
  2. oracle语句怎么倒退,oracle RETURNING 子句使用方法
  3. Python 数据类型--Bytes类型
  4. 天池 在线编程 能否转换
  5. 研究机构称iPhone 12 mini可能已停产 因销量不佳
  6. 看完这篇后,别再说你不懂JVM类加载机制了~
  7. Flask Flash
  8. 再次测试用OLW本地的桌面应用撰写博客园博文
  9. Tomcat 下载安装,启动,停止,注册服务,开机自启
  10. php生成11位不重复数字,php生成8位不重复字符串
  11. Learn ZYNC (6)
  12. Matlab实现身份证号码快速识别
  13. 谷歌身份验证器(Google Authenticator)的使用详情
  14. 有一个函数y=x(x「1),y=2x-1(1「=x「10),y.=3x-11(x」=10)。写一段程序,输入x,输出y值
  15. 员工接私单可不可以追究刑事责任
  16. Excel图表的用法及效果
  17. 用c语言写抽奖大转盘,iOS抽奖大转盘的二种实现方法
  18. RLC电阻电容电感基础知识——电容篇
  19. 抖音小店入驻精选联盟有什么条件?精选联盟添加商品操作流程分享
  20. c语言的标识符可分为哪3种字符,c语言标识符有哪三类?

热门文章

  1. 2021-09-05参与Crust x CoinMarketCap课程学习活动,领取共1150枚CRU奖励!
  2. 高新技术企业的账务处理怎么做
  3. 应该没有人不知道吧?排名前三的python 开源 IDE
  4. VIM快速移动光标到行首行尾及特定行
  5. Windows10 中如何修改默认浏览器设置
  6. 模拟集成电路与数字集成电路_通过可组合集成进行数字化转型
  7. win7计算机基础网络考试题库,Win7计算机应用基础考试内容
  8. PropertyGrid--基本功能
  9. javascript实现掉落弹出层------Day29
  10. 第十天作业:博客首页