一、系统简介
本项目采用eclipse工具开发,spring+springmvc+mybatis+bootstrapt技术编写,数据库采用的是mysql,navicat管理工具。
系统一共分为2个角色分别是:管理员,普通用户
二、模块简介
管理员
1、登录
2、用户管理
3、鲜花植物类型管理
4、鲜花植物管理
5、收货地址管理
6、评论管理
7、系统消息管理
8、订单管理
用户
1、登录注册
2、浏览信息
3、收藏商品
4、加入购物车
5、收货地址管理
6、评论商品
7、购买,充值
8、个人信息管理
9、查看新闻
10、查看订单
项目简介
项目类型:Java EE项目(SSM框架)
项目名称:基于SSM的宿舍管理系统(flower_ssm)
难度等级:✩✩✩
用户类型:双角色(用户、管理员)
设计模式:MVC
项目架构:B/S架构
开发语言:Java语言
前端技术:bootstrap、HTML、CSS、JS、JQuery等
后端技术:JSP、SSM框架
运行环境:Windows10、JDK1.8
运行工具:本系统采用Eclipse开发,仅支持Eclipse运行,不支持MyEclipse和IDEA运行,因为三者的骨架不一样,强行导入打开运行可能会导致出现未知的错误。(如若想用idea运行,需要转换!!!!)
数 据 库:MySQL5.5/5.7/8.0版本
运行服务器:Tomcat7.0/8.0/8.5/9.0等版本
是否基于Maven环境:否
是否采用框架:是
数据库表数量:11张表
JSP页面数量:30张左右
是否有分页:有分页
是否有代码注释:有
项目截图
项目结构
数据库
登录注册
用户管理
鲜花管理
前台首页
购物大厅
购物车
商品详情
评论信息
收藏
我的订单
相关代码
登录代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<jsp:include page="/WEB-INF/view/header.jsp"/>
<body>
<div class="row lyear-wrapper">
<div class="lyear-login">
<div class="login-center">
<div class="login-header text-center">
<a > 登录</a>
</div>
<form >
<div class="form-group has-feedback feedback-left">
<input type="text" placeholder="请输入用户名" class="form-control" name="username" id="username" />
<span class="mdi mdi-account form-control-feedback" aria-hidden="true"> </span>
<span id="msg" style="color:red;"></span>
</div>
<div class="form-group has-feedback feedback-left">
<input type="password" placeholder="请输入密码" class="form-control" id="password" name="password" />
<span class="mdi mdi-lock form-control-feedback" aria-hidden="true"></span>
<span id="msg2" style="color:red;"></span>
</div>
<div class="form-group has-feedback feedback-left row">
<div class="col-xs-12">
<select class="form-control" id="type" name="type" size="1">
<option value="1">管理员</option>
<option value="2">用户</option>
</select>
</div>
</div>
<font color="red">${message}</font>
<div class="form-group"><!-- onclick="location.href='index.html'" -->
<button class="btn btn-block btn-primary" type="button" id="login" >立即登录</button>
</div>
</form>
<a class="btn btn-block btn-primary" type="button" href="toRegister" >去注册</a>
<hr>
<footer class="col-sm-12 text-center">
</footer>
</div>
</div>
</div>
<script type="text/javascript">
layui.use(['layer', 'form','jquery'], function(){
var layer = layui.layer
,form = layui.form
,jquery=layui.jquery;
$("#login").on("click", function() {
var username = $("#username").val().trim(); // trim()去除空格
var password = $("#password").val().trim();
var type = $("#type").val();
if(!username) {
$("#msg").html("用户名不能为空!");
$("#username").focus(); // 聚焦
return false;
} else {
if(!password) {
$("#msg").html("密码不能为空!");
$("#password").focus(); // 聚焦
return false;
} else {
$("#msg").html("");
}
}
$.ajax({
type: "post", // post或get
url: "login", // 提交路径
data: {
username: username,
password: password,
type:type,
},
// dataType: "json", // 指定后台传来的数据是json格式
success: function(data) {
if (data == "ok") {
layer.msg('登陆成功!', {icon: 6});
// 延迟跳转
window.setTimeout("window.location='toMain'",900);
} else if(data == 'toIndex'){
layer.msg('登陆成功!', {icon: 6});
window.setTimeout("window.location='toIndex'",900);
}else if(data=="error"){
layer.tips('账号或密码错误!', '#login', {
tips: [2, '#FF5722'],
time: 4000
});
}
},
error: function(err) {}
})
})
});
</script>
</body>
</html>
@RequestMapping("/login")
@ResponseBody
public String login(@RequestParam("username")String username,
HttpServletRequest request,@RequestParam("password")String password,
HttpSession session,HttpServletResponse response,ModelAndView mv) throws ServletException, IOException {
session.removeAttribute("admin");
session.removeAttribute("user");
String type=request.getParameter("type").toString();
User user =new User();
Admin admin = new Admin();
request.getSession().setAttribute("type", type);
String message = "error";
if(type != null && type.equals("1")){
admin.setUsername(username);
admin.setPassword(password);
Admin admin1 = us.selectAdmin(admin);
if(admin1 != null){
//mv.addObject("admin", admin);
request.getSession().setAttribute("admin", admin);
message = "ok";
//mv.setViewName("view/main");
}
}else if(type != null && type.equals("2")){
user.setUsername(username);
user.setPassword(password);
User te = us.selectUser(user);
if(te != null){
request.getSession().setAttribute("user", te);
message = "toIndex";
//mv.setViewName("view/main");
}
}
return message;
}
注册代码
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:include page="/WEB-INF/view/header.jsp"/>
<body>
<div class="row lyear-wrapper">
<div class="lyear-login">
<div class="login-center">
<div class="login-header text-center">
<a > <h4 style="color: #15c377;">注册</h4></a>
</div>
<form id="saveForm" method="post" >
<div class="form-group has-feedback feedback-left">
<input type="text" placeholder="请输入用户名" class="form-control" name="username" id="username" />
<span class="mdi mdi-account form-control-feedback" aria-hidden="true"> </span>
<span class="msg" style="color:red;"> ${requestScope.msg}</span>
</div>
<div class="form-group has-feedback feedback-left">
<input type="text" placeholder="请输入真实姓名" class="form-control" id="realName" name="realName" />
<span class="mdi mdi-lock form-control-feedback" aria-hidden="true"></span>
</div>
<div class="form-group has-feedback feedback-left">
<input type="text" placeholder="请输入身份证" class="form-control" id="idCard" name="idCard" />
<span class="mdi mdi-lock form-control-feedback" aria-hidden="true"></span>
</div>
<div class="form-group has-feedback feedback-left">
<input type="text" placeholder="请输入手机号" class="form-control" id="mobile" name="mobile" />
<span class="mdi mdi-lock form-control-feedback" aria-hidden="true"></span>
</div>
<div class="form-group has-feedback feedback-left">
<input type="text" placeholder="请输入密码" class="form-control" id="password" name="password" />
<span class="mdi mdi-lock form-control-feedback" aria-hidden="true"></span>
</div>
<div class="form-group has-feedback feedback-left">
<input type="text" placeholder="请输入邮箱" class="form-control" id="email" name="email" />
<span class="mdi mdi-lock form-control-feedback" aria-hidden="true"></span>
</div>
<input type="hidden" name="img" class="img">
<div class="form-group">
<label for="name">头像:</label>
<div class="layui-upload">
<div class="layui-upload-list">
<img class="layui-upload-img" style="width:200px;height:100px;" id="demo1">
<button type="button" class="layui-btn layui-btn-sm " id="test1">+</button>
<p id="demoText"></p>
</div>
</div>
</div>
<div class="form-group">
<button class="btn btn-block btn-primary" type="button" id="save" >立即注册</button>
</div>
</form>
<a class="btn btn-block btn-primary" type="button" href="toLogin">去登录</a>
<hr>
<footer class="col-sm-12 text-center">
</footer>
</div>
</div>
</div>
<script>
layui.use([ 'form','jquery','layer','laydate','upload' ], function() {
var form = layui.form,
layer = layui.layer,
laydate = layui.laydate,
upload = layui.upload,
$= layui.jquery;
form.render();//这句一定要加,占坑
var uploadInst = upload.render({
elem: '#test1'
,url: 'upload2'
,accept:'images'
,size:50000
,before: function(obj){
obj.preview(function(index, file, result){
$('#demo1').attr('src', result);
});
}
,done: function(res){
//如果上传失败
if(res.code > 0){
return layer.msg('上传失败');
}
//上传成功
var demoText = $('#demoText');
demoText.html('<span style="color: #4cae4c;">上传成功</span>');
var fileupload = $(".img");
fileupload.attr("value",res.data.src);
console.log(fileupload.attr("value"));
}
,error: function(){
//演示失败状态,并实现重传
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function(){
uploadInst.upload();
});
}
});
$("#save").click(function(){
//执行添加的操作ajax
$.ajax({
cache:true,
type:"post",
url:"addUser",
data:$("#saveForm").serialize(),
async:false,
success:function(e){
if(e){
layer.msg('新增成功', {
icon: 1,
time: 2000 //2秒关闭(如果不配置,默认是3秒)
});
}else{
layer.msg('新增失败', {
icon: 1,
time: 2000 //2秒关闭(如果不配置,默认是3秒)
});
}
}
})
});
});
</script>
</body>
</html>