基於SSM的健身房管理系統

基於SSM的健身房管理系統

The project was made in 2020-05-05~2020-05-10html

謹以此片博文記錄下個人第一個Java小Demo
代碼請見GitHub前端

項目展現

用戶登陸頁java

用戶註冊頁mysql

用戶主頁git

用戶購買健身卡(商城)github

管理員登陸頁web

管理員主頁spring

管理員添加用戶頁sql

管理員編輯用戶頁數據庫

細節1:常駐工具欄(內含搜索欄)

細節2:登陸帳號密碼實時反饋(AJAX)

**細節3:翻頁功能&可選每頁顯示條數 **

細節4:人性化的交互設計

項目環境

  • JDK: 1.8

  • IDE: IDEA 201903

  • DataBase: MySQL 8.0

  • Mybatis: 3.5.2

  • POM: Maven

  • Tomcat 9

  • Bootstrap 3

  • JQuery 2

  • lombok 插件

  • 分頁插件: PageHelper 5.1.11

  • 涉及技術 MySQL數據庫,Spring,JavaWeb及MyBatis,簡單的前端知識

項目詳情

設計數據庫

大二沒有好好學系統設計與分析,畫的圖一塌糊塗。

包含兩個實體類,用戶&管理員

生成該數據庫的sql文件 在該GitHub跳轉GitHub /sql 目錄下

生成表如圖示

設計要實現的功能

應該叫作用例圖吧,但個人好多符號都是錯的,再次後悔沒有好好學習!

製做前端頁面Demo

設計該圖的網址

其實這一步放在後面也合適,我爲了讓本身吃大餅,就先設計了一下。

環境配置

項目文件結構如圖所示

基本步驟

  1. 新建Maven項目,添加web支持

  2. 導入pom依賴

    <dependencies>
       <!--Junit-->
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.12</version>
       </dependency>
       <!--數據庫驅動-->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>5.1.47</version>
       </dependency>
       <!-- 數據庫鏈接池 -->
       <dependency>
           <groupId>com.mchange</groupId>
           <artifactId>c3p0</artifactId>
           <version>0.9.5.2</version>
       </dependency>
    
       <!--Servlet - JSP -->
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>servlet-api</artifactId>
           <version>2.5</version>
       </dependency>
       <dependency>
           <groupId>javax.servlet.jsp</groupId>
           <artifactId>jsp-api</artifactId>
           <version>2.2</version>
       </dependency>
       <dependency>
           <groupId>javax.servlet</groupId>
           <artifactId>jstl</artifactId>
           <version>1.2</version>
       </dependency>
    
       <!--Mybatis-->
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.5.2</version>
       </dependency>
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis-spring</artifactId>
           <version>2.0.2</version>
       </dependency>
    
       <!--Spring-->
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-webmvc</artifactId>
           <version>5.1.9.RELEASE</version>
       </dependency>
       <dependency>
           <groupId>org.springframework</groupId>
           <artifactId>spring-jdbc</artifactId>
           <version>5.1.9.RELEASE</version>
       </dependency>
    </dependencies>
  3. Maven資源過濾

    <build>
       <resources>
           <resource>
               <directory>src/main/java</directory>
               <includes>
                   <include>**/*.properties</include>
                   <include>**/*.xml</include>
               </includes>
               <filtering>false</filtering>
           </resource>
           <resource>
               <directory>src/main/resources</directory>
               <includes>
                   <include>**/*.properties</include>
                   <include>**/*.xml</include>
               </includes>
               <filtering>false</filtering>
           </resource>
       </resources>
    </build>
  4. 創建基本結構框架 (如上所示[點此跳轉](# 環境配置)

  5. 創建基本配置

    • mybatis-config.xml

      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE configuration
             PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
             "http://mybatis.org/dtd/mybatis-3-config.dtd">
      <configuration>
      
      </configuration>
    • applicationContext.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <beans xmlns="http://www.springframework.org/schema/beans"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans.xsd">
      
      </beans>
  6. Mybatis層編寫

    • 數據庫配置文件 database.properties

      jdbc.driver=com.mysql.jdbc.Driver
      jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8
      jdbc.username=root
      jdbc.password=123456IDEA關聯數據庫
    • IDEA關聯數據庫

    • 編寫MyBatis的核心配置文件

      <?xml version="1.0" encoding="UTF-8" ?>
      <!DOCTYPE configuration
             PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
             "http://mybatis.org/dtd/mybatis-3-config.dtd">
      <configuration>
         
         <typeAliases>
             <package name="com.kuang.pojo"/>
         </typeAliases>
         <mappers>
             <mapper resource="com/kuang/dao/BookMapper.xml"/>
         </mappers>
      
      </configuration>

POJO Mapper Services的編寫

POJO

  1. User

    @Data  //使用lombok插件便可省寫get set
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
        private int id;
        private String username;
        private String password;
        private String name;
        private String sex;
        private String telephone;
        private int age;
        private String begintime;
        private String endtime;
        private int remainday;
        private int addday;
    
        public static void main(String[] args) {
            User u = new User();
            u.getTelephone();
        }
    }
  2. Admin

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class Admin {
        private int id;
        private String username;
        private String password;
        private String name;
        private String telephone;
    }

Mapper

  1. 編寫DAO層的Mapper接口

    1. 1 userMapper
    public interface UserMapper {
        //經過id查詢
        User queryUserById(int id);
    //    查詢到期時間
        Date queryDateById(int id);
        //修改帳號密碼
        int updateNP(User user);
        //login
        User userLogin(User user);
        //會員註冊
        int userRegister(User user);
    }
    1. 2 adminMapper

      @Mapper
      @Component
      public interface AdminMapper{
          //查詢會員
          List<User> queryUser();
          //新增會員
          int addUser(User user);
          //刪除會員
          int deleteUserById(int id);
          //更新會員
          int updateUser(User user);
          //根據id查詢一個會員
          User queryUserById(int id);
          //根據姓名查詢一個會員
          User queryUserByName(String name);
          //login
          Admin adminLogin(Admin admin);
          //查詢用戶總數
          int selectTotal();
          //    分頁
          @Select("select * from gymms.user")
          @Results({
                  // 用戶信息,只要指定id列與屬性的映射關係,其餘列會自動封裝(屬性與列一致)
                  @Result(property = "id", column = "id"),
                  // 信息
                  @Result(property = "id", column = "id"),
                  @Result(property = "username", column = "username"),
                  @Result(property = "password", column = "password"),
                  @Result(property = "name", column = "name"),
                  @Result(property = "sex", column = "sex"),
                  @Result(property = "telephone", column = "telephone"),
                  @Result(property = "age", column = "age"),
                  @Result(property = "begintime", column = "begintime"),
                  @Result(property = "endtime", column = "endtime"),
                  @Result(property = "remainday", column = "remainday")
          })
          List<User> findAll();
      }
  2. 編寫接口對應的 Mapper.xml 文件

    1. 1 userMapper.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    
    <mapper namespace="com.cc.dao.UserMapper">
        <select id="queryDate" resultType="User">
            select remainday from gymms.user
          where id = #{id}
        </select>
    <!--    查詢用戶-->
        <select id="queryUserById" resultType="User">
            select * from gymms.user
          where id = #{id}
        </select>
        <!--更新User-->
        <update id="updateUser" parameterType="User">
          update gymms.user
          set username = #{username},password = #{password}
          where id = #{id}
       </update>
        <!--根據帳號密碼查詢,返回一個User-->
        <select id="userLogin" resultType="User">
            select * from gymms.user
          where username = #{username} and password = #{password}
        </select>
    <!--    會員註冊-->
        <!--增長一個會員-->
        <insert id="userRegister" parameterType="User">
          insert into gymms.user(username,password,name,sex,telephone,age,begintime,endtime,remainday)
          values (#{username},#{password},#{name},#{sex},#{telephone},#{age},#{begintime},#{endtime},#{remainday})
       </insert>
    </mapper>
    1. 2 adminMapper.xml
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.cc.dao.AdminMapper">
        <!--增長一個會員-->
        <insert id="addUser" parameterType="User">
          insert into gymms.user(username,password,name,sex,telephone,age,begintime,endtime,remainday)
          values (#{username},#{password},#{name},#{sex},#{telephone},#{age},#{begintime},#{endtime},#{remainday})
       </insert>
        <!--根據id刪除一個User-->
        <delete id="deleteUserById" parameterType="int">
          delete from gymms.user where id=#{id}
       </delete>
        <!--更新User-->
        <update id="updateUser" parameterType="User">
          update gymms.user
          set username = #{username},password = #{password},name = #{name},sex = #{sex},telephone = #{telephone},
          age = #{age},endtime = #{endtime},remainday = #{remainday}
          where id = #{id}
       </update>
        <!--根據id查詢,返回一個User-->
        <select id="queryUserById" resultType="User">
          select * from gymms.user
          where id = #{id}
       </select>
        <!--根據姓名查詢,返回一個User-->
        <select id="queryUserByName" resultType="User">
          select * from gymms.user
          where name = #{name}
       </select>
        <!--查詢所有Book-->
        <select id="queryUser" resultType="User">
          SELECT * from gymms.user
       </select>
        <!--根據帳號密碼查詢,返回一個Admin-->
        <select id="adminLogin" resultType="Admin">
            select * from gymms.admin
          where username = #{username} and password = #{password}
        </select>
        <select id="selectTotal" resultType="int">
            select count(*) from gymms.user
        </select>
    </mapper>
  3. 編寫Service層的接口和實現類

    1. 1 userService
    public interface UserService {
        //    查詢到期時間
        Date queryDateById(int id);
        //修改帳號密碼
        int updateNP(User user);
        //login
        User userLogin(User user);
        //經過id查詢
        User queryUserById(int id);
        //會員註冊
        int userRegister(User user);
    }
    1. 2 adminService
    public interface AdminService {
        //查詢會員
        List<User> queryUser();
        //新增會員
        int addUser(User user);
        //刪除會員
        int deleteUserById(int id);
        //更新會員
        int updateUser(User user);
        //根據id查詢一個會員
        User queryUserById(int id);
        //根據姓名查詢一個會員
        User queryUserByName(String name);
        //login
        Admin adminLogin(Admin admin);
        //查詢用戶總數
        int selectTotal();
        //    分頁
        List<User> findAll();
    
        /**
         * 分頁查詢
         * @param pageNum  固然頁
         * @param pageSize 頁大小
         * @return 返回PageHelper提供的封裝分頁參數的PageInfo對象
         */
        PageInfo<User> findByPage(int pageNum, int pageSize);
    }
    1. 3 userServiceImpl
    public class UserServiceImpl implements UserService {
        private UserMapper userMapper;
        public void setUserMapper(UserMapper userMapper) {
            this.userMapper = userMapper;
        }
        public Date queryDateById(int id) {
            return userMapper.queryDateById(id);
        }
        public int updateNP(User user) {
            return userMapper.updateNP(user);
        }
        public User userLogin(User user) {
            return userMapper.userLogin(user);
        }
        public User queryUserById(int id) {
            return userMapper.queryUserById(id);
        }
        public int userRegister(User user) {
            return userMapper.userRegister(user);
        }
    }
    1. 4 adminServiceImpl
    public class AdminServiceImpl implements AdminService {
        private AdminMapper adminMapper;
        public void setAdminMapper(AdminMapper adminMapper) {
            this.adminMapper = adminMapper;
        }
        public List<User> queryUser() {
            return adminMapper.queryUser();
        }
        public int addUser(User user) {
            return adminMapper.addUser(user);
        }
        public int deleteUserById(int id) {
            return adminMapper.deleteUserById(id);
        }
        public int updateUser(User user) {
            return adminMapper.updateUser(user);
        }
        public User queryUserById(int id) { 
            return adminMapper.queryUserById(id); 
        }
        public User queryUserByName(String name) { 
            return adminMapper.queryUserByName(name); 
        }
        public Admin adminLogin(Admin admin) {
            return adminMapper.adminLogin(admin);
        }
        public int selectTotal() {
            return adminMapper.selectTotal();
        }
        public List<User> findAll() {
            return adminMapper.findAll();
        }
        public PageInfo<User> findByPage(int pageNum, int pageSize) {
            PageHelper.startPage(pageNum, pageSize);
            List<User> list = adminMapper.findAll();
            PageInfo<User> pageInfo = new PageInfo<>(list);
            return pageInfo;
        }
    }

Spring層

  • 配置Spring整合MyBatis,咱們這裏數據源使用c3p0鏈接池;

  • 編寫Spring整合Mybatis的相關的配置文件;

    spring-dao.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 配置整合mybatis -->
    <!-- 1.關聯數據庫文件 -->
    <context:property-placeholder location="classpath:database.properties"/>

    <!-- 2.數據庫鏈接池 -->
    <!--數據庫鏈接池
        dbcp 半自動化操做 不能自動鏈接
        c3p0 自動化操做(自動的加載配置文件 而且設置到對象裏面)
    -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <!-- 配置鏈接池屬性 -->
        <property name="driverClass" value="${jdbc.driver}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>

        <!-- c3p0鏈接池的私有屬性 -->
        <property name="maxPoolSize" value="30"/>
        <property name="minPoolSize" value="10"/>
        <!-- 關閉鏈接後不自動commit -->
        <property name="autoCommitOnClose" value="false"/>
        <!-- 獲取鏈接超時時間 -->
        <property name="checkoutTimeout" value="10000"/>
        <!-- 當獲取鏈接失敗重試次數 -->
        <property name="acquireRetryAttempts" value="2"/>
    </bean>

    <!-- 3.配置SqlSessionFactory對象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入數據庫鏈接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>

    <!-- 4.配置掃描Dao接口包,動態實現Dao接口注入到spring容器中 -->
    <!--解釋 :https://www.cnblogs.com/jpfss/p/7799806.html-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!-- 給出須要掃描Dao接口包 -->
        <property name="basePackage" value="com.cc.dao"/>
    </bean>
</beans>
  • Spring整合service層
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 掃描service相關的bean -->
    <context:component-scan base-package="com.cc.service" />
    <!--AdminServiceImpl注入到IOC容器中-->
    <bean id="AdminServiceImpl" class="com.cc.service.AdminServiceImpl">
        <property name="adminMapper" ref="adminMapper"/>
    </bean>
    <!--UserServiceImpl注入到IOC容器中-->
    <bean id="UserServiceImpl" class="com.cc.service.UserServiceImpl">
        <property name="userMapper" ref="userMapper"/>
    </bean>
    <!-- 配置事務管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入數據庫鏈接池 -->
        <property name="dataSource" ref="dataSource" />
    </bean>
</beans>

SpringMVC層

  • web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--DispatcherServlet-->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <!--必定要注意:咱們這裏加載的是總的配置文件,以前被這裏坑了!-->
            <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!--encodingFilter-->
    <filter>
        <filter-name>encodingFilter</filter-name>
        <filter-class>
            org.springframework.web.filter.CharacterEncodingFilter
        </filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>utf-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!--Session過時時間-->
    <session-config>
        <session-timeout>15</session-timeout>
    </session-config>
</web-app>
  • spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/context
   http://www.springframework.org/schema/context/spring-context.xsd
   http://www.springframework.org/schema/mvc
   https://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!-- 配置SpringMVC -->
    <!-- 1.開啓SpringMVC註解驅動 -->
    <mvc:annotation-driven>
    </mvc:annotation-driven>
    <!-- 2.靜態資源默認servlet配置-->
    <mvc:default-servlet-handler/>
    <!-- 3.配置jsp 顯示ViewResolver視圖解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
        <property name="prefix" value="/WEB-INF/jsp/" />
        <property name="suffix" value=".jsp" />
    </bean>
    <!-- 日期轉換 -->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="webBindingInitializer">
            <bean class="com.cc.utils.convertDate"/>
        </property>
    </bean>
    <!-- 4.掃描web相關的bean -->
    <context:component-scan base-package="com.cc.controller" />

</beans>
  • Spring配置整合文件,applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--3. 建立SqlSessionFactoryBean,注入鏈接池-->
    <bean class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <import resource="classpath:spring/spring-dao.xml"/>
    <import resource="classpath:spring/spring-service.xml"/>
    <import resource="classpath:spring/spring-mvc.xml"/>

</beans>

Controller&視圖層

  • UserController
package com.cc.controller;

import com.cc.pojo.User;
import com.cc.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    @Qualifier("UserServiceImpl")
    private UserService userService;

    @RequestMapping("/toLogin")
    public String toLoginUser(Model model,
                              HttpServletRequest request
                              ) {
        try {
            String username = request.getParameter("username");
            String password = request.getParameter("password");

            System.out.println(username+"  "+password);
            User user =new User();
            user.setUsername(username);
            user.setPassword(password);
            User users = userService.userLogin(user);
            if (users.getId() > 0) {
//            model.addAttribute("user", users);
                model.addAttribute("user", users);
                return "userMain";
            }
        } catch (Exception e) {
            model.addAttribute("error","Wrong username or password!");
            return "redirect:/";
        }
        return "redirect:/";
    }

    @ResponseBody
    @RequestMapping("/toLogintest")
    public String userLogin(String name,String pwd) {
        String msg = "Wrong username or password!";
        //模擬數據庫中存在數據
        if ((name != null) && (pwd != null)) {
            //        從數據庫檢索是否存在該用戶
            User user = new User();
            user.setUsername(name);
            user.setPassword(pwd);
            try {
                User users = userService.userLogin(user);
                if (users.getUsername().equals(name) && users.getPassword().equals(pwd)) {
                    msg = "Login Success";
                }
                return msg;
            }catch (Exception e){}
            return msg; //g
        }
        return msg;
    }

    @RequestMapping("/userBuy")
    public String userBuyCard(Model model,int id) throws ParseException {
        User user = userService.queryUserById(id);
        System.out.println(user);
        model.addAttribute("user",user );
        return "userMall";
    }
    @RequestMapping("/userMianPage")
    public String userMianPage(Model model,int id) throws ParseException {
        User user = userService.queryUserById(id);
        System.out.println(user);
        model.addAttribute("user",user );
        return "userMain";
    }
//    跳轉註冊頁面
    @RequestMapping("/toUserRegister")
    public String toAddPaper() {
        return "register";
    }
    //註冊
    @RequestMapping("/userRegister")
    public String registerUser(User user) throws ParseException {
        SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String date = sp.format(new Date());
        user.setBegintime(date);
        user.setEndtime(date);
        user.setRemainday(0);
        userService.userRegister(user);
        return "redirect:/user/toLogin";
    }
}
  • AdminController
package com.cc.controller;

import com.cc.pojo.Admin;
import com.cc.pojo.User;
import com.cc.service.AdminService;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

@Controller
@RequestMapping("/admin")
public class AdminController {
    @Autowired
    @Qualifier("AdminServiceImpl")
    private AdminService adminService;
    
    @RequestMapping("/toAddUser")
    public String toAddPaper() {
        return "register";
    }

    @RequestMapping("/addUser")
    public String addPaper(User user) throws ParseException {
        System.out.println(user);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // 日期格式
        Date date = dateFormat.parse(user.getBegintime()); // 指定日期
        Calendar cl = Calendar.getInstance();
        cl.setTime(date);
        cl.add(Calendar.DATE, user.getRemainday());
        String temp = "";
        temp = dateFormat.format(cl.getTime());
        user.setEndtime(temp);
        adminService.addUser(user);
        return "redirect:/admin/findByPage";
    }
    @RequestMapping("/toUpdateUser")
    public String toUpdateUser(Model model, int id) {
        User user = adminService.queryUserById(id);
        System.out.println(user);
        model.addAttribute("user",user );
        return "updateUser";
    }

    @RequestMapping("/updateUser")
    public String updateUser(Model model, User user) throws ParseException {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 日期格式
        Date date = dateFormat.parse(user.getBegintime()); // 指定日期
        Calendar cl = Calendar.getInstance();
        cl.setTime(date);
        int allday = user.getRemainday()+user.getAddday();
        cl.add(Calendar.DATE, allday);
        String temp = "";
        temp = dateFormat.format(cl.getTime());
        user.setEndtime(temp);
        user.setRemainday(allday);
        adminService.updateUser(user);
        User users = adminService.queryUserById(user.getId());
        model.addAttribute("user", users);
        return "redirect:/admin/findByPage";
    }
    @RequestMapping("/del/{userId}")
    public String deleteBook(@PathVariable("userId") int id) {
        adminService.deleteUserById(id);
        return "redirect:/admin/findByPage";
    }
    @RequestMapping("/toaLogin")
    public String toaLogin() {
        return "/aLogin";
    }
    @RequestMapping("/aLogin")
    public String toLoginUser(Admin admin) {
        System.out.println(admin.getUsername()+admin.getPassword());
        try {
            Admin admins = adminService.adminLogin(admin);
            if (admins.getId() > 0) {
//            model.addAttribute("user", users);
                return "redirect:/admin/findByPage";
            }
        }catch (Exception e){
            return "/aLogin";
        }
        return "/aLogin";
    }
@RequestMapping("/findAll")
public ModelAndView findAll() {
    //1.1 調用service
    List<User> list = adminService.findAll();
    //1.2 返回結果
    ModelAndView mv = new ModelAndView();
    mv.setViewName("order-list");
    mv.addObject("list", list);
    return mv;
}

    @RequestMapping("/findByPage")
    public String findByPage(Model model,
            @RequestParam(defaultValue = "1") int pageNum,
            @RequestParam(defaultValue = "11") int pageSize) {
        PageInfo<User> pageInfo = adminService.findByPage(pageNum, pageSize);
//        PageInfo pageInfo = adminService.findByPage(pageNum, pageSize);
        //1.1 調用service
        //1.2 返回結果
        model.addAttribute("list", pageInfo.getList());
        model.addAttribute("pageInfo", pageInfo);
        return "allUserPage";
    }
    @RequestMapping("/searchUser")
    public String searchUser(Model model, String name) {
        try {
            User user = adminService.queryUserByName(name);
            System.out.println(user);
            model.addAttribute("user", user);
            if (user.getName() == null) {
                return "redirect:/admin/findByPage";
            }
            return "updateUser";
        }catch (Exception e){
            return "redirect:/admin/findByPage";
        }
    }
//    商城
@RequestMapping("/buy")
public String buyCard() throws ParseException {
    return "mall";
}

}
視圖層

詳情見GitHub

拓展與展望

如下功能在之後可拓展開發

結束與總結

這個小Demo作了五六天,分頁那裏卡了接近兩天,無數的坑等着踩。

期間也體會到了編程的樂趣,天天晚上都肝的快快樂樂。

全部代碼放在GitHub供你們交流學習。

今天母親節呀,祝我媽媽母親節快樂! 晚安!

相關文章
相關標籤/搜索