基于javaweb+springboot的健身房管理系统(Java+ssm+springboot)
基于javaweb+springboot的健身房管理系统(Java+ssm+springboot)
主要技术:springmvc、 springboot 、mybatis、mysql 、jQuery、layui、css、jsp shiro权限控制
主要功能截图如下:
用户登录、首页主要功能有:会员信息管理、会员到期续费管理、充值管理、教练课程管理、私教管理、器材管理、小商品售卖管理、信息统计、修改密码等主要功能:
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
return "login";}/*** @Description: 管理员登录验证方法* 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){
@RequestMapping("/logout")public String logout(){Subject subject = SecurityUtils.getSubject();subject.logout();return "redirect:/login";}/*** @Description: 跳转到修改密码界面* xiaoc* @Date: 2020/5/1*/@RequestMapping("/updPassword")
}@Beanpublic EhCacheManager getEhCacheManager(){EhCacheManager ehCacheManager = new EhCacheManager() ;ehCacheManager.setCacheManagerConfigFile("classpath:ehcache-shiro.xml");return ehCacheManager ;}@Beanpublic 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;}@Beanpublic DefaultWebSecurityManager getDefaultWebSecurityManager(){DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager() ;defaultWebSecurityManager.setRealm(getMyRealm());//注册记住我defaultWebSecurityManager.setRememberMeManager(rememberMeManager());//注册缓存
}
用户管理控制层:
@Controller
@RequestMapping("/user")
public class UserController {@Resource private IUserService userService; @ResponseBody@RequestMapping("/login") public String toIndex(User user,HttpSession session){
CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager();cookieRememberMeManager.setCookie(rememberMeCookie());//rememberMe cookie加密的密钥 建议每个项目都不一样 默认AES算法 密钥长度(128 256 512 位)// cookieRememberMeManager.setCipherKey(Base64.decode("2AvVhdsgUs0FSA3SDFAdag=="));return cookieRememberMeManager;}@Beanpublic DefaultWebSecurityManager getDefaultWebSecurityManager(){DefaultWebSecurityManager defaultWebSecurityManager = new DefaultWebSecurityManager() ;defaultWebSecurityManager.setRealm(getMyRealm());//注册记住我defaultWebSecurityManager.setRememberMeManager(rememberMeManager());//注册缓存defaultWebSecurityManager.setCacheManager(getEhCacheManager());return defaultWebSecurityManager ;
/*** @Description: 跳转到修改密码界面* xiaoc* @Date: 2020/5/1*/@RequestMapping("/updPassword")public String updPassword(){return "WEB-INF/jsp/updPassword";}/*** @Description: 修改密码* xiaoc* @Date: 2020/5/1
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";*/}/**
defaultWebSecurityManager.setRealm(getMyRealm());//注册记住我defaultWebSecurityManager.setRememberMeManager(rememberMeManager());//注册缓存defaultWebSecurityManager.setCacheManager(getEhCacheManager());return defaultWebSecurityManager ;}@Beanpublic AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(){System.out.println("开启了Shiro注解支持");AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();authorizationAttributeSourceAdvisor.setSecurityManager(getDefaultWebSecurityManager());return authorizationAttributeSourceAdvisor;}@Bean@ConditionalOnMissingBeanpublic DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {
//设置网页安全管理器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") ;
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";}
}
密码加密方式:
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";}
System.out.println("开启了Shiro注解支持");AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor();authorizationAttributeSourceAdvisor.setSecurityManager(getDefaultWebSecurityManager());return authorizationAttributeSourceAdvisor;}@Bean@ConditionalOnMissingBeanpublic DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {DefaultAdvisorAutoProxyCreator defaultAAP = new DefaultAdvisorAutoProxyCreator();defaultAAP.setProxyTargetClass(true);return defaultAAP;}@Beanpublic ShiroFilterFactoryBean getShiroFilterFactoryBean(){ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean() ;//设置网页安全管理器shiroFilterFactoryBean.setSecurityManager(getDefaultWebSecurityManager());Map<String,String> map = new LinkedHashMap<String,String>() ;//定义可以直接访问的资源
return "true";}
}
管理员登录代码如下:
/*** @Description: 管理员登录Controller控制层* xiaoc* @Date: 2020/4/4*/
@Controller
@RequestMapping("/")
public class AdminuserConntroller {@Autowiredprivate AdminuserDao adminuserDao;/*** @Description: 输入端口号直接跳转登录界面
SimpleCookie simpleCookie = new SimpleCookie("ckbox");//<!-- 记住我cookie生效时间30天 ,单位秒;-->simpleCookie.setMaxAge(259200);return simpleCookie;}@Beanpublic EhCacheManager getEhCacheManager(){EhCacheManager ehCacheManager = new EhCacheManager() ;ehCacheManager.setCacheManagerConfigFile("classpath:ehcache-shiro.xml");return ehCacheManager ;}@Beanpublic 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;}@Beanpublic DefaultWebSecurityManager getDefaultWebSecurityManager(){
// }@Beanpublic MyRealm getMyRealm(){MyRealm myRealm = new MyRealm() ;// myRealm.setCredentialsMatcher(getHashedCredentialsMatcher());return myRealm ;}@Beanpublic SimpleCookie rememberMeCookie() {//System.out.println("ShiroConfiguration.rememberMeCookie()");//这个参数是cookie的名称,对应前端的checkbox的name = rememberMeSimpleCookie simpleCookie = new SimpleCookie("ckbox");
用户管理控制层:
@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());
/*** @Description: 管理员登录验证方法* 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" ;
//设置网页安全管理器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
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";}
* @Date: 2020/5/1*/@RequestMapping("/updPassword")public String updPassword(){return "WEB-INF/jsp/updPassword";}/*** @Description: 修改密码* 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";
public EhCacheManager getEhCacheManager(){EhCacheManager ehCacheManager = new EhCacheManager() ;ehCacheManager.setCacheManagerConfigFile("classpath:ehcache-shiro.xml");return ehCacheManager ;}@Beanpublic 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;}
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";}
// }@Beanpublic MyRealm getMyRealm(){MyRealm myRealm = new MyRealm() ;// myRealm.setCredentialsMatcher(getHashedCredentialsMatcher());return myRealm ;}@Beanpublic SimpleCookie rememberMeCookie() {//System.out.println("ShiroConfiguration.rememberMeCookie()");//这个参数是cookie的名称,对应前端的checkbox的name = rememberMeSimpleCookie simpleCookie = new SimpleCookie("ckbox");//<!-- 记住我cookie生效时间30天 ,单位秒;-->simpleCookie.setMaxAge(259200);return simpleCookie;}@Beanpublic EhCacheManager getEhCacheManager(){EhCacheManager ehCacheManager = new EhCacheManager() ;ehCacheManager.setCacheManagerConfigFile("classpath:ehcache-shiro.xml");return ehCacheManager ;}@Beanpublic CookieRememberMeManager rememberMeManager() {
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";*/}/*** @Description: 退出登录后清楚session* xiaoc* @Date: 2020/5/1*/@RequestMapping("/logout")public String logout(){Subject subject = SecurityUtils.getSubject();subject.logout();return "redirect:/login";}/**
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";}
}
管理员登录代码如下:
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";}
}
密码加密方式:
@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")
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";
基于javaweb+springboot的健身房管理系统(Java+ssm+springboot)相关推荐
- 基于javaweb+mysql的健身管理系统(java+ssm+springboot)
基于javaweb+mysql的健身管理系统(java+ssm+springboot) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclipse/sts等均可 ...
- 基于javaweb的在线健身房管理系统(java+springboot+jsp+html+mysql)
基于javaweb的在线健身房管理系统(java+springboot+jsp+html+mysql) 运行环境 Java≥8.MySQL≥5.7 开发工具 eclipse/idea/myeclips ...
- 基于javaweb+springboot的健身管理系统(Java+ssm+springboot)
基于javaweb+springboot的健身管理系统(Java+ssm+springboot) 主要技术:springmvc. springboot .mybatis.mysql .jQuery.l ...
- 基于javaweb+jsp的健身俱乐部管理系统(java+SSM+Mysql+Jsp)
基于javaweb+jsp的健身俱乐部管理系统(java+SSM+Mysql+Jsp) 基于jsp+mysql+Spring+mybatis的SSM健身房管理系统 运行环境: jdk 1.8 IDE环 ...
- 基于javaweb的高校运动会管理系统(java+ssm+jsp+js+jquery+mysql)
基于javaweb的高校运动会管理系统(java+ssm+jsp+js+jquery+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/m ...
- 基于javaweb的律师事务所律师管理系统(java+ssm+html+js+jsp+mysql)
基于javaweb的律师事务所律师管理系统(java+ssm+html+js+jsp+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/m ...
- 基于javaweb的设备台账管理系统(java+ssm+html+jsp+js+mysql)
基于javaweb的设备台账管理系统(java+ssm+html+jsp+js+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myec ...
- 基于javaweb的医药信息管理系统(java+ssm+html+easyui+mysql)
基于javaweb的医药信息管理系统(java+ssm+html+easyui+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/myec ...
- 基于javaweb的中药药方管理系统(java+ssm+jsp+bootstrap+mysql)
基于javaweb的中药药方管理系统(java+ssm+jsp+bootstrap+mysql) 运行环境 Java≥8.MySQL≥5.7.Tomcat≥8 开发工具 eclipse/idea/my ...
最新文章
- win10家庭版gpedit.msc无法打开本地组策略
- MyEclipse的Debug功能最基本的操作
- 洛谷 P1008 [NOIP1998 普及组] 三连击
- codeforces 471B. MUH and Important Things 解题报告
- Contoso 大学 - 3 - 排序、过滤及分页
- crypto在web的使用
- 计算机系统保密软件,计算机系统保密检查工具
- 基于Qt开发的游戏手柄小程序例子
- 海信电视显示有设备连接服务器,海信电视屏幕上显示“智能电视系统启动中,请稍后”是什么意思?怎样处理?...
- 在C#中使用WIA获取扫描仪数据
- [Unity]利用Mesh在Unity中绘制扇形图片2
- ARM Neon 编程笔记一(ARM NEON Intrinsics, SIMD运算, 优化心得)
- Translatium for Mac(Google在线翻译工具)
- 一个逗比 程序员 web前端的理想!
- java cleartype_等宽雅黑宋体2.1(支持ClearType和GDI++)
- oracle存储过程语法和用法,oracle存储过程 语法 函数 总结
- 学习笔记 - 5步理解Gradle. How build execution is controlled by gradle tasks?
- Hijackthis浏览器劫持日志精解_网络安全日志,还我蓝色天空(转载)
- C语言实现循环码系统与非系统编码
- 老板,我想请假去旅游!