基于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依赖

    <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供大家交流学习。

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

基于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. Three.js三维模型几何体旋转、缩放和平移

    创建场景中的三维模型往往需要设置显示大小.位置.角度,three.js提供了一系列网格模型对象的几何变换方法,从WebGL的角度看,旋转.缩放.平移对应的都是模型变换矩阵,关于矩阵变换内容可以观看本人 ...

  2. Daily Scrum 12/25/2015

    Process: Zhaoyang: Implement the Alex 50M model in the Caffe framework. Yandong: The Azure Back end ...

  3. 调用sleep后,我做了一个噩梦

    sleep系统调用 我是一个线程,生活在Linux帝国.一直以来辛勤工作,日子过得平平淡淡,可今天早上发生了一件事让我回想起来都后怕. 早上,我还是如往常一样执行着人类编写的代码指令,不多时走到了一个 ...

  4. Redis安装部署(一主二从三哨兵)

    需求:根据当前客户的生产环境,模拟安装部署Redis的测试环境,方便后续的功能测试. 1.准备工作 2.安装编译Redis 3.Redis运行环境配置 4.Redis启动和关闭 1.准备工作 Redi ...

  5. redis: 主从复制和哨兵模式(十三)

    redis 主从复制 最低要求是一主二从(一个主机和两个从机) 主机才能写 从机只能读 只要从机连接到主机 数据就会全量复制到从机 环境配置(同一台机器) 1:配置文件 redis.conf配置如下: ...

  6. 一个可能是世界上最全的 API 接口集合库开源项目

    对于程序员来说,为自己的程序选择一些合适的API并不是那么简单,有时候还会把你搞得够呛,今天猿妹要和大家分享一个开源项目,这个项目汇集了各种开发的api,涵盖了音乐.新闻.书籍.日历等,无论你是从事W ...

  7. Mysql链接查询

    连接查询--交叉连接将两张表的数据与另外一张表彼此交叉原理:1. 从第一张表一次取出每一条记录2. 取出每一条记录之后,与另外一张表的全部记录挨个匹配3. 没有任何匹配条件,所有的结果都会进行保留4. ...

  8. pytorch seq2seq闲聊机器人beam search返回结果

    decoder.py """ 实现解码器 """ import heapq import torch.nn as nn import con ...

  9. jdk1.7和jdk1.8在接口方面的改动

    1.JDK7及其之前,接口中都是抽象方法,且不能出现static方法 2.接口的变量都是public final static 全局静态常量,无变化 3.接口中可以添加非抽象方法(static),通过 ...

  10. 【JAVA基础】07 面向对象2

    1. 代码块的概述和分类 面试的时候会问,开发不用或者很少用 代码块概述 在Java中,使用 {} 括起来的代码被称为代码块. 代码块分类 根据其位置和声明的不同,可以分为局部代码块,构造代码块,静态 ...