目录
一、题目描述(简述)
1.用户登录与注册模块
系统的使用者必须是注册用户,一个注册用户需要注册的信息有:用户登录名、密码、用户真实名字等信息。该模块具有两个功能:
(1)用户登录:在登录时,如果用户名和密码正确,进入系统页面。
(2)用户注册:新用户应该先注册,然后再登录该系统。
2.名片管理模块
一个名片包含信息有:序号(id)、姓名、性别、登录账号、密码、电子邮箱等有关信息,需要完成对名片有关的管理操作,主要有:
(1)增加名片:增加名片信息到数据库内。
(2)修改名片:修改名片信息。
(3)查询名片:以模糊查询方式查询名片。
(4)删除名片:名片的删除由2种方式,即把名片移到回收站,把名片彻底删除。
(5)可以实现名片批量导入和导出,即将查询满足条件的所有名片导入Excel中,也可以将Excel中存放的名片信息导入到数据库中。
(6)浏览/查询:可以模糊查询、浏览目前有效的名片。
3.回收站管理模块
(1)还原:把回收站中的名片还原回收。
(2)彻底删除:把名片彻底从回收站删除。
(3)浏览/查询:可以模糊查询、浏览回收站中的名片
4、系统角色划分
该系统分为两个角色:系统管理员、注册的用户。每种角色功能要求如下。
(1)系统管理员
系统管理员,可以完成系统中所规定的所有功能,且可以对所有数据具有操作权限,并可以对注册用户进行管理(删除),注意,当删除该注册用户时,对应于该用户的所有名片记录也全部删除。
(2)注册的用户
一个注册用户,只能对自己添加的名片记录有操作权限(查询、修改、删除)。对于其它的注册用户信息以及其它用户添加的名片记录是不可见的。
二、技术栈
- 前端:jsp,css,js,jquery,ajax
- 后端:servlet,jsp,jdbc,文件流;
- 数据库:mysql
- UI框架:bootstrap
1.jsp技术用以前端页面展示,ajax负责传输数据,
2.sevlet实现controller层的跳转与传数据功能,部分ajax代替sevlet的跳转功能
3.dao与impl层编写业务逻辑
三、项目架构
四、项目部分展示
登录页面
主页
名片模块
回收站模块
五、部分代码展示
主页导航栏
<nav class="navbar navbar-inverse navbar-fixed-top nav1">
<div class="container-fluid btn3">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse"
data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#"><span class="glyphicon glyphicon-user" aria-hidden="true"
style="width: 40px"> </span></a>
</div>
<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="active"><a href="#">支持一下 <span class="sr-only">(current)</span></a></li>
<li><a href="#">微信</a></li>
<li><a href="#">支付宝</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
aria-expanded="false">问题反馈 <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#">想白嫖?</a></li>
<li><a href="#">下次一定?</a></li>
<li><a href="#">又下次一定?</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">微信支持</a></li>
<li role="separator" class="divider"></li>
<li><a href="#">支付宝支持</a></li>
</ul>
</li>
</ul>
<form class="navbar-form navbar-left" action="servlet_register">
<div class="form-group">
<input type="text" class="form-control" placeholder="Search">
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
<ul class="nav navbar-nav" style="padding-left: 150px">
<li class="active"><a href="#">我尊贵的客人 <span class="sr-only">(current)</span></a></li>
<li><a href="mingpian/mpModel.jsp">名片管理模块</a></li>
<li><a href="./huishouzhan/huishou.jsp">回收站模块</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<a class="navbar-brand" href="#">
<span class="glyphicon glyphicon-qrcode" aria-hidden="true"
style="width: 40px" onmouseover="a7()" onmouseout="a8()">
</span>
</a>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"
aria-expanded="false"><span class="glyphicon glyphicon-off"></span>注销 <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#" data-toggle="modal" data-target="#myModal">我的信息</a></li>
<li role="separator" class="divider"></li>
<li><a href="servlet_login">退出登录</a></li>
</ul>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
<div class="panel panel-default div2" id="2wm">
<div class="panel-body" style="width: 200px;height: 200px">
<%-- <p align="center">搞笑男已上线</p>--%>
<img src="img/11111.png" width="100%" height="100%"
class="img-rounded" alt="搞笑男已上线" >
</div>
</div>
</nav>
上传文件模块及其模态框
<div class="modal fade" id="myModal4" tabindex="-1" role="dialog" aria-labelledby="myModalLabel3" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content ">
<div class="modal-header bg-success">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button>
<h4 class="modal-title" id="myModalLabel4">
上传文件
</h4>
</div>
<%-- <form action="http://localhost:8080/mingpianSystem/addmp" method="post">--%>
<div class="modal-body bg-info">
<form action="${pageContext.request.contextPath}/upload" enctype="multipart/form-data" method="post">
上传用户:<input type="text" name="username" class="form-control" required><br/>
上传文件:<input type="file" name="file1" class="form-control" required><br/>
上传文件2:<input type="file" name="file2" class="form-control"><br/>
<%-- 上传文件:<input type="file" name="file2"><br/>--%>
<div class="modal-footer bg-info">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭
</button>
<input type="submit" class="btn btn-primary" value="上传">
</input>
</div>
</form>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal -->
</div>
sevlet层
package com.atqh.Servlet.huishouzhanServlet;
import com.atqh.been.MingPian;
import com.atqh.dao.IDeldao;
import com.atqh.dao.impl.IDelmpl;
import com.google.gson.Gson;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
public class GetDel extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
IDeldao iDeldao = new IDelmpl();
PrintWriter writer = resp.getWriter();
String username = (String) req.getSession().getAttribute("username");
List<MingPian> del = iDeldao.getdel(username);
// System.out.println("!!!!!!!!!!!!!!!!!d调用了!!");
if (del.size() != 0) {
// req.setAttribute("del", del);
req.setCharacterEncoding("utf-8");
Gson gson = new Gson();
String data = gson.toJson(del);
System.out.println("我是string!!!!!" + data);
writer.write(data);
}
}
}
项目在gitee,github上已经完全开源,欢迎各路大神批评指正
首页http://123.57.64.216:8080/mingpianSystem/
另外 ,项目已部署到服务器,欢迎参观指正!!!
撒花完结!!!