Java项目-SSM实现完整的BBS论坛

简介: 这个论坛功能开发的比较完整,论坛的版块管理,贴子管理,发贴,回复,置顶,个人积分等功能都具备。系统采用SSM框架技术开发,数据库采用MYSQL,开发工具采用IDEA或MyEclipse均可。前端用户交流功能

 作者主页:编程指南针

简介:Java领域优质创作者、CSDN博客专家  Java项目、简历模板、学习资料、面试题库、技术互助

文末获取源码

项目编号:BS-PT-002

这个论坛功能开发的比较完整,论坛的版块管理,贴子管理,发贴,回复,置顶,个人积分等功能都具备。系统采用SSM框架技术开发,数据库采用MYSQL,开发工具采用IDEA或MyEclipse均可。

前端用户交流功能

image.gif编辑

登录后进入个人管理模块

image.gif编辑

进入相应版块发贴交流

image.gif编辑

如果用户具备管理员权限,可以编辑和删除贴子,也可置顶,取消置顶,设置精华等操作

image.gif编辑

image.gif编辑

如果是管理员角色可以进入后台进行管理操作,主要包括友情链接添加,板块管理,用户管理,内部连接管理,网站设置等功能

image.gif编辑

image.gif编辑

image.gif编辑

image.gif编辑

部分核心实现代码:

package cc.javaee.bbs.controller.admin;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cc.javaee.bbs.model.Bankuai;
import cc.javaee.bbs.model.JifenGroup;
import cc.javaee.bbs.model.PageBean;
import cc.javaee.bbs.model.User;
import cc.javaee.bbs.service.BankuaiService;
import cc.javaee.bbs.service.JifenGroupService;
import cc.javaee.bbs.tool.Pinyin4j;
import cc.javaee.bbs.tool.PublicStatic;
import cc.javaee.bbs.tool.Tool;
import cc.javaee.bbs.tool.thread.IndexThread;
/*
 * 后台板块查询
 * 
 */
@Controller
@RequestMapping("/admin/bankuai")
public class AdminBankuaiController {
  @Autowired
  BankuaiService bankuaiService;
  @Autowired
  JifenGroupService jifenGroupService;
  private static Logger log = Logger.getLogger(AdminBankuaiController.class);
  //后台页面查询
  @RequestMapping("index.do")
  public String findAllWhere(HttpServletRequest request, Model model,Bankuai bankuai,PageBean<Bankuai> page) {
    Bankuai bankuaitmp=new Bankuai();
    bankuaitmp.setParentId(0);
    List<Bankuai> list = bankuaiService.select(bankuaitmp);
    page = bankuaiService.findpage(bankuai,page);
    model.addAttribute("list", list);
    model.addAttribute("bankuai", bankuai);
    model.addAttribute("page", page);
    return "jsp/admin/bankuai/index";
  }
  //跳转到修改页面
  @RequestMapping("toupdateoradd.do")
  public String toupdateoradd(Bankuai bankuai, Model model) {
    if(bankuai.getId()!=null){
      bankuai=bankuaiService.findbyid(bankuai);
    }
    model.addAttribute("bankuai", bankuai);
    List<Bankuai> parentList = bankuaiService.findbyparentId(new Bankuai());
    //如果是父板块,删除自己
    for (int i=0;i< parentList.size() ;i++) {
      Bankuai bankuai2=parentList.get(i);
      if(bankuai2.getId()==bankuai.getId()){
        parentList.remove(bankuai2);
      }
    }
    model.addAttribute("parentList", parentList);
    List<JifenGroup> jifengouplist = jifenGroupService.find(new JifenGroup());
    model.addAttribute("jifengouplist", jifengouplist);
    return "jsp/admin/bankuai/updateoradd";
  }
  //修改或者新增
  @RequestMapping("updateoradd.do")
  public String updateoradd(HttpServletRequest request,Bankuai bankuai) {
    User user=(User)request.getSession().getAttribute(PublicStatic.USER);
    bankuai.setCreateUserid(user.getId());
    String img = bankuai.getImg();
    if(img!=null&&img.length()==0){
      bankuai.setImg("bankuai.jpg");
    }
    if(bankuai.getId()!=null){
      bankuaiService.update(bankuai);
    }else{
      bankuaiService.insert(bankuai);
    }
    new IndexThread().start();
    return "redirect:index.do ";
  }
  //删除
  @ResponseBody
  @RequestMapping("del.do")
  public String del(int id) {
    String result=bankuaiService.delete(id);
    return result;
  }
  //删除
  @ResponseBody
  @RequestMapping("getpinyin.do")
  public String getpinyin(String name) {
    String getpinyin = Pinyin4j.getpinyin(name);
    Bankuai bankuai=new Bankuai();
    bankuai.setYuming(getpinyin);
    List<Bankuai> list = bankuaiService.select(bankuai);
    if(list.size()>0){
      getpinyin=getpinyin+Tool.getRandom();
    }
    return getpinyin;
  }
}

image.gif

package cc.javaee.bbs.controller.admin;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cc.javaee.bbs.model.Tiezi;
import cc.javaee.bbs.model.User;
import cc.javaee.bbs.service.TieziService;
import cc.javaee.bbs.tool.PublicStatic;
import cc.javaee.bbs.tool.Tool;
/*
 * 后台公共使用
 * 
 */
@Controller
@RequestMapping("/admin/common")
public class AdminCommonController {
  @Autowired
  TieziService tieziService;
  private static Logger log = Logger.getLogger(AdminCommonController.class);
  //全局置顶
  @ResponseBody
  @RequestMapping("updateallzhiding.do")
  public Map<String, String> updateallzhiding(HttpServletRequest request,int id) {
    Map<String, String> map=new HashMap<String, String>();
    Tiezi tiezi=new Tiezi();
    tiezi.setId(id);
    tiezi.setZhiding(PublicStatic.ALLZHIDING);
    User user=(User) request.getSession().getAttribute(PublicStatic.USER);
    tiezi.setLastupdate(""+user.getGroupname()+"\""+user.getLoginname()+"\"于"+Tool.getyyyyMMddHHmmss()+"将帖子全局置顶"+"</br>");
    tieziService.update(tiezi);
    map.put("flag", "1");
    return map;
  }
  //取消全局置顶
  @ResponseBody
  @RequestMapping("updateallqxzhiding.do")
  public Map<String, String> updateallqxzhiding(HttpServletRequest request,int id) {
    Map<String, String> map=new HashMap<String, String>();
    Tiezi tiezi=new Tiezi();
    tiezi.setId(id);
    tiezi.setZhiding("");
    User user=(User) request.getSession().getAttribute(PublicStatic.USER);
    tiezi.setLastupdate(""+user.getGroupname()+"\""+user.getLoginname()+"\"于"+Tool.getyyyyMMddHHmmss()+"将帖子取消全局置顶"+"</br>");
    tieziService.update(tiezi);
    map.put("flag", "1");
    return map;
  }
}

image.gif

package cc.javaee.bbs.controller.admin;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
/*
 * 
 * 跳转后台首页
 * 
 */
@Controller
@RequestMapping("/admin")
public class AdminIndexController {
  private static Logger log = Logger.getLogger(AdminIndexController.class);
  //后台页面查询
  @RequestMapping("index.do")
  public String findAllWhere(HttpServletRequest request, Model model) {
    return "jsp/admin/index";
  }
}

image.gif

package cc.javaee.bbs.controller.admin;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import cc.javaee.bbs.model.Info;
import cc.javaee.bbs.service.InfoService;
/*
 * 网站信息
 * 
 */
@Controller
@RequestMapping("/admin/info")
public class AdminInfoController {
  @Autowired
  InfoService infoService;
  private static Logger log = Logger.getLogger(AdminInfoController.class);
  //页面查询
  @RequestMapping("index.do")
  public String findAllWhere(HttpServletRequest request, Model model) {
    Info info = infoService.find();
    model.addAttribute("info", info);
    return "jsp/admin/info";
  }
  //修改
  @RequestMapping("update.do")
  public String updateoradd(HttpServletRequest request,Info info) {
    info.setId(1);
    infoService.update(info);
    info = infoService.find();
    request.getSession().getServletContext().setAttribute("bbsinfo", info);
    return "redirect:/admin/info/index.do ";
  }
}

image.gif

package cc.javaee.bbs.controller.admin;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cc.javaee.bbs.model.Bankuai;
import cc.javaee.bbs.model.InnerLink;
import cc.javaee.bbs.model.JifenGroup;
import cc.javaee.bbs.model.PageBean;
import cc.javaee.bbs.model.User;
import cc.javaee.bbs.service.BankuaiService;
import cc.javaee.bbs.service.InnerLinkService;
import cc.javaee.bbs.service.JifenGroupService;
import cc.javaee.bbs.tool.Pinyin4j;
import cc.javaee.bbs.tool.PublicStatic;
import cc.javaee.bbs.tool.Tool;
import cc.javaee.bbs.tool.thread.IndexThread;
/*
 * 后台内部链接
 * 
 */
@Controller
@RequestMapping("/admin/innerlink")
public class AdminInnerLinkController {
  @Autowired
  BankuaiService bankuaiService;
  @Autowired
  JifenGroupService jifenGroupService;
  @Autowired
  InnerLinkService innerLinkService;
  private static Logger log = Logger.getLogger(AdminInnerLinkController.class);
  //后台页面查询
  @RequestMapping("index.do")
  public String findAllWhere(HttpServletRequest request, Model model,InnerLink innerLink,PageBean<InnerLink> page) {
    page = innerLinkService.findpage(innerLink,page);
    model.addAttribute("page", page);
    return "jsp/admin/innerlink/index";
  }
  //跳转到修改页面
  @RequestMapping("toupdateoradd.do")
  public String toupdateoradd(Integer id, Model model) {
    if(id!=null){
      InnerLink innerLink=innerLinkService.findbyid(id);
      model.addAttribute("innerLink", innerLink);
    }
    return "jsp/admin/innerlink/updateoradd";
  }
  //修改或者新增
  @RequestMapping("updateoradd.do")
  public String updateoradd(HttpServletRequest request,InnerLink innerLink) {
    User user=(User)request.getSession().getAttribute(PublicStatic.USER);
    innerLink.setCreateuserid(user.getId());
    innerLink.setIsuse("0");
    innerLink.setType("0");
    innerLink.setCreatetime(Tool.getyyyyMMddHHmmss());
    String innerlinkhtml = innerLink.getInnerlink();
    if(innerlinkhtml!=null&&innerlinkhtml.length()>0){
      if(!innerlinkhtml.startsWith("http://")||!innerlinkhtml.startsWith("http://")){
        innerlinkhtml="http://"+innerlinkhtml;
        innerLink.setInnerlink(innerlinkhtml);
      }
    }
    if(innerLink.getId()!=null){
      innerLinkService.update(innerLink);
    }else{
      innerLinkService.insert(innerLink);
    }
    return "redirect:index.do ";
  }
  //删除
  @ResponseBody
  @RequestMapping("del.do")
  public String del(int id) {
    String result=innerLinkService.delete(id);
    return result;
  }
  //删除
  @ResponseBody
  @RequestMapping("updateuse.do")
  public String updateuse(int id,String use) {
    InnerLink innerLink=new InnerLink();
    innerLink.setId(id);
    innerLink.setIsuse(use);
    innerLink.setCreatetime(Tool.getyyyyMMddHHmmss());
    innerLinkService.update(innerLink);
    new IndexThread().start();
    return "1";
  }
}

image.gif

package cc.javaee.bbs.controller.admin;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cc.javaee.bbs.model.Bankuai;
import cc.javaee.bbs.model.Link;
import cc.javaee.bbs.model.PageBean;
import cc.javaee.bbs.model.User;
import cc.javaee.bbs.service.BankuaiService;
import cc.javaee.bbs.service.LinkService;
import cc.javaee.bbs.tool.PublicStatic;
/*
 * 友情链接
 * 
 */
@Controller
@RequestMapping("/admin/link")
public class AdminLinkController {
  @Autowired
  LinkService linkService;
  @Autowired
  BankuaiService bankuaiService;
  private static Logger log = Logger.getLogger(AdminLinkController.class);
  //后台页面查询
  @RequestMapping("index.do")
  public String findAllWhere(HttpServletRequest request, Model model,Link link,PageBean<Link> page) {
    User user=(User) request.getSession().getAttribute(PublicStatic.USER);
    link.setCreateuserid(user.getId());
    page = linkService.findpage(link,page);
    model.addAttribute("page", page);
    return "jsp/admin/link/index";
  }
  //跳转到修改页面
  @RequestMapping("toupdateoradd.do")
  public String toupdateoradd(Model model,Link link) {
    Bankuai bankuai=new Bankuai();
//    bankuai.setParentId(0);
    List<Bankuai> list = bankuaiService.select(bankuai);
    model.addAttribute("list", list);
    if(link!=null&&link.getId()!=null){
      link=linkService.find(link).get(0);
      model.addAttribute("link", link);
    }
    return "jsp/admin/link/updateoradd";
  }
  //修改或者新增
  @RequestMapping("updateoradd.do")
  public String updateoradd(HttpServletRequest request,Link link) {
    User user=(User) request.getSession().getAttribute(PublicStatic.USER);
    link.setCreateuserid(user.getId());
    if(link.getId()!=null){
      linkService.update(link);
    }else{
      linkService.insert(link);
    }
    return "redirect:index.do ";
  }
  //删除
  @ResponseBody
  @RequestMapping("del.do")
  public String del(int id) {
    String result=linkService.delete(id);
    return result;
  }
}

image.gif

package cc.javaee.bbs.controller.admin;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import cc.javaee.bbs.model.PageBean;
import cc.javaee.bbs.model.Tiezi;
import cc.javaee.bbs.model.User;
import cc.javaee.bbs.service.GroupService;
import cc.javaee.bbs.service.HuifuService;
import cc.javaee.bbs.service.TieziService;
import cc.javaee.bbs.service.UserService;
import cc.javaee.bbs.tool.PublicStatic;
import cc.javaee.bbs.tool.Tool;
/*
 * 后台用户管理页面
 * 
 */
@Controller
@RequestMapping("/admin/post")
public class AdminPostContriller {
  @Autowired
  UserService userService;
  @Autowired
  GroupService groupService;
  @Autowired
  TieziService tieziService;
  @Autowired
  HuifuService huifuService;
  //跳转首页
  @RequestMapping("index.do")
  public String add(HttpServletRequest request, Model model,Tiezi tiezi,PageBean<Tiezi> page) {
    if("1".equals(tiezi.getIsuse())){
      tiezi.setOrderby("5");
    }else{
      tiezi.setOrderby("4");
    }
    page = tieziService.findpagebybankuanid(tiezi, page);
    model.addAttribute("page", page);
    model.addAttribute("qtiezi", tiezi);
    return "jsp/admin/post/index";
  }
  //审核通过
  @RequestMapping("updatepost.do")
  public String updatepost(HttpServletRequest request, Model model,Tiezi tiezi) {
    tieziService.updatepost(tiezi);
    return "redirect:index.do?isuse=0";
  }
  //删除帖子
  @RequestMapping("delpost.do")
  public String delpost(HttpServletRequest request, Model model,int id) {
    tieziService.delete(id);
    huifuService.deletebytiezi(id);
    return "redirect:index.do?isuse=1";
  }
}

image.gif


相关文章
|
2天前
|
SQL Java 数据库连接
从理论到实践:Hibernate与JPA在Java项目中的实际应用
本文介绍了Java持久层框架Hibernate和JPA的基本概念及其在具体项目中的应用。通过一个在线书店系统的实例,展示了如何使用@Entity注解定义实体类、通过Spring Data JPA定义仓库接口、在服务层调用方法进行数据库操作,以及使用JPQL编写自定义查询和管理事务。这些技术不仅简化了数据库操作,还显著提升了开发效率。
12 3
|
5天前
|
前端开发 Java 数据库
如何实现一个项目,小白做项目-java
本教程涵盖了从数据库到AJAX的多个知识点,并详细介绍了项目实现过程,包括静态页面分析、数据库创建、项目结构搭建、JSP转换及各层代码编写。最后,通过通用分页和优化Servlet来提升代码质量。
17 1
|
28天前
|
JavaScript 前端开发 Java
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
这篇文章详细介绍了如何在前端Vue项目和后端Spring Boot项目中通过多种方式解决跨域问题。
298 1
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
|
12天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
25天前
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
Java/Spring项目的包开头为什么是com?
|
28天前
|
运维 Java Maven
Dockerfile实践java项目
通过上述实践,我们可以看到,Dockerfile在Java项目中扮演着至关重要的角色,它不仅简化了部署流程,提高了环境一致性,还通过多阶段构建、环境变量配置、日志管理、健康检查等高级特性,进一步增强了应用的可维护性和可扩展性。掌握这些实践,将极大地提升开发和运维团队的工作效率。
40 1
|
29天前
|
算法 Java Linux
java制作海报五:java 后端整合 echarts 画出 折线图,项目放在linux上,echarts图上不显示中文,显示方框口口口
这篇文章介绍了如何在Java后端整合ECharts库来绘制折线图,并讨论了在Linux环境下ECharts图表中文显示问题。
36 1
时间轮-Java实现篇
在前面的文章《[时间轮-理论篇](https://developer.aliyun.com/article/910513)》讲了时间轮的一些理论知识,然后根据理论知识。我们自己来实现一个简单的时间轮。
|
11天前
|
安全 Java
java 中 i++ 到底是否线程安全?
本文通过实例探讨了 `i++` 在多线程环境下的线程安全性问题。首先,使用 100 个线程分别执行 10000 次 `i++` 操作,发现最终结果小于预期的 1000000,证明 `i++` 是线程不安全的。接着,介绍了两种解决方法:使用 `synchronized` 关键字加锁和使用 `AtomicInteger` 类。其中,`AtomicInteger` 通过 `CAS` 操作实现了高效的线程安全。最后,通过分析字节码和源码,解释了 `i++` 为何线程不安全以及 `AtomicInteger` 如何保证线程安全。
java 中 i++ 到底是否线程安全?
|
1天前
|
存储 安全 Java
Java多线程编程的艺术:从基础到实践####
本文深入探讨了Java多线程编程的核心概念、应用场景及其实现方式,旨在帮助开发者理解并掌握多线程编程的基本技能。文章首先概述了多线程的重要性和常见挑战,随后详细介绍了Java中创建和管理线程的两种主要方式:继承Thread类与实现Runnable接口。通过实例代码,本文展示了如何正确启动、运行及同步线程,以及如何处理线程间的通信与协作问题。最后,文章总结了多线程编程的最佳实践,为读者在实际项目中应用多线程技术提供了宝贵的参考。 ####
下一篇
无影云桌面