SSM作品项目总结(游戏商店)

SSM作品项目总结(游戏商店)

一. 项目用到的技术

  • 语言:java,html + ajax,js
  • 工具:Intellij IDEA
  • 数据库可视化: navicat
  • web服务器:Tomcat
  • 框架:(jquery,bootstrap,Mybatis,Spring,SpringMvc)
  • 项目的管理和构建工具:Maven
  • 设计模式:MVC

二.项目主要功能

  • 用户登录
  • 用户注册
  • 游戏商店(公共界面)—— 分页查询
  • 用户可将其加入个人购物车
  • 用户提交订单
  • 查询游戏
  • 分类查询
  • 个人中心页面(个性签名,修改密码,个人信息查看)
  • 用户管理(修改权限,删除用户)
  • 游戏管理(增加游戏,修改游戏类型,修改游戏价格,增加游戏类型)
  • 点击注销

三.项目展示

  1. 登录页面在这里插入图片描述

  2. 注册页面在这里插入图片描述

  3. 普通用户界面
    在这里插入图片描述

  4. 个人中心页面在这里插入图片描述

  5. 游戏评论功能
    在这里插入图片描述

  6. 管理员界面
    在这里插入图片描述

  7. 增加游戏在这里插入图片描述

  8. 查询游戏(类型修改,价格修改)在这里插入图片描述

  9. 增加游戏类型在这里插入图片描述

  10. 用户管理(修改权限,删除用户)在这里插入图片描述

四.项目讲解

  1. 项目结构
    在这里插入图片描述

  2. 数据库表
    在这里插入图片描述

  3. maven依赖

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.example</groupId>
  <artifactId>SpringExample</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <dependencies>
    <!--spring相关-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.aspectj</groupId>
      <artifactId>aspectjweaver</artifactId>
      <version>1.8.7</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.0.5.RELEASE</version>
    </dependency>

    <!--servlet和jsp-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>

    <!--mybatis相关-->
    <!--Mybatis框架-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
    </dependency>
    <!--Spring集成Mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.1</version>
    </dependency>
    <!--mysql驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>
    <!--配置数据库连接池-->
    <dependency>
      <groupId>c3p0</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.1.2</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.62</version>
    </dependency>
    <!--pageHelper-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>3.7.5</version>
    </dependency>
    <dependency>
      <groupId>com.github.jsqlparser</groupId>
      <artifactId>jsqlparser</artifactId>
      <version>0.9.1</version>
    </dependency>

  </dependencies>

  <!--tomcat插件-->
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>80</port>
          <path>/</path>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

  1. 用户controller层
package com.controller;

import com.alibaba.fastjson.JSON;
import com.domain.User;
import com.service.UserService;
import com.sun.org.apache.xpath.internal.operations.Mod;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;

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

    @Resource(name = "userService")
    private UserService userService;

    //登录
    @RequestMapping("/login")
    public ModelAndView login(String username, String password, HttpSession session, String isRem, HttpServletResponse resp) {
        User user = userService.login(username, password);
        if(user == null){
            session.setAttribute("isLog",1);
            return new ModelAndView("redirect:/jsp/login.jsp");
        }
        if("1".equals(isRem)){
            Cookie c_username = new Cookie("username",username);
            Cookie c_password = new Cookie("password",password);
            c_username.setMaxAge(60*60*24*7);
            c_password.setMaxAge(60*60*24*7);
            resp.addCookie(c_username);
            resp.addCookie(c_password);
        }
        session.removeAttribute("isLog");
        session.setAttribute("user",user);
        return user.getIsRooter() == 1 ? new ModelAndView("redirect:/jsp/adminPage.jsp") : new ModelAndView("redirect:/jsp/mainPage.jsp");
    }

    //注册
    @RequestMapping("/register")
    public ModelAndView register(String username,String password,HttpSession session){
        User user = userService.login(username, password);
        if(user == null){
            session.removeAttribute("hasExist");
            userService.register(username, password);
            return new ModelAndView("redirect:/jsp/login.jsp");
        }else{
            session.setAttribute("hasExist",1);
            return new ModelAndView("register");
        }
    }

    //修改密码
    @RequestMapping("updateP")
    public void updatePassword(String newPassword,String prePassword,String userId,HttpServletResponse resp) throws IOException {
        userService.updatePassword(newPassword, prePassword,userId);
        resp.setContentType("text/json;charset=utf-8");
        resp.getWriter().write("修改密码成功");
    }

    //修改个性签名
    @RequestMapping("/updateS")
    public void updateSignal(String newSignal,String userId,HttpServletResponse resp,HttpSession session) throws IOException {
        userService.updateSignal(newSignal, userId);
        User user = userService.selectUserById(userId);
        session.setAttribute("user",user);
        resp.setContentType("text/json;charset=utf-8");
        resp.getWriter().write("修改个性签名成功");
    }

    //注销
    @RequestMapping("/logOut")
    public void logOut(HttpSession session,HttpServletResponse resp) throws IOException {
        session.removeAttribute("user");
        session.removeAttribute("isLog");
        resp.setContentType("text/json;charset=utf-8");
        resp.getWriter().write("注销成功");
    }

    @RequestMapping("/selectAllUser")
    public void selectAllUser (HttpServletResponse resp) throws IOException {
        List<User> users = userService.selectAllUser();
        String jsonString = JSON.toJSONString(users);
        resp.setContentType("text/json;charset=utf-8");
        resp.getWriter().write(jsonString);
    }

    @RequestMapping("/deleteUser")
    public void deleteUser (HttpServletResponse resp,String userName) throws IOException {
        userService.deleteUser(userName);
        resp.setContentType("text/json;charset=utf-8");
        resp.getWriter().write("delete successfully");
    }

    @RequestMapping("/updateRoot")
    public void updateRoot (HttpServletResponse resp,String isR,String userName) throws IOException {
        userService.updateRoot(isR,userName);
        resp.setContentType("text/json;charset=utf-8");
        resp.getWriter().write("update successfully");
    }
}

  1. 用户service层
package com.service.Impl;

import com.domain.User;
import com.mapper.UserMapper;
import com.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service("userService")
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    //登录
    public User login(String username, String password) {
        User user = userMapper.login(username, password);
        return user;
    }

    //注册
    public void register(String username, String password) {
        userMapper.register(username, password);
    }

    //修改密码
    public void updatePassword(String newPassword, String prePassword,String userId) {
        userMapper.updatePassword(newPassword, prePassword, userId);
    }

    //修改个性签名
    public void updateSignal(String newSignal, String userId) {
        userMapper.updateSignal(newSignal, userId);
    }

    //通过Id查询用户
    public User selectUserById(String userId) {
        return userMapper.selectUserById(userId);
    }

    public List<User> selectAllUser() {
        return userMapper.selectAllUser();
    }

    public void deleteUser(String  userName) {
        userMapper.deleteUser(userName);
    }

    public void updateRoot(String isR, String userName) {
        userMapper.updateRoot(isR, userName);
    }
}

  1. 用户mapper层
package com.mapper;

import com.domain.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;


public interface UserMapper {

    /**
     * 登录验证
     * @param username
     * @param password
     * @return
     */
    public User login(@Param("username") String username, @Param("password") String password);

    /**
     * 注册
     * @param username
     * @param password
     */
    @Insert("insert into user (username, password, is_rooter, is_delete,user_signal) values(#{username},#{password},0,0,'') ")
    public void register(@Param("username") String username, @Param("password") String password);

    /**
     * 修改密码
     * @param newPassword
     * @param prePassword
     */
    @Update("update user set password = #{newPassword} where password = #{prePassword} and id = #{userId}")
    public void updatePassword(@Param("newPassword") String newPassword,@Param("prePassword") String prePassword,@Param("userId") String userId);

    /**
     * 修改个性签名
     * @param newSignal
     * @param userId
     */
    @Update("update user set user_signal = #{newSignal} where id = #{userId}")
    public void updateSignal(@Param("newSignal") String newSignal, @Param("userId") String userId);

    /**
     * id查用户
     * @param userId
     * @return
     */
    public User selectUserById(@Param("userId") String userId);

    /**
     * 查询所有用户
      * @return
     */
    public List<User> selectAllUser();

    /**
     * 删除用户
     */
    @Update("update user set is_delete = 1 where username = #{userName}")
    public void deleteUser(@Param("userName") String userName);

    /**
     * 修改用户权限
     * @param userName
     */
    @Update("update user set is_rooter = #{isR} where username = #{userName}")
    public void updateRoot(@Param("isR") String isR, @Param("userName") String userName);

}

  1. 用户sql映射文件
<?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.mapper.UserMapper">

    <resultMap id="UserMap" type="user">
        <result column="is_delete" property="isDelete"></result>
        <result column="is_rooter" property="isRooter"></result>
        <result column="user_signal" property="userSignal"></result>
    </resultMap>

    <select id="login" resultMap="UserMap">
        select * from user where username = #{username} and password = #{password}
    </select>

    <select id="selectUserById" resultMap="UserMap">
        select * from user where id = #{userId}
    </select>

    <select id="selectAllUser" resultMap="UserMap">
        select * from user where is_delete = 0
    </select>


</mapper>
  1. 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.domain"></package>
    </typeAliases>

    <!--配置分页助手插件-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <property name="dialect" value="mysql"></property>
        </plugin>
    </plugins>

</configuration>
  1. Spring配置文件
<?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:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
">


    <!--组件扫描-->
    <context:component-scan base-package="com">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    <!--注入资料-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!--配置数据源-->
    <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}"/>
    </bean>

    <!--配置sessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <!--加载Mybatis核心配置文件-->
        <property name="configLocation" value="classpath:SqlMapConfig.xml"/>
    </bean>

    <!--扫描mapper所在的包 为mapper创建实现类-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.mapper"/>
    </bean>

    <!--平台事务管理器-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!--配置事务增强-->
    <tx:advice id="txAdvice">
        <tx:attributes>
            <tx:method name="*"/>
        </tx:attributes>
    </tx:advice>

    <!--事务的aop织入-->
    <aop:config>
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.service.Impl.*.*(..))"/>
    </aop:config>


</beans>
  1. SpringMvc核心配置文件
<?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 http://www.springframework.org/schema/mvc/spring-mvc.xsd
">
    <!--组件扫描-->
    <context:component-scan base-package="com.controller"/>

    <!--mvc注解驱动-->
    <mvc:annotation-driven/>
    <!--内部资源视图解析器-->
    <bean id="resourceViewResolver"  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
    <!--开发静态资源访问权限-->
    <mvc:default-servlet-handler/>

    <!--配置权限拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <mvc:exclude-mapping path="/user/login"/>
            <mvc:exclude-mapping path="/user/register"/>
            <bean class="com.interceptor.MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

</beans>
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值