基于javaweb的SSM在线bbs论坛系统(java+ssm+jsp+bootstrap+jquery+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

380023092402

390023092402

400023092402

410023092402

430023092402

440023092402

基于javaweb的SSM在线bbs论坛系统(java+ssm+jsp+bootstrap+jquery+mysql)

项目介绍

本系统分为前后台,前台主要功能为: 用户注册登陆、浏览帖子、发布帖子、个人信息管理、消息通知管理,积分管理,

后台管理功能有: 友情链接管理、板块管理、主题管理、用户管理、网站设置等等。本系统实现的功能非常丰富,可自由切换电脑版和手机版,访问时自动识别设备,也可按照ip来设置访问权限,已经达到了正式上线的系统水平,非常值得学习参考。本项目包含完整的源码、数据库文件。

管理员账号/密码:admin/123456 用户账号/密码: userloop/123456

环境需要

1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.是否Maven项目: 否;查看源码目录中是否包含pom.xml;若包含,则为maven项目,否则为非maven项目  6.数据库:MySql 5.7版本;

技术栈

  1. 后端:Spring SpringMVC MyBatis 2. 前端:JSP+bootstrap+jQuery

使用说明

  1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;  2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,下载所需要的jar包; 3. 将项目中beans.xml配置文件中的数据库配置改为自己的配置,主要用户名、密码; 4. 配置tomcat,然后运行运行项目,输入http://localhost:8080/ 登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
private static Logger log = Logger.getLogger(IndexTieziController.class);

//根据帖子id查询信息
@RequestMapping("index.do")
public String index(HttpServletRequest request, Model model,String bankuaiid,String id,String orderby,PageBean<Map<String, Object>> page) {

long start = System.currentTimeMillis();
Map<String, Object> map= tieziService.findbytieziid(id);

//判断访问权限
String findgroup = map.get("findgroup")+"";
User user=(User)request.getSession().getAttribute(PublicStatic.USER);
boolean b=userService.isfind(findgroup,user);
if(!b){
return "redirect:/topage/quanxian.do";
}

model.addAttribute("map", map);
//判断回复权限
if(user!=null){
String flag = userService.ishuifu(map.get("huifugroup")+"", user);
model.addAttribute("flag", flag);
}
Map<String, Object> qmap=new HashMap<String, Object>();
qmap.put("id", id);
if("0".equals(orderby)){
qmap.put("orderby", " desc");
}else{
qmap.put("orderby", " asc ");
}
tieziService.updatefindcount(Integer.parseInt(id));
PageBean<Map<String, Object>> huifumap = huifuService.findpage(qmap, page);
model.addAttribute("huifumap", huifumap);
model.addAttribute("orderby", orderby);

//查询相关帖子
Map<String, Object> tiezi=new HashMap<String, Object>();
String sql=Tool.equalsql(map.get("name")+"");
tiezi.put("sql", sql);
tiezi.put("id", map.get("id"));
tiezi.put("bankuai_id", map.get("bankuai_id"));
List<Tiezi> listtiezi = tieziService.equalstiezi(tiezi);
model.addAttribute("listtiezi", listtiezi);
//获取上一个和下一个
List<Tiezi> nextandlast = tieziService.nextandlast(tiezi);
for (Tiezi tiezi2 : nextandlast) {
int tieziid=Integer.parseInt(map.get("id")+"");
if(tiezi2.getId()<tieziid){
model.addAttribute("next", tiezi2);
}else{
model.addAttribute("last", tiezi2);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
}
//前一周
public static String getq_zy_yyyy_MM_dd(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
long l=System.currentTimeMillis()-1000l*60*60*24*7;
return sdf.format(l);
}

//获取10000-100000的随机数
public static int getRandom(){
int max=100000;
int min=10000;
Random random = new Random();
int s = random.nextInt(max)%(max-min+1) + min;
return s;
}


//获取ip--暂时不使用
public static String getIps(HttpServletRequest request)
{
String ip = request.getHeader("x-forwarded-for");
if ((ip == null) || (ip.length() == 0) || ("unknown".equalsIgnoreCase(ip))) {
ip = request.getHeader("Proxy-Client-IP");
}
if ((ip == null) || (ip.length() == 0) || ("unknown".equalsIgnoreCase(ip))) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if ((ip == null) || (ip.length() == 0) || ("unknown".equalsIgnoreCase(ip))) {
ip = request.getRemoteAddr();
}
if (ip.equals("127.0.0.1"))
{
log.error("获取客户ip失败:" + ip);
ip = getUUID();
}
return ip;
}
//获取ip
public static String getIp(HttpServletRequest request) {
String ip = request.getHeader("X-Pounded-For");
if (ip != null) {
return ip;
}

ip = request.getHeader("x-forwarded-for");

if (ip == null) {
ip = request.getRemoteAddr();
if (ip.equals("127.0.0.1") || ip.equals("0:0:0:0:0:0:0:1")) {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
		PublicStatic.FILE_PATH=path;
InfoService infoService=(InfoService) ToolSpring.getBean("infoService");
Info info = infoService.find();
filterConfig.getServletContext().setAttribute("bbsinfo", info);
log.info("bbs-info-加载成功");
new IndexThread().start();
}


}
package com.yuanlrc.controller.moderator;





/*
* 版主的操作
*
*/
@Controller
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
	map.put("flag", "1");
return map;
}
//取消设置精华
@ResponseBody
@RequestMapping("qxshezhijinghua.do")
public Map<String, String> qxshezhijinghua(HttpServletRequest request,int id) {
Map<String, String> map=new HashMap<String, String>();
Tiezi tiezi=new Tiezi();
tiezi.setId(id);
tiezi.setJinghua("");
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("updatebankuaizhiding.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.BANKUAIZHIDING);
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("updatebankuaiqxzhiding.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;
}

//删除帖子
@ResponseBody
@RequestMapping("deltiezi.do")
public Map<String, String> deltiezi(HttpServletRequest request,int id) {
Map<String, String> map=new HashMap<String, String>();
tieziService.delete(id);
huifuService.deletebytiezi(id);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
String findgroup = map.get("findgroup")+"";
User user=(User)request.getSession().getAttribute(PublicStatic.USER);
boolean b=userService.isfind(findgroup,user);
if(!b){
return "redirect:/topage/quanxian.do";
}

model.addAttribute("map", map);
//判断回复权限
if(user!=null){
String flag = userService.ishuifu(map.get("huifugroup")+"", user);
model.addAttribute("flag", flag);
}
Map<String, Object> qmap=new HashMap<String, Object>();
qmap.put("id", id);
if("0".equals(orderby)){
qmap.put("orderby", " desc");
}else{
qmap.put("orderby", " asc ");
}
tieziService.updatefindcount(Integer.parseInt(id));
PageBean<Map<String, Object>> huifumap = huifuService.findpage(qmap, page);
model.addAttribute("huifumap", huifumap);
model.addAttribute("orderby", orderby);

//查询相关帖子
Map<String, Object> tiezi=new HashMap<String, Object>();
String sql=Tool.equalsql(map.get("name")+"");
tiezi.put("sql", sql);
tiezi.put("id", map.get("id"));
tiezi.put("bankuai_id", map.get("bankuai_id"));
List<Tiezi> listtiezi = tieziService.equalstiezi(tiezi);
model.addAttribute("listtiezi", listtiezi);
//获取上一个和下一个
List<Tiezi> nextandlast = tieziService.nextandlast(tiezi);
for (Tiezi tiezi2 : nextandlast) {
int tieziid=Integer.parseInt(map.get("id")+"");
if(tiezi2.getId()<tieziid){
model.addAttribute("next", tiezi2);
}else{
model.addAttribute("last", tiezi2);
}


项目链接:
https://javayms.github.io?id=441422272105200bn
https://javayms.pages.dev?id=441422272105200bn