基于SSM框架下的JAVA抽奖系统
每天记录学习,每天会有好心情。*^_^*
今天将为大家分析一个抽奖系统(本文为当今互联网界流行的在线抽奖系统应用设计了一套安全解决方案。该方案设计了在线抽奖系统的一般 Cookie 认证流程,给出了抽奖应用 Cookie 的一般组成形式和签名形式。推荐使用 HMAC 作为签名的实现形式,使得用户很难破解这种密钥联合签名算法。在交互过程中使用的关键敏感信息以 session 的形式存储于服务器端的数据库中,保证了用户不可篡改。该方案具有普遍性,可广泛应用于各种在线抽奖系统产品。),该项目使用框架为SSM(MYECLIPSE),选用开发工具为MYECLIPSE。抽奖系统为一个 后台项目。
为了完成该系统,我们首先需要对该系统进行需求分析。一个抽奖系统应包含用户角色有管理员、用户。为了能让用户顺利登陆系统完成相关操作,需要为每种登陆角色设置账户和密码字段。
总结得出该系统所有数据为:管理员(admin)、用户(yonghu)、抽奖(choujiang)
管理员表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 管理员id username | VARCHAR(255) | | 账号 password | VARCHAR(255) | | 密码
用户表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 用户id mingzi | VARCHAR(255) | | 名字 ujsername | VARCHAR(255) | | 账号 xingbie | VARCHAR(255) | | 性别 nianling | VARCHAR(255) | | 年龄
抽奖表
字段名 | 类型 | 属性 | 描述 id | INT(11) | PRIMARY KEY | 抽奖id jiangxiang | VARCHAR(255) | | 奖项 jiangpin | VARCHAR(255) | | 奖品 shuoming | VARCHAR(255) | | 说明 jibie | VARCHAR(255) | | 级别
SET FOREIGN_KEY_CHECKS=0; -- ---------------------------- -- ---------------------------- -- Table structure for ggchoujiang -- ---------------------------- DROP TABLE IF EXISTS `t_admin`; CREATE TABLE `t_admin` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '管理员id',`username` VARCHAR(255) DEFAULT NULL COMMENT '账号',`password` VARCHAR(255) DEFAULT NULL COMMENT '密码',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='管理员'; -- ---------------------------- DROP TABLE IF EXISTS `t_yonghu`; CREATE TABLE `t_yonghu` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',`mingzi` VARCHAR(255) DEFAULT NULL COMMENT '名字',`ujsername` VARCHAR(255) DEFAULT NULL COMMENT '账号',`xingbie` VARCHAR(255) DEFAULT NULL COMMENT '性别',`nianling` VARCHAR(255) DEFAULT NULL COMMENT '年龄',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='用户'; -- ---------------------------- DROP TABLE IF EXISTS `t_choujiang`; CREATE TABLE `t_choujiang` (`id` INT(11) NOT NULL AUTO_INCREMENT COMMENT '抽奖id',`jiangxiang` VARCHAR(255) DEFAULT NULL COMMENT '奖项',`jiangpin` VARCHAR(255) DEFAULT NULL COMMENT '奖品',`shuoming` VARCHAR(5000) DEFAULT NULL COMMENT '说明',`jibie` VARCHAR(255) DEFAULT NULL COMMENT '级别',PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='抽奖';
添加抽奖模块:
系统中存在添加抽奖功能,通过点击添加抽奖可以跳转到该功能模块,在该功能模块中,填写对应的抽奖信息。抽奖包含信息奖项,奖品,说明,级别,填写完所有信息后,通过post方法将数据提交到tianjiachoujiang.action中,该地址将在服务器中choujiangController类中的tianjiachoujiangact方法中进行响应。响应结果为,获取所有的抽奖信息,封装一个choujiang类,使用choujiangController类中定义的choujiangdao的insert方法,将抽奖数据插入到数据库的choujiang表中。并给出用户提示信息,添加抽奖成功,将该信息保存到request的message中,该信息将在页面中进行展示。该部分核心代码如下:
通过choujiangdao的insert方法将页面传输的抽奖添加到数据库中 choujiangdao.insert(choujiang);
将添加抽奖成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "添加抽奖成功");
返回抽奖管理界面
return "forward:/tianjiachoujiang.action";
查询抽奖模块:
在后台中定义抽奖查询模块,在侧边栏中点击抽奖管理,可以跳转到抽奖管理界面。在该页面中通过choujiangController中定义choujiangguanli响应抽奖查询模块。在choujiangguanli中查询出所有信息,返回页面进行循环展示。查询方法为choujiangdao中的selectByexample方法。该部分核心代码如下:
生成抽奖样例类,通过example定义查询条件 ChoujiangExample example = new ChoujiangExample();
通过choujiangdao的selectByExample方法查询出所有的抽奖信息 List choujiangall = choujiangdao.selectByExample(example);
将抽奖信息,保存到request中,在页面通过foreach方法进行展示 request.setAttribute("choujiangall", choujiangall);
返回抽奖管理界面
return "forward:/choujiangguanli.action";
修改抽奖模块:
点击修改按钮,可以跳转到抽奖修改页面。在抽奖修改页面中,将初始化该抽奖的所有信息,并将信息一一对应填充到对应编辑栏中。编辑完抽奖信息后,页面通过post方法将数据封装为一个抽奖实体,传入到choujiangController中。在xiugaichoujiang中进行接收,接收完毕后,调用choujiangMapper中的updateByPrimaryKeySelective方法进行修改。该部分代码如下:
通过choujiangdao的修改方法根据id修改对应的抽奖 choujiangdao.updateByPrimaryKeySelective(choujiang);
将修改抽奖成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "修改抽奖信息成功");
返回抽奖管理界面
return "forward:/choujiangguanli.action";
删除抽奖模块:
在管理页面中,点击删除。页面将通过a标签的href属性,使用get方法将该抽奖
的id上传到服务器中,在服务器中通过choujiangController类中的shanchuchoujiang进行接收,之后调用choujiangMapper中的deleteByPrimaryKey方法根据ID进行删除。将删除信息保存到request的message中,在页面给出用户删除成功的提示信息,该部分核心代码如下:
通过choujiangdao的删除方法根据id删除对应的抽奖 choujiangdao.deleteByPrimaryKey(id);
将删除抽奖成功信息,保存到request的message中,在页面中给出用户提示 request.setAttribute("message", "删除抽奖成功");
返回抽奖管理界面
return "forward:/choujiangguanli.action";
原文地址:https://www.cnblogs.com/lqs11/p/11598965.html
- Java并发编程
- 算法模板——线段树2(区间加+区间乘+区间求和)
- 1798: [Ahoi2009]Seq 维护序列seq
- 【LeetCode 389】 关关的刷题日记30 Find the Difference
- 1708: [Usaco2007 Oct]Money奶牛的硬币
- 1856: [Scoi2010]字符串
- 【LeetCode 409】 关关的刷题日记31Longest Palindrome
- Git的奇技淫巧?
- 3224: Tyvj 1728 普通平衡树
- 【LeetCode 136】 关关的刷题日记32 Single Number
- 1599: [Usaco2008 Oct]笨重的石子
- 【LeetCode 136】 关关的刷题日记33 Intersection of Two
- 1218: [HNOI2003]激光炸弹
- Java多线程高并发学习笔记(一)——Thread&Runnable
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Pwnhub Web题Classroom题解与分析
- WTForm的URLXSS谈开源组件的安全性
- 谈一谈复杂的正则表达式分析
- Linux 用户名、主机添加背景色
- percona-toolkit大表操作DDL使用 2.1. 数据库字符集修改2.2. 数据库建库、授权操作2.3. 数据库建表、插入数据4.1. 添加表字段【
- PHPMailer 代码执行漏洞(CVE-2016-10033)分析(含通用POC)
- linux 平均负载 load average 的含义【转】
- zookeeper-01 概述
- zookeeper-02 部署
- zookeeper-03 命令行操作
- java连接zookeeper服务器出现“KeeperErrorCode = ConnectionLoss for ...”
- Linux 内存使用率
- CentOS7.4下编译Hadoop-2.7.6
- VMware安装CentOS6
- VMware安装CentOS7 3.1 主机名修改3.2 网卡名修改3.3 ifconfig安装