基于javaweb的健身房管理系统(java+html+bootstrap+servlet+echarts+mysql)

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

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

适用

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

功能说明

基于javaweb+mysql的健身房管理系统(java+HTML+bootstrap+servlet+echarts+Mysql)

项目介绍

角色:管理员、吧台、前台、收银员、店长,可动态添加

功能如下:权限管理 商品管理 会员管理 消费收银 统计 权限管理 商品列表 商品增加 商品分类 会员登记 会员列表 会员充值 会员刷卡 商品消费 消费订单 充值统计 销售统计 会员增长趋势 员工管理 职位管理 员工列表

环境需要

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.数据库:MySql 5.7版本; 6.是否Maven项目: 否;

技术栈

  1. 后端:servlet 2. 前端:HTML+css+javacript+bootstrap+jQuery+echarts

使用说明

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

管理员登录代码如下:

/**

  • @Descriiption: 管理员登录Controller控制层

  • xiaoc

  • @Date: 2020/4/4

*/

@Controller

@RequestMapping(“/”)

public class AdminuserConntroller {

@Autowired

private AdminuserDao adminuserDao;

/**

  • @Descriiption: 输入端口号直接跳转登录界面

  • xiaoc

  • @Date: 2020/4/29

*/

@RequestMapping(“/”)

public String beforeLogin(){

return “login”;

/**

  • @Descriiption: 管理员登录验证方法

  • xiaoc

  • @Date: 2020/4/4

*/

@RequestMapping(“/dl/yz”)

public String login(String username, String password,HttpSession httpSession,Model model){

Subject subject= SecurityUtils.getSubject();

UsernamePasswordToken userToken=new UsernamePasswordToken(username,DigestUtils.md5Hex(password));

try{

subject.login(userToken);

Adminuser a= adminuserDao.findByAdminNameAndAdminPassword(username,DigestUtils.md5Hex(password));

httpSession.setAttribute(“user”,a);

return “WEB-INF/jsp/index”;

}catch (UnknownAccountException e){

model.addAttribute(“msg”,“用户名或密码错误,请重新输入”);

return “login”;

/*Adminuser a= adminuserDao.findByAdminNameAndAdminmima(username,password);

if(a!=null){

httpSession.setAttribute(“user”,a);

return “WEB-INF/jsp/index” ;

model.addAttribute(“mag”,“账号或密码错误”);

return “login”;*/

/**

  • @Descriiption: 退出登录后清楚session

  • xiaoc

  • @Date: 2020/5/1

*/

@RequestMapping(“/logout”)

public String logout(){

Subject subject = SecurityUtils.getSubject();

subject.logout();

return “redirect:/login”;

/**

  • @Descriiption: 跳转到修改密码界面

  • xiaoc

  • @Date: 2020/5/1

*/

@RequestMapping(“/updPassword”)

public String updPassword(){

return “WEB-INF/jsp/updPassword”;

/**

  • @Descriiption: 修改密码

  • xiaoc

  • @Date: 2020/5/1

*/

@RequestMapping(“/upd/updPassword”)

public String updPasswordConfirm(String oldPassword,String newPassword,String newPasswordAgain,HttpSession httpSession,Model model){

Pattern p = Pattern.compile(“^(?=.[A-Za-z])(?=.\d)(?=.[@@@!.%#?&])[A-Za-z\d@@@!.%*#?&]{8,}$”);

Matcher m = p.matcher(newPassword);

if(!m.matches()){

model.addAttribute(“msg”,“新密码最少为8位并为字母+数字+特殊字符”);

return “WEB-INF/jsp/updPassword”;

if(!newPassword.equals(newPasswordAgain)){

model.addAttribute(“msg”,“两次输入新密码不一致,请重新输入”);

return “WEB-INF/jsp/updPassword”;

Adminuser adminuser=(Adminuser) httpSession.getAttribute(“user”);

if(null != adminuser){

if(!adminuser.getAdminPassword().equals(DigestUtils.md5Hex(oldPassword))){

model.addAttribute(“msg”,“原密码不正确,请重新输入”);

return “WEB-INF/jsp/updPassword”;

adminuserDao.updPassword(adminuser.getAdminId(), DigestUtils.md5Hex(newPassword));

Subject subject = SecurityUtils.getSubject();

subject.logout();

return “redirect:/login.jsp”;

密码加密方式:

@Configuration

public class ShiroConfig {

/**

  • 密码校验规则HashedCredentialsMatcher

  • 这个类是为了对密码进行编码的 ,

  • 防止密码在数据库里明码保存 , 当然在登陆认证的时候 ,

  • 这个类也负责对form里输入的密码进行编码

  • 处理认证匹配处理器:如果自定义需要实现继承HashedCredentialsMatcher

*/

// @Bean(“hashedCredentialsMatcher”)

// public HashedCredentialsMatcher getHashedCredentialsMatcher() {

// HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();

// //指定加密方式为MD5

// credentialsMatcher.setHashAlgorithmName(“MD5”);

// //加密次数

// credentialsMatcher.setHashIterations(1024);

// credentialsMatcher.setStoredCredentialsHexEncoded(true);

// return credentialsMatcher;

// }

@Bean

public MyRealm getMyRealm(){

MyRealm myRealm = new MyRealm() ;

// myRealm.setCredentialsMatcher(getHashedCredentialsMatcher());

return myRealm ;

@Bean

public SimpleCookie rememberMeCookie() {

//System.out.println(“ShiroConfiguration.rememberMeCookie()”);

//这个参数是cookie的名称,对应前端的checkbox的name = rememberMe

SimpleCookie simpleCookie = new SimpleCookie(“ckbox”);

//

simpleCookie.setMaxAge(259200);

return simpleCookie;

@Bean

public EhCacheManager getEhCacheManager(){

EhCacheManager ehCacheManager = new EhCacheManager() ;

ehCacheManager.setCacheManagerConfigFile(“classpath:ehcache-shiro.xml”);

return ehCacheManager ;

@Bean

public CookieRememberMeManager rememberMeManager() {

//System.out.println(“ShiroConfiguration.rememberMeManager()”);

CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();

cookieRememberMeManager.setCookie(rememberMeCookie());

//rememberMe cookie加密的密钥 建议每个项目都不一样 默认AES算法 密钥长度(128 256 512 位)

// cookieRememberMeManager.setCipherKey(Base64.decode(“2AvVhdsgUs0FSA3SDFAdag==”));

return cookieRememberMeManager;

@Bean

public DefaultWebSecurityManager getDefaultWebSecurityManager(){

DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager() ;

defaultWebSecurityManager.setRealm(getMyRealm());

//注册记住我

defaultWebSecurityManager.setRememberMeManager(rememberMeManager());

//注册缓存

defaultWebSecurityManager.setCacheManager(getEhCacheManager());

return defaultWebSecurityManager ;

@Bean

public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(){

System.out.println(“开启了Shiro注解支持”);

AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();

authorizationAttributeSourceAdvisor.setSecurityManager(getDefaultWebSecurityManager());

return authorizationAttributeSourceAdvisor;

@Bean

@ConditionalOnMissingBean

public DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {

DefaultAdvisorAutoProxyCreator defaultAAP = new DefaultAdvisorAutoProxyCreator();

defaultAAP.setProxyTargetClass(true);

return defaultAAP;

@Bean

public ShiroFilterFactoryBean getShiroFilterFactoryBean(){

ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean() ;

//设置网页安全管理器

shiroFilterFactoryBean.setSecurityManager(getDefaultWebSecurityManager());

Map<String,String> map = new LinkedHashMap<String,String>() ;

//定义可以直接访问的资源

map.put(“/login.jsp”,“anon”) ;

map.put(“/vcode.jsp”,“anon”);

map.put(“/dl/yz”,“anon”) ;

map.put(“/static/**”,“anon”) ;

//取消认证

map.put(“/logout”,“logout”) ;

//

// map.put(“/add.jsp”,“perms[user:*]”) ;

map.put(“/**”,“user”) ;

shiroFilterFactoryBean.setFilterChainDefinitionMap(map);

shiroFilterFactoryBean.setLoginUrl(“/login.jsp”);

shiroFilterFactoryBean.setUnauthorizedUrl(“/unauth.jsp”);

return shiroFilterFactoryBean ;

用户管理控制层:

@Controller

@RequestMapping(“/user”)

public class UserController {

@Resource

private IUserService userService;

@ResponseBody

@RequestMapping(“/login”)

public String toIndex(User user,HttpSession session){

String account=user.getAccount();

user=userService.userLogin(user.getAccount(),user.getPwd());

if(user!=null){

List<Map<String,Object>> list = userService.findUserByAccount(account);

session.setAttribute(“userInfo”, JSON.toJSON(list));

session.setAttribute(“account”, account);

return “true”;

else{

return “false”;

@RequestMapping(“/Forward”)

public String loginForward(){

return “user/index”;

@RequestMapping(“/exit”)

public String exit(HttpSession session){

session.invalidate();

return “login”;

@RequestMapping(“/myInfo”)

public String myInfo(HttpSession session){

String account=(String) session.getAttribute(“account”);

List<Map<String,Object>> list = userService.findUserByAccount(account);

session.setAttribute(“userInfo”, JSON.toJSON(list));

return “user/index”;

@RequestMapping(“/classTable”)

public String classTable(HttpSession session){

List<Map<String,Object>> list = userService.findClass();

session.setAttribute(“classInfo”, JSON.toJSON(list));

return “user/classTable”;

@RequestMapping(“/teachList”)

public String teachList(HttpSession session){

return “user/teachList”;

@ResponseBody

@RequestMapping(“/selectTeach”)

public String selectTeach(HttpSession session,Integer id){

List<Map<String,Object>> list = userService.findSeTeach(id);

session.setAttribute(“SelectTeachInfo”, JSON.toJSON(list));

return “true”;

@ResponseBody

@RequestMapping(“/chooseTeach”)

public String chooseTeach(Integer id,Integer cid,Integer uid){

userService.chooseTeach(id,cid,uid);

return “true”;

@ResponseBody

@RequestMapping(“/updateUserInfo”)

public String updateUserInfo(Integer id,String account,Integer sex,Integer age,String name,String pwd,String tel,String address){

userService.updateUserInfo(id,account,sex,age,name,pwd,tel,address);

return “true”;


加粗样式

基于javaweb的健身房管理系统(java+html+bootstrap+servlet+echarts+mysql)相关推荐

  1. 基于javaweb的汽车维修管理系统(java+ssm+jsp+easyui+echarts+mysql)

    基于javaweb的汽车维修管理系统(java+ssm+jsp+easyui+echarts+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/id ...

  2. 基于javaweb的养老院管理系统(java+ssm+bootstrap+jsp+mysql)

    基于javaweb的养老院管理系统(java+ssm+bootstrap+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/mye ...

  3. 基于javaweb的出租车管理系统(java+ssm+html+javascript+jsp+mysql)

    基于javaweb的出租车管理系统(java+ssm+html+javascript+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/id ...

  4. 基于javaweb的人事管理系统(java+ssm+ligerui+metronic+jsp+mysql)

    基于javaweb的人事管理系统(java+ssm+ligerui+metronic+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/id ...

  5. 基于javaweb的物流快递管理系统(java+ssm+html+js+jsp+mysql)

    基于javaweb的物流快递管理系统(java+ssm+html+js+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myec ...

  6. 基于javaweb的日记系统(java+jsp+bootstrap+servlet+mysql)

    基于javaweb的日记系统(java+jsp+bootstrap+servlet+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/my ...

  7. 基于javaweb的新闻管理系统(java+ssm+html+js+jsp+mysql)

    基于javaweb的新闻管理系统(java+ssm+html+js+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myecli ...

  8. 基于javaweb的图书管理系统(java+jsp+layui+bootstrap+servlet+mysql)

    基于javaweb的图书管理系统(java+jsp+layui+bootstrap+servlet+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse ...

  9. 基于javaweb的宠物店管理系统(java+jsp+javascript+bootstrap+mysql)

    基于javaweb的宠物店管理系统(java+jsp+javascript+bootstrap+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/i ...

最新文章

  1. 《iPhone与iPad开发实战—iOS经典应用剖析》连载二
  2. PDF与doc格式互换
  3. 【Java学习】多线程2
  4. akka actor java_Akka:使用非默认构造函数在Scala中定义一个actor并从Java代码创建它 - java...
  5. 基于bootstrap_登陆页面
  6. Android中保存网络图片到SD卡
  7. android安卓字体下载,安卓Android简中综艺手机字体
  8. linux comd skill
  9. vtiger 安装中文语言包(汉化的步骤)--拓展繁体中文
  10. 多边形的凹凸性判断及python实现
  11. Oracle备份与恢复-误删数据文件恢复(非归档模式)
  12. python支付宝自动转账_如何使用python实现支付宝转账接口
  13. 2022树莓派安装甜糖 步骤分享
  14. superset 完全汉化
  15. python 智能识别 商品_python人工智能-图像识别
  16. 我的世界java版1.7.10咋刷物品,我的世界1.7.10刷物品mod
  17. ngrok私有服务搭建(docker交叉编译)
  18. 苹果店里卖移动套餐,走出甲方思维
  19. 3DMAX入门教程,这样还担心学不会?
  20. Java零基础学习全套视频笔记

热门文章

  1. AcWing 1020. 潜水员(二维费用背包)
  2. X窗口系统的协议和架构
  3. 冒泡排序和选择排序的不同
  4. Matlab 多项式拟合
  5. Google+无法取代个人博客
  6. Qt/C++编写物联网管理平台28-模拟工具
  7. 热烈祝贺|济南市时代酒具盛装亮相2023中国(山东)精酿啤酒产业发展创新论坛暨展览会
  8. 十六进制字符串转Python代码(utf-8字符串转十六进制字符串)
  9. SATA硬盘热插拔设置
  10. **PTA:浙大版《C语言程序设计(第3版)》编程题答案*