基于SSM的健身房管理系统

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

谨以此片博文记录下我的第一个Java小Demo

代码请见GitHub

项目展示

用户登录页

用户注册页

用户主页

用户购买健身卡(商城)

管理员登录页

管理员主页

管理员添加用户页

管理员编辑用户页

细节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

设计该图的webProcessOn

其实这一步放在后面也合适,我为了让自己吃大饼,就先设计了一下。

环境配置

项目文件结构如图所示

基本步骤

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

  2. 导入pom依赖

    1. <dependencies>
    2. <!--Junit-->
    3. <dependency>
    4. <groupId>junit</groupId>
    5. <artifactId>junit</artifactId>
    6. <version>4.12</version>
    7. </dependency>
    8. <!--数据库驱动-->
    9. <dependency>
    10. <groupId>mysql</groupId>
    11. <artifactId>mysql-connector-java</artifactId>
    12. <version>5.1.47</version>
    13. </dependency>
    14. <!-- 数据库连接池 -->
    15. <dependency>
    16. <groupId>com.mchange</groupId>
    17. <artifactId>c3p0</artifactId>
    18. <version>0.9.5.2</version>
    19. </dependency>
    20. <!--Servlet - JSP -->
    21. <dependency>
    22. <groupId>javax.servlet</groupId>
    23. <artifactId>servlet-api</artifactId>
    24. <version>2.5</version>
    25. </dependency>
    26. <dependency>
    27. <groupId>javax.servlet.jsp</groupId>
    28. <artifactId>jsp-api</artifactId>
    29. <version>2.2</version>
    30. </dependency>
    31. <dependency>
    32. <groupId>javax.servlet</groupId>
    33. <artifactId>jstl</artifactId>
    34. <version>1.2</version>
    35. </dependency>
    36. <!--Mybatis-->
    37. <dependency>
    38. <groupId>org.mybatis</groupId>
    39. <artifactId>mybatis</artifactId>
    40. <version>3.5.2</version>
    41. </dependency>
    42. <dependency>
    43. <groupId>org.mybatis</groupId>
    44. <artifactId>mybatis-spring</artifactId>
    45. <version>2.0.2</version>
    46. </dependency>
    47. <!--Spring-->
    48. <dependency>
    49. <groupId>org.springframework</groupId>
    50. <artifactId>spring-webmvc</artifactId>
    51. <version>5.1.9.RELEASE</version>
    52. </dependency>
    53. <dependency>
    54. <groupId>org.springframework</groupId>
    55. <artifactId>spring-jdbc</artifactId>
    56. <version>5.1.9.RELEASE</version>
    57. </dependency>
    58. </dependencies>
  3. Maven资源过滤

    1. <build>
    2. <resources>
    3. <resource>
    4. <directory>src/main/java</directory>
    5. <includes>
    6. <include>**/*.properties</include>
    7. <include>**/*.xml</include>
    8. </includes>
    9. <filtering>false</filtering>
    10. </resource>
    11. <resource>
    12. <directory>src/main/resources</directory>
    13. <includes>
    14. <include>**/*.properties</include>
    15. <include>**/*.xml</include>
    16. </includes>
    17. <filtering>false</filtering>
    18. </resource>
    19. </resources>
    20. </build>
  4. 建立基本结构框架 如上所示[点此跳转](# 环境配置)

  5. 建立基本配置

    • mybatis-config.xml

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

      1. <?xml version="1.0" encoding="UTF-8"?>
      2. <beans xmlns="http://www.springframework.org/schema/beans"
      3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      4. xsi:schemaLocation="http://www.springframework.org/schema/beans
      5. http://www.springframework.org/schema/beans/spring-beans.xsd">
      6. </beans>
  6. Mybatis层编写

    • 数据库配置文件 database.properties

      1. jdbc.driver=com.mysql.jdbc.Driver
      2. jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8
      3. jdbc.username=root
      4. jdbc.password=123456IDEA关联数据库
    • IDEA关联数据库

    • 编写MyBatis的核心配置文件

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

POJO Mapper Services的编写

POJO

  1. User

    1. @Data //使用lombok插件即可省写get set
    2. @AllArgsConstructor
    3. @NoArgsConstructor
    4. public class User {
    5. private int id;
    6. private String username;
    7. private String password;
    8. private String name;
    9. private String sex;
    10. private String telephone;
    11. private int age;
    12. private String begintime;
    13. private String endtime;
    14. private int remainday;
    15. private int addday;
    16. public static void main(String[] args) {
    17. User u = new User();
    18. u.getTelephone();
    19. }
    20. }
  2. Admin

    1. @Data
    2. @NoArgsConstructor
    3. @AllArgsConstructor
    4. public class Admin {
    5. private int id;
    6. private String username;
    7. private String password;
    8. private String name;
    9. private String telephone;
    10. }

Mapper

  1. 编写DAO层的Mapper接口

    1. 1 userMapper
    1. public interface UserMapper {
    2. //通过id查询
    3. User queryUserById(int id);
    4. // 查询到期时间
    5. Date queryDateById(int id);
    6. //修改账号密码
    7. int updateNP(User user);
    8. //login
    9. User userLogin(User user);
    10. //会员注册
    11. int userRegister(User user);
    12. }
    1. 2 adminMapper

      1. @Mapper
      2. @Component
      3. public interface AdminMapper{
      4. //查询会员
      5. List<User> queryUser();
      6. //新增会员
      7. int addUser(User user);
      8. //删除会员
      9. int deleteUserById(int id);
      10. //更新会员
      11. int updateUser(User user);
      12. //根据id查询一个会员
      13. User queryUserById(int id);
      14. //根据姓名查询一个会员
      15. User queryUserByName(String name);
      16. //login
      17. Admin adminLogin(Admin admin);
      18. //查询用户总数
      19. int selectTotal();
      20. // 分页
      21. @Select("select * from gymms.user")
      22. @Results({
      23. // 用户信息,只要指定id列与属性的映射关系,其他列会自动封装(属性与列一致)
      24. @Result(property = "id", column = "id"),
      25. // 信息
      26. @Result(property = "id", column = "id"),
      27. @Result(property = "username", column = "username"),
      28. @Result(property = "password", column = "password"),
      29. @Result(property = "name", column = "name"),
      30. @Result(property = "sex", column = "sex"),
      31. @Result(property = "telephone", column = "telephone"),
      32. @Result(property = "age", column = "age"),
      33. @Result(property = "begintime", column = "begintime"),
      34. @Result(property = "endtime", column = "endtime"),
      35. @Result(property = "remainday", column = "remainday")
      36. })
      37. List<User> findAll();
      38. }
  2. 编写接口对应的 Mapper.xml 文件

    1. 1 userMapper.xml
    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="com.cc.dao.UserMapper">
    6. <select id="queryDate" resultType="User">
    7. select remainday from gymms.user
    8. where id = #{id}
    9. </select>
    10. <!-- 查询用户-->
    11. <select id="queryUserById" resultType="User">
    12. select * from gymms.user
    13. where id = #{id}
    14. </select>
    15. <!--更新User-->
    16. <update id="updateUser" parameterType="User">
    17. update gymms.user
    18. set username = #{username},password = #{password}
    19. where id = #{id}
    20. </update>
    21. <!--根据账号密码查询,返回一个User-->
    22. <select id="userLogin" resultType="User">
    23. select * from gymms.user
    24. where username = #{username} and password = #{password}
    25. </select>
    26. <!-- 会员注册-->
    27. <!--增加一个会员-->
    28. <insert id="userRegister" parameterType="User">
    29. insert into gymms.user(username,password,name,sex,telephone,age,begintime,endtime,remainday)
    30. values (#{username},#{password},#{name},#{sex},#{telephone},#{age},#{begintime},#{endtime},#{remainday})
    31. </insert>
    32. </mapper>
    1. 2 adminMapper.xml
    1. <?xml version="1.0" encoding="UTF-8" ?>
    2. <!DOCTYPE mapper
    3. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    4. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    5. <mapper namespace="com.cc.dao.AdminMapper">
    6. <!--增加一个会员-->
    7. <insert id="addUser" parameterType="User">
    8. insert into gymms.user(username,password,name,sex,telephone,age,begintime,endtime,remainday)
    9. values (#{username},#{password},#{name},#{sex},#{telephone},#{age},#{begintime},#{endtime},#{remainday})
    10. </insert>
    11. <!--根据id删除一个User-->
    12. <delete id="deleteUserById" parameterType="int">
    13. delete from gymms.user where id=#{id}
    14. </delete>
    15. <!--更新User-->
    16. <update id="updateUser" parameterType="User">
    17. update gymms.user
    18. set username = #{username},password = #{password},name = #{name},sex = #{sex},telephone = #{telephone},
    19. age = #{age},endtime = #{endtime},remainday = #{remainday}
    20. where id = #{id}
    21. </update>
    22. <!--根据id查询,返回一个User-->
    23. <select id="queryUserById" resultType="User">
    24. select * from gymms.user
    25. where id = #{id}
    26. </select>
    27. <!--根据姓名查询,返回一个User-->
    28. <select id="queryUserByName" resultType="User">
    29. select * from gymms.user
    30. where name = #{name}
    31. </select>
    32. <!--查询全部Book-->
    33. <select id="queryUser" resultType="User">
    34. SELECT * from gymms.user
    35. </select>
    36. <!--根据账号密码查询,返回一个Admin-->
    37. <select id="adminLogin" resultType="Admin">
    38. select * from gymms.admin
    39. where username = #{username} and password = #{password}
    40. </select>
    41. <select id="selectTotal" resultType="int">
    42. select count(*) from gymms.user
    43. </select>
    44. </mapper>
  3. 编写Service层的接口和实现类

    1. 1 userService
    1. public interface UserService {
    2. // 查询到期时间
    3. Date queryDateById(int id);
    4. //修改账号密码
    5. int updateNP(User user);
    6. //login
    7. User userLogin(User user);
    8. //通过id查询
    9. User queryUserById(int id);
    10. //会员注册
    11. int userRegister(User user);
    12. }
    1. 2 adminService
    1. public interface AdminService {
    2. //查询会员
    3. List<User> queryUser();
    4. //新增会员
    5. int addUser(User user);
    6. //删除会员
    7. int deleteUserById(int id);
    8. //更新会员
    9. int updateUser(User user);
    10. //根据id查询一个会员
    11. User queryUserById(int id);
    12. //根据姓名查询一个会员
    13. User queryUserByName(String name);
    14. //login
    15. Admin adminLogin(Admin admin);
    16. //查询用户总数
    17. int selectTotal();
    18. // 分页
    19. List<User> findAll();
    20. /**
    21. * 分页查询
    22. * @param pageNum 当然页
    23. * @param pageSize 页大小
    24. * @return 返回PageHelper提供的封装分页参数的PageInfo对象
    25. */
    26. PageInfo<User> findByPage(int pageNum, int pageSize);
    27. }
    1. 3 userServiceImpl
    1. public class UserServiceImpl implements UserService {
    2. private UserMapper userMapper;
    3. public void setUserMapper(UserMapper userMapper) {
    4. this.userMapper = userMapper;
    5. }
    6. public Date queryDateById(int id) {
    7. return userMapper.queryDateById(id);
    8. }
    9. public int updateNP(User user) {
    10. return userMapper.updateNP(user);
    11. }
    12. public User userLogin(User user) {
    13. return userMapper.userLogin(user);
    14. }
    15. public User queryUserById(int id) {
    16. return userMapper.queryUserById(id);
    17. }
    18. public int userRegister(User user) {
    19. return userMapper.userRegister(user);
    20. }
    21. }
    1. 4 adminServiceImpl
    1. public class AdminServiceImpl implements AdminService {
    2. private AdminMapper adminMapper;
    3. public void setAdminMapper(AdminMapper adminMapper) {
    4. this.adminMapper = adminMapper;
    5. }
    6. public List<User> queryUser() {
    7. return adminMapper.queryUser();
    8. }
    9. public int addUser(User user) {
    10. return adminMapper.addUser(user);
    11. }
    12. public int deleteUserById(int id) {
    13. return adminMapper.deleteUserById(id);
    14. }
    15. public int updateUser(User user) {
    16. return adminMapper.updateUser(user);
    17. }
    18. public User queryUserById(int id) {
    19. return adminMapper.queryUserById(id);
    20. }
    21. public User queryUserByName(String name) {
    22. return adminMapper.queryUserByName(name);
    23. }
    24. public Admin adminLogin(Admin admin) {
    25. return adminMapper.adminLogin(admin);
    26. }
    27. public int selectTotal() {
    28. return adminMapper.selectTotal();
    29. }
    30. public List<User> findAll() {
    31. return adminMapper.findAll();
    32. }
    33. public PageInfo<User> findByPage(int pageNum, int pageSize) {
    34. PageHelper.startPage(pageNum, pageSize);
    35. List<User> list = adminMapper.findAll();
    36. PageInfo<User> pageInfo = new PageInfo<>(list);
    37. return pageInfo;
    38. }
    39. }

Spring层

  • 配置Spring整合MyBatis,我们这里数据源使用c3p0连接池;

  • 编写Spring整合Mybatis的相关的配置文件;

    spring-dao.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/context
  8. https://www.springframework.org/schema/context/spring-context.xsd">
  9. <!-- 配置整合mybatis -->
  10. <!-- 1.关联数据库文件 -->
  11. <context:property-placeholder location="classpath:database.properties"/>
  12. <!-- 2.数据库连接池 -->
  13. <!--数据库连接池
  14. dbcp 半自动化操作 不能自动连接
  15. c3p0 自动化操作(自动的加载配置文件 并且设置到对象里面)
  16. -->
  17. <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
  18. <!-- 配置连接池属性 -->
  19. <property name="driverClass" value="${jdbc.driver}"/>
  20. <property name="jdbcUrl" value="${jdbc.url}"/>
  21. <property name="user" value="${jdbc.username}"/>
  22. <property name="password" value="${jdbc.password}"/>
  23. <!-- c3p0连接池的私有属性 -->
  24. <property name="maxPoolSize" value="30"/>
  25. <property name="minPoolSize" value="10"/>
  26. <!-- 关闭连接后不自动commit -->
  27. <property name="autoCommitOnClose" value="false"/>
  28. <!-- 获取连接超时时间 -->
  29. <property name="checkoutTimeout" value="10000"/>
  30. <!-- 当获取连接失败重试次数 -->
  31. <property name="acquireRetryAttempts" value="2"/>
  32. </bean>
  33. <!-- 3.配置SqlSessionFactory对象 -->
  34. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  35. <!-- 注入数据库连接池 -->
  36. <property name="dataSource" ref="dataSource"/>
  37. <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
  38. <property name="configLocation" value="classpath:mybatis-config.xml"/>
  39. </bean>
  40. <!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 -->
  41. <!--解释 :https://www.cnblogs.com/jpfss/p/7799806.html-->
  42. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  43. <!-- 注入sqlSessionFactory -->
  44. <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
  45. <!-- 给出需要扫描Dao接口包 -->
  46. <property name="basePackage" value="com.cc.dao"/>
  47. </bean>
  48. </beans>
  • Spring整合service层
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xsi:schemaLocation="http://www.springframework.org/schema/beans
  6. http://www.springframework.org/schema/beans/spring-beans.xsd
  7. http://www.springframework.org/schema/context
  8. http://www.springframework.org/schema/context/spring-context.xsd">
  9. <!-- 扫描service相关的bean -->
  10. <context:component-scan base-package="com.cc.service" />
  11. <!--AdminServiceImpl注入到IOC容器中-->
  12. <bean id="AdminServiceImpl" class="com.cc.service.AdminServiceImpl">
  13. <property name="adminMapper" ref="adminMapper"/>
  14. </bean>
  15. <!--UserServiceImpl注入到IOC容器中-->
  16. <bean id="UserServiceImpl" class="com.cc.service.UserServiceImpl">
  17. <property name="userMapper" ref="userMapper"/>
  18. </bean>
  19. <!-- 配置事务管理器 -->
  20. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  21. <!-- 注入数据库连接池 -->
  22. <property name="dataSource" ref="dataSource" />
  23. </bean>
  24. </beans>

SpringMVC层

  • web.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  5. version="4.0">
  6. <!--DispatcherServlet-->
  7. <servlet>
  8. <servlet-name>DispatcherServlet</servlet-name>
  9. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  10. <init-param>
  11. <param-name>contextConfigLocation</param-name>
  12. <!--一定要注意:我们这里加载的是总的配置文件,之前被这里坑了!-->
  13. <param-value>classpath:applicationContext.xml</param-value>
  14. </init-param>
  15. <load-on-startup>1</load-on-startup>
  16. </servlet>
  17. <servlet-mapping>
  18. <servlet-name>DispatcherServlet</servlet-name>
  19. <url-pattern>/</url-pattern>
  20. </servlet-mapping>
  21. <!--encodingFilter-->
  22. <filter>
  23. <filter-name>encodingFilter</filter-name>
  24. <filter-class>
  25. org.springframework.web.filter.CharacterEncodingFilter
  26. </filter-class>
  27. <init-param>
  28. <param-name>encoding</param-name>
  29. <param-value>utf-8</param-value>
  30. </init-param>
  31. </filter>
  32. <filter-mapping>
  33. <filter-name>encodingFilter</filter-name>
  34. <url-pattern>/*</url-pattern>
  35. </filter-mapping>
  36. <!--Session过期时间-->
  37. <session-config>
  38. <session-timeout>15</session-timeout>
  39. </session-config>
  40. </web-app>
  • spring-mvc.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/beans
  7. http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context
  9. http://www.springframework.org/schema/context/spring-context.xsd
  10. http://www.springframework.org/schema/mvc
  11. https://www.springframework.org/schema/mvc/spring-mvc.xsd">
  12. <!-- 配置SpringMVC -->
  13. <!-- 1.开启SpringMVC注解驱动 -->
  14. <mvc:annotation-driven>
  15. </mvc:annotation-driven>
  16. <!-- 2.静态资源默认servlet配置-->
  17. <mvc:default-servlet-handler/>
  18. <!-- 3.配置jsp 显示ViewResolver视图解析器 -->
  19. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  20. <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
  21. <property name="prefix" value="/WEB-INF/jsp/" />
  22. <property name="suffix" value=".jsp" />
  23. </bean>
  24. <!-- 日期转换 -->
  25. <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
  26. <property name="webBindingInitializer">
  27. <bean class="com.cc.utils.convertDate"/>
  28. </property>
  29. </bean>
  30. <!-- 4.扫描web相关的bean -->
  31. <context:component-scan base-package="com.cc.controller" />
  32. </beans>
  • Spring配置整合文件,applicationContext.xml
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6. <!--3. 创建SqlSessionFactoryBean,注入连接池-->
  7. <bean class="org.mybatis.spring.SqlSessionFactoryBean">
  8. <property name="dataSource" ref="dataSource"></property>
  9. </bean>
  10. <import resource="classpath:spring/spring-dao.xml"/>
  11. <import resource="classpath:spring/spring-service.xml"/>
  12. <import resource="classpath:spring/spring-mvc.xml"/>
  13. </beans>

Controller&视图层

  • UserController
  1. package com.cc.controller;
  2. import com.cc.pojo.User;
  3. import com.cc.service.UserService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.beans.factory.annotation.Qualifier;
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.ui.Model;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RequestParam;
  10. import org.springframework.web.bind.annotation.ResponseBody;
  11. import org.springframework.web.bind.annotation.RestController;
  12. import org.springframework.web.servlet.ModelAndView;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;
  15. import java.text.ParseException;
  16. import java.text.SimpleDateFormat;
  17. import java.util.Date;
  18. @Controller
  19. @RequestMapping("/user")
  20. public class UserController {
  21. @Autowired
  22. @Qualifier("UserServiceImpl")
  23. private UserService userService;
  24. @RequestMapping("/toLogin")
  25. public String toLoginUser(Model model,
  26. HttpServletRequest request
  27. ) {
  28. try {
  29. String username = request.getParameter("username");
  30. String password = request.getParameter("password");
  31. System.out.println(username+" "+password);
  32. User user =new User();
  33. user.setUsername(username);
  34. user.setPassword(password);
  35. User users = userService.userLogin(user);
  36. if (users.getId() > 0) {
  37. // model.addAttribute("user", users);
  38. model.addAttribute("user", users);
  39. return "userMain";
  40. }
  41. } catch (Exception e) {
  42. model.addAttribute("error","Wrong username or password!");
  43. return "redirect:/";
  44. }
  45. return "redirect:/";
  46. }
  47. @ResponseBody
  48. @RequestMapping("/toLogintest")
  49. public String userLogin(String name,String pwd) {
  50. String msg = "Wrong username or password!";
  51. //模拟数据库中存在数据
  52. if ((name != null) && (pwd != null)) {
  53. // 从数据库检索是否存在该用户
  54. User user = new User();
  55. user.setUsername(name);
  56. user.setPassword(pwd);
  57. try {
  58. User users = userService.userLogin(user);
  59. if (users.getUsername().equals(name) && users.getPassword().equals(pwd)) {
  60. msg = "Login Success";
  61. }
  62. return msg;
  63. }catch (Exception e){}
  64. return msg; //g
  65. }
  66. return msg;
  67. }
  68. @RequestMapping("/userBuy")
  69. public String userBuyCard(Model model,int id) throws ParseException {
  70. User user = userService.queryUserById(id);
  71. System.out.println(user);
  72. model.addAttribute("user",user );
  73. return "userMall";
  74. }
  75. @RequestMapping("/userMianPage")
  76. public String userMianPage(Model model,int id) throws ParseException {
  77. User user = userService.queryUserById(id);
  78. System.out.println(user);
  79. model.addAttribute("user",user );
  80. return "userMain";
  81. }
  82. // 跳转注册页面
  83. @RequestMapping("/toUserRegister")
  84. public String toAddPaper() {
  85. return "register";
  86. }
  87. //注册
  88. @RequestMapping("/userRegister")
  89. public String registerUser(User user) throws ParseException {
  90. SimpleDateFormat sp = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  91. String date = sp.format(new Date());
  92. user.setBegintime(date);
  93. user.setEndtime(date);
  94. user.setRemainday(0);
  95. userService.userRegister(user);
  96. return "redirect:/user/toLogin";
  97. }
  98. }
  • AdminController
  1. package com.cc.controller;
  2. import com.cc.pojo.Admin;
  3. import com.cc.pojo.User;
  4. import com.cc.service.AdminService;
  5. import com.github.pagehelper.PageInfo;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.beans.factory.annotation.Qualifier;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.ui.Model;
  10. import org.springframework.web.bind.annotation.PathVariable;
  11. import org.springframework.web.bind.annotation.RequestMapping;
  12. import org.springframework.web.bind.annotation.RequestParam;
  13. import org.springframework.web.servlet.ModelAndView;
  14. import java.text.ParseException;
  15. import java.text.SimpleDateFormat;
  16. import java.util.Calendar;
  17. import java.util.Date;
  18. import java.util.List;
  19. @Controller
  20. @RequestMapping("/admin")
  21. public class AdminController {
  22. @Autowired
  23. @Qualifier("AdminServiceImpl")
  24. private AdminService adminService;
  25. @RequestMapping("/toAddUser")
  26. public String toAddPaper() {
  27. return "register";
  28. }
  29. @RequestMapping("/addUser")
  30. public String addPaper(User user) throws ParseException {
  31. System.out.println(user);
  32. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); // 日期格式
  33. Date date = dateFormat.parse(user.getBegintime()); // 指定日期
  34. Calendar cl = Calendar.getInstance();
  35. cl.setTime(date);
  36. cl.add(Calendar.DATE, user.getRemainday());
  37. String temp = "";
  38. temp = dateFormat.format(cl.getTime());
  39. user.setEndtime(temp);
  40. adminService.addUser(user);
  41. return "redirect:/admin/findByPage";
  42. }
  43. @RequestMapping("/toUpdateUser")
  44. public String toUpdateUser(Model model, int id) {
  45. User user = adminService.queryUserById(id);
  46. System.out.println(user);
  47. model.addAttribute("user",user );
  48. return "updateUser";
  49. }
  50. @RequestMapping("/updateUser")
  51. public String updateUser(Model model, User user) throws ParseException {
  52. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 日期格式
  53. Date date = dateFormat.parse(user.getBegintime()); // 指定日期
  54. Calendar cl = Calendar.getInstance();
  55. cl.setTime(date);
  56. int allday = user.getRemainday()+user.getAddday();
  57. cl.add(Calendar.DATE, allday);
  58. String temp = "";
  59. temp = dateFormat.format(cl.getTime());
  60. user.setEndtime(temp);
  61. user.setRemainday(allday);
  62. adminService.updateUser(user);
  63. User users = adminService.queryUserById(user.getId());
  64. model.addAttribute("user", users);
  65. return "redirect:/admin/findByPage";
  66. }
  67. @RequestMapping("/del/{userId}")
  68. public String deleteBook(@PathVariable("userId") int id) {
  69. adminService.deleteUserById(id);
  70. return "redirect:/admin/findByPage";
  71. }
  72. @RequestMapping("/toaLogin")
  73. public String toaLogin() {
  74. return "/aLogin";
  75. }
  76. @RequestMapping("/aLogin")
  77. public String toLoginUser(Admin admin) {
  78. System.out.println(admin.getUsername()+admin.getPassword());
  79. try {
  80. Admin admins = adminService.adminLogin(admin);
  81. if (admins.getId() > 0) {
  82. // model.addAttribute("user", users);
  83. return "redirect:/admin/findByPage";
  84. }
  85. }catch (Exception e){
  86. return "/aLogin";
  87. }
  88. return "/aLogin";
  89. }
  90. @RequestMapping("/findAll")
  91. public ModelAndView findAll() {
  92. //1.1 调用service
  93. List<User> list = adminService.findAll();
  94. //1.2 返回结果
  95. ModelAndView mv = new ModelAndView();
  96. mv.setViewName("order-list");
  97. mv.addObject("list", list);
  98. return mv;
  99. }
  100. @RequestMapping("/findByPage")
  101. public String findByPage(Model model,
  102. @RequestParam(defaultValue = "1") int pageNum,
  103. @RequestParam(defaultValue = "11") int pageSize) {
  104. PageInfo<User> pageInfo = adminService.findByPage(pageNum, pageSize);
  105. // PageInfo pageInfo = adminService.findByPage(pageNum, pageSize);
  106. //1.1 调用service
  107. //1.2 返回结果
  108. model.addAttribute("list", pageInfo.getList());
  109. model.addAttribute("pageInfo", pageInfo);
  110. return "allUserPage";
  111. }
  112. @RequestMapping("/searchUser")
  113. public String searchUser(Model model, String name) {
  114. try {
  115. User user = adminService.queryUserByName(name);
  116. System.out.println(user);
  117. model.addAttribute("user", user);
  118. if (user.getName() == null) {
  119. return "redirect:/admin/findByPage";
  120. }
  121. return "updateUser";
  122. }catch (Exception e){
  123. return "redirect:/admin/findByPage";
  124. }
  125. }
  126. // 商城
  127. @RequestMapping("/buy")
  128. public String buyCard() throws ParseException {
  129. return "mall";
  130. }
  131. }
视图层

详情见GitHub

拓展与展望

以下功能在以后可拓展开发

结束与总结

这个小Demo做了五六天,分页那里卡了接近两天,无数的坑等着踩。

期间也体会到了编程的乐趣,每天晚上都肝的快快乐乐。

所有代码放在GitHub供大家交流学习。

今天母亲节呀,祝我妈妈母亲节快乐! 晚安!

基于SSM的健身房管理系统的更多相关文章

  1. 基于ssm的客户管理系统

    查看更多系统:系统大全,课程设计.毕业设计,请点击这里查看 01 概述 一个简单的客户关系管理系统 管理用户的基本数据 客户的分配 客户的流失 已经客户的状态 02 技术 ssm + jdk1.8 + ...

  2. 基于SSM的租赁管理系统0.1_20161225_项目需求

    基于SSM的汽车租赁系统项目计划书 1.产品定位 本系统供提供租赁服务的企业内部使用,供企业员工进行线下操作. 2.需求分析 2.1 能为工作人员提供员工信息的管理功能,具有RBAC基于角色的权限管理 ...

  3. 基于SSM小区物业管理系统

    随着计算机的不断发展和广泛应用,人们的工作效率得到不断的提高.互联网的发展,更是缩短了人们之间的距离.如何充分利用互联网,这是大家共同关心的问题.本文主要介绍了关于小区管理系统的实现方法,设计规划了小 ...

  4. 基于SSM的租赁管理系统1.0_20161225_框架搭建

    搭建SSM底层框架 1. 利用mybatis反向工程generatorSqlmapCustom完成对数据库十表的映射 generatorConfig.xml <?xml version=&quo ...

  5. 计算机毕业设计项目-基于SSM的学生会管理系统-基于ssm的社团信息管理系统

    注意:该项目只展示部分功能,如需了解,评论区咨询即可. 1.开发环境 开发语言:Java 后台框架:SSM 前端技术:HTML+CSS+JavaScript+Bootstrap+jQuery 数据库: ...

  6. 基于SSM的租赁管理系统0.3_20161225_数据库设计

    数据库设计 1. 概念模型 2. 类模型 3. 生成SQL use test; /*========================================================== ...

  7. 基于SSM的租赁管理系统0.2_20161225_开发环境

    项目环境搭建 1. 开发环境 Sybase PowerDesigner 15.1.0 + MySQL 5.7.15 + Navicat 11.0.9 + eclipse EE Mars 2.0 + F ...

  8. 基于SSM的crm管理系统

    学完crm后的第一个项目实践,前端样式与标签库都是现成的. 开发环境 eclipse,mysql,jdk1.7 项目架构 整合思路 Dao层: 1.SqlMapConfig.xml,添加别名,但是需要 ...

  9. 基于SSM实现的简易员工管理系统

    之前自学完了JAVA基础,一直以来也没有做什么好玩的项目,最近暑假,时间上比较空闲,所以又学习了一下最近在企业实际应用中比较流行的SSM框架,以此为基础,通过网络课程,学习编写了一个基于SSM实现的M ...

随机推荐

  1. 大佬整理出来的干货:LDA模型实现—Python文本挖掘

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取htt ...

  2. L16 LeNet

    **本小节用到的数据下载 1.涉及语句 import d2lzh1981 as d2l 数据1 : d2lzh1981 链接:https://pan.baidu.com/s/1LyaZ84Q4M75G ...

  3. stand up meeting 12/2/2015

    part 组员 今日工作 工作耗时/h 明日计划 工作耗时/h UI 冯晓云  将logic部分提供的delete接口接入,与logic,数据库部分沟通实现了add/delete按钮的复用:解决UI部 ...

  4. CISCN love_math和roarctf的easy_clac学习分析

    Love_math 题目源码: <?php error_reporting(0); //听说你很喜欢数学,不知道你是否爱它胜过爱flag if(!isset($_GET['c'])){ show ...

  5. BUUOJ [WUSTCTF2020]朴实无华

    [WUSTCTF2020]朴实无华 复现了武科大的一道题/// 进入界面 一个hack me 好吧,直接看看有没有robot.txt 哦豁,还真有 好吧 fAke_f1agggg.php 看了里面,然 ...

  6. golang实现并发爬虫二(简单调度器)

    上篇文章当中实现了单任务版爬虫. 那么这篇文章就大概说下,如何在上一个版本中进行升级改造,使之成为一个多任务版本的爬虫.加快我们爬取的速度. 话不多说,先看图: 其实呢,实现方法就是加了一个sched ...

  7. mysql 更改默认字符集

    mysql 默认字符集概述 首先,MySQL的字符集问题主要是两个概念: haracter Sets Collations 前者是字符内容及编码,后者是对前者进行比较操作的一些规则.这两个参数集可以在 ...

  8. Trie树-提高海量数据的模糊查询性能

    今天这篇文章源于上周在工作中解决的一个实际问题,它是个比较普遍的问题,无论做什么开发,估计都有遇到过.具体是这样的,我们有一份高校的名单(2657个),需要从海量的文章标题中找到包含这些高校的标题,其 ...

  9. 每天都在用,但你知道 Tomcat 的线程池有多努力吗?

    这是why的第 45 篇原创文章.说点不一样的线程池执行策略和线程拒绝策略,探讨怎么让线程池先用完最大线程池再把任务放到队列中. 荒腔走板 大家好,我是 why,一个四川程序猿,成都好男人. 先是本号 ...

  10. C#多线程(12):线程池

    目录 线程池 ThreadPool 常用属性和方法 线程池说明和示例 线程池线程数 线程池线程数说明 不支持的线程池异步委托 任务取消功能 计时器 线程池 线程池全称为托管线程池,线程池受 .NET ...