Java项目:在线聊天及聊天室系统(java+springboot+freemark+websocket+MySQL)——计算机毕业设计

本文介绍了一款使用Java、SpringBoot、Freemarker和WebSocket技术,结合MySQL数据库开发的在线聊天系统。系统具备用户注册登录、好友管理、一对一和群聊功能,并允许发送多种类型的消息。后台还包括用户、角色、聊天信息等的管理和统计。此外,系统提供了消息提醒设置、聊天记录管理等多种实用功能。
摘要由CSDN通过智能技术生成

springboot+freemark+websocket+MySQL实现的Java web在线聊天系统,主要实现的功能有:
前台:
1、用户注册、登录。

2、搜索用户添加好友。

3、查看好友申请列表,同意或拒绝好友请求。

4、成为好友后单人一对一聊天。

5、可创建群聊进行聊天。

除了上述基本的聊天功能外,还有:消息提醒方式设置(可设置是否弹框、是否声音提醒等,提供可选六种新消息提示音)、聊天记录清空、拉黑好友、删除好友、解散群聊、隐身、在线状态设置、好友上下线提醒等等,功能非常的全。

重点:聊天信息中可发送文字、图片、文件、视频、音乐、表情包等。

后台:
1、后台菜单、角色、管理员的管理。

2、后台聊天信息、在线用户等统计。

3、后台日志管理、数据备份等。

4、用户管理:用户信息查看、状态冻结等。

5、群聊管理:成员查看、移除成员、解散群聊等。

6、消息管理:消息详细信息跟踪查看等。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
系统控制器:
/**

  • 系统控制器

*/
@RequestMapping("/system")
@Controller
public class SystemController {

@Autowired
private OperaterLogService operaterLogService;

@Autowired
private UserService userService;

@Autowired
private DatabaseBakService databaseBakService;

private Logger log = LoggerFactory.getLogger(SystemController.class);

/**
 * 登录页面
 * @param name
 * @param model
 * @return
 */
@RequestMapping(value="/login",method=RequestMethod.GET)
public String login(Model model){
	return "admin/system/login";
}

/**
 * 用户登录提交表单处理方法
 * @param request
 * @param user
 * @param cpacha
 * @return
 */
@RequestMapping(value="/login",method=RequestMethod.POST)
@ResponseBody
public Result<Boolean> login(HttpServletRequest request,User user,String cpacha){
	if(user == null){
		return Result.error(CodeMsg.DATA_ERROR);
	}
	//用统一验证实体方法验证是否合法
	CodeMsg validate = ValidateEntityUtil.validate(user);
	if(validate.getCode() != CodeMsg.SUCCESS.getCode()){
		return Result.error(validate);
	}
	//表示实体信息合法,开始验证验证码是否为空
	if(StringUtils.isEmpty(cpacha)){
		return Result.error(CodeMsg.CPACHA_EMPTY);
	}
	//说明验证码不为空,从session里获取验证码
	Object attribute = request.getSession().getAttribute("admin_login");
	if(attribute == null){
		return Result.error(CodeMsg.SESSION_EXPIRED);
	}
	//表示session未失效,进一步判断用户填写的验证码是否正确
	if(!cpacha.equalsIgnoreCase(attribute.toString())){
		return Result.error(CodeMsg.CPACHA_ERROR);
	}
	//表示验证码正确,开始查询数据库,检验密码是否正确
	User findByUsername = userService.findByUsername(user.getUsername());
	//判断是否为空
	if(findByUsername == null){
		return Result.error(CodeMsg.ADMIN_USERNAME_NO_EXIST);
	}
	//表示用户存在,进一步对比密码是否正确
	if(!findByUsername.getPassword().equals(user.getPassword())){
		return Result.error(CodeMsg.ADMIN_PASSWORD_ERROR);
	}
	//表示密码正确,接下来判断用户状态是否可用
	if(findByUsername.getStatus() == User.ADMIN_USER_STATUS_UNABLE){
		return Result.error(CodeMsg.ADMIN_USER_UNABLE);
	}
	//检查用户所属角色状态是否可用
	if(findByUsername.getRole() == null || findByUsername.getRole().getStatus() == Role.ADMIN_ROLE_STATUS_UNABLE){
		return Result.error(CodeMsg.ADMIN_USER_ROLE_UNABLE);
	}
	//检查用户所属角色的权限是否存在
	if(findByUsername.getRole().getAuthorities() == null || findByUsername.getRole().getAuthorities().size() == 0){
		return Result.error(CodeMsg.ADMIN_USER_ROLE_AUTHORITES_EMPTY);
	}
	//检查一切符合,可以登录,将用户信息存放至session
	request.getSession().setAttribute(SessionConstant.SESSION_USER_LOGIN_KEY, findByUsername);
	//销毁session中的验证码
	request.getSession().setAttribute("admin_login", null);
	//将登陆记录写入日志库
	operaterLogService.add("用户【"+user.getUsername()+"】于【" + StringUtil.getFormatterDa
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值