亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java實戰(zhàn)項目 健身管理系統(tǒng)

 更新時間:2021年09月16日 11:35:13   作者:OldWinePot  
本文是一個Java語言編寫的實戰(zhàn)項目,是一個健身管理系統(tǒng),主要用到了ssm+springboot等技術,技術含量筆記高,感興趣的童鞋跟著小編往下看吧

主要技術:springmvc、 springboot 、mybatis、mysql 、jQuery、layui、css、jsp shiro權限控制

主要功能截圖如下:

用戶登錄、首頁主要功能有:會員信息管理、會員到期續(xù)費管理、充值管理、教練課程管理、私教管理、器材管理、小商品售賣管理、信息統(tǒng)計、修改密碼等主要功能:

會員管理、續(xù)卡、會員卡類型管理:

教練列表展示和添加修改刪除教練信息:

會員私教課程管理:

添加私教信息:

健身課程列表展示查詢和添加修改:

健身器材列表展示查詢和添加修改:

物品遺失管理、歸還、添加丟失物品、查詢、取回丟失物品等:

健身房小商品售賣管理:列表數(shù)據(jù)展示、查詢、進貨、售賣 退貨等操作

簡單的樹狀圖統(tǒng)計:

代碼:

數(shù)據(jù)庫表:

管理員登錄代碼如下:

/**
 * @Description: 管理員登錄Controller控制層
 * xiaoc
 * @Date: 2020/4/4
 */
@Controller
@RequestMapping("/")
public class AdminuserConntroller {
    @Autowired
    private AdminuserDao adminuserDao;
 
    /**
     * @Description: 輸入端口號直接跳轉(zhuǎn)登錄界面
     * xiaoc
     * @Date: 2020/4/29
     */
    @RequestMapping("/")
    public String beforeLogin(){
        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){
            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";*/
    }
 
    /**
     * @Description: 退出登錄后清楚session
     * xiaoc
     * @Date: 2020/5/1
     */
    @RequestMapping("/logout")
    public String logout(){
        Subject subject = SecurityUtils.getSubject();
        subject.logout();
        return "redirect:/login";
 
    }
 
    /**
     * @Description: 跳轉(zhuǎn)到修改密碼界面
     * xiaoc
     * @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位并為字母+數(shù)字+特殊字符");
            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 {
 
    /**
     * 密碼校驗規(guī)則HashedCredentialsMatcher
     * 這個類是為了對密碼進行編碼的 ,
     * 防止密碼在數(shù)據(jù)庫里明碼保存 , 當然在登陸認證的時候 ,
     * 這個類也負責對form里輸入的密碼進行編碼
     * 處理認證匹配處理器:如果自定義需要實現(xiàn)繼承HashedCredentialsMatcher
     */
    //    @Bean("hashedCredentialsMatcher")
    //    public HashedCredentialsMatcher getHashedCredentialsMatcher() {
    //        HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
    //        //指定加密方式為MD5
    //        credentialsMatcher.setHashAlgorithmName("MD5");
    //        //加密次數(shù)
    //        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()");
        //這個參數(shù)是cookie的名稱,對應前端的checkbox的name = rememberMe
        SimpleCookie simpleCookie = new SimpleCookie("ckbox");
        //<!-- 記住我cookie生效時間30天 ,單位秒;-->
        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() ;
 
        //設置網(wǎng)頁安全管理器
        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 ;
    }
 
}

到此這篇關于Java實戰(zhàn)項目 健身管理系統(tǒng)的文章就介紹到這了,更多相關Java 健身管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java高級語法學習之反射詳解

    Java高級語法學習之反射詳解

    java的泛型和反射機制一直很難理解和應用,下面這篇文章主要給大家介紹了關于Java高級語法學習之反射的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • Java中如何使用?byte?數(shù)組作為?Map?的?key

    Java中如何使用?byte?數(shù)組作為?Map?的?key

    本文將討論在使用HashMap時,當byte數(shù)組作為key時所遇到的問題及其解決方案,介紹使用String和List這兩種數(shù)據(jù)結(jié)構作為臨時解決方案的方法,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • Java數(shù)據(jù)庫操作庫DButils類的使用方法與實例詳解

    Java數(shù)據(jù)庫操作庫DButils類的使用方法與實例詳解

    這篇文章主要介紹了JDBC數(shù)據(jù)庫操作庫DButils類的使用方法詳解,需要的朋友可以參考下
    2020-02-02
  • MAVEN的安裝配置與IDEA整合超詳細教程

    MAVEN的安裝配置與IDEA整合超詳細教程

    這篇文章給大家介紹了MAVEN的安裝,配置與IDEA整合方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,感興趣的朋友跟隨小編一起看看吧
    2021-02-02
  • Android應用開發(fā)的一般文件組織結(jié)構講解

    Android應用開發(fā)的一般文件組織結(jié)構講解

    這篇文章主要介紹了Android應用開發(fā)的一般文件組織結(jié)構講解,同時附帶介紹了一個獲取Android的文件列表的方法,需要的朋友可以參考下
    2015-12-12
  • SpringBoot整合Redis哨兵模式的實現(xiàn)示例

    SpringBoot整合Redis哨兵模式的實現(xiàn)示例

    Redis哨兵模式是Redis高可用方案的一種實現(xiàn)方式,通過哨兵來自動實現(xiàn)故障轉(zhuǎn)移,從而保證高可用,本文主要介紹了SpringBoot整合Redis哨兵模式的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • poi導出word表格的操作講解

    poi導出word表格的操作講解

    這篇文章主要介紹了poi導出word表格的操作講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 關于JSqlparser使用攻略(高效的SQL解析工具)

    關于JSqlparser使用攻略(高效的SQL解析工具)

    這篇文章主要介紹了關于JSqlparser使用攻略(高效的SQL解析工具),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java利用Easyexcel導出excel表格的示例代碼

    Java利用Easyexcel導出excel表格的示例代碼

    這篇文章主要為大家詳細介紹了Java利用Easyexcel導出excel表格的示例代碼,文中的代碼講解詳細,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-07-07
  • Java HashMap 如何正確遍歷并刪除元素的方法小結(jié)

    Java HashMap 如何正確遍歷并刪除元素的方法小結(jié)

    這篇文章主要介紹了Java HashMap 如何正確遍歷并刪除元素的方法小結(jié),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05

最新評論