链接:https://pan.baidu.com/s/1XTl_v5N9b12KJ5U6P2f31Q
提取码:1ar3
老师给的代码复制进去(不可以通过import file导入老师给的代码,必须要一个页面一个页面地复制,否则tomcat服务器发布了项目也不能同步到tomcat的webapps文件夹里),只需要把每个页面连接数据库的语句(比如用户名和密码等)修改一下以及相关jar包的导入即可正常运行,用户登陆的信息是保存在JavaBean对象里的,每个操作如果检测到没有用户登陆就会优先让你先登陆账号才能进行下一步的操作。
后台管理页面是由我之前编写的学生信息管理系统改编而来,后台的数据存储在servlet里面,进入后台管理系统后必须要先登陆管理员账号密码,而管理员账号密码存储在数据库表login(自己创建的一个数据库表,里面只要logname、realname和password三个变量)里,而登陆后的logname会存储在servlet里,如果当前页面检测到servlet里没有logname的信息,系统就会自动弹出“请先登陆”提示框,这是为了防止用户直接运行其他jsp页面而导致的系统功能不完整。由于想象不到后台还有哪些功能且课设时间有限,我就简单地做了手机信息和订单信息的增删改查以及管理员密码的修改等操作,后续操作需要实现的话可以继续添加进去,所以这个后台管理系统还有有待改进。
前端的代码就是老师给的那些就不一一展示出来了,这里我就把我后台的代码贴出来以供大家参考,如有错误,请多指教。
1、所有代码截图:
2、head.txt的代码,这是本销售系统的主页,由9个超链接组成,比老师给的代码多了一个后台管理链接。
<%@ page contentType="text/html;charset=GB2312" %>
3、Login.html代码这个是主登陆界面,用户必须输入存储在数据库login表里的记录才能成功登陆,登陆成功后系统会把登陆成功的用户的logname存储在servlet里。
请登陆
1
后台管理系统登录
4、DAOCheckLogin.jsp的代码,这是检查你所输入的登陆信息,连接数据库,查看数据库里的login表里是否有你所输入的这个记录,如果没有该记录则登陆失败跳转至login.html页面;如果存在该记录则登陆成功跳转到frame.jsp后台管理系统主页面并将已登陆用户的logname和realname存储到servlet里。
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%
//检验管理员的用户名密码是否正确
request.setCharacterEncoding("UTF-8");
String logname = request.getParameter("logname");
String password = request.getParameter("password");
String sqlQuery = "SELECT * FROM mobileshop.login WHERE logname='"+logname+"'AND password='"+password+"'";
try{
Class.forName("com.mysql.cj.jdbc.Driver");
String URL = "jdbc:mysql://127.0.0.1:3306/mobileshop?useSSL=false&user=root&password=123456&serverTimezone=GMT%2B8";
System.out.println("连接成功...");
Connection con = DriverManager.getConnection(URL);
Statement sql = con.createStatement();
ResultSet rs = sql.executeQuery(sqlQuery);
if(rs.next()){
session.setAttribute("logname", logname);
session.setAttribute("realname", rs.getString(3));
response.sendRedirect("frame.jsp");//登陆成功,重定向至菜单管理页面
}else{
out.print("");
//登陆失败,跳转到登陆页面
}
con.close();
}catch(SQLException e){
e.printStackTrace();
}
%>
5、Top.html下面是页面的代码,这个是后台管理系统的主页面的顶部部分,用于显示登陆用户的真实姓名。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%
if((String)session.getAttribute("logname")==null){
out.print("");
//如果检查到没有用户登陆,则重定向至主登陆页面
}
%>
您好!<%=(String)session.getAttribute("realname") %>管理员,欢迎来到后台管理系统
6、Left_nav.html页面的代码,这是后台管理系统主页面的左边部分,用于实现左右树形菜单与实现功能的划分。
7、Contain.jsp页面的代码,这是功能实现的初始页面,是一个管理手机信息的页面,你可以通过点击左边树形菜单的选项来改变该显示区域的内容,动静结合。
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
手机网后台管理系统
<%
request.setCharacterEncoding("UTF-8");
String pages = request.getParameter("pages");//获取当前页数
int pagesNo = Integer.parseInt(pages);//把当前页数从字符串转为整型
int startLine = (Integer.parseInt(pages)-1)*10;//指定数据库从哪一行开始读取
%>
<%
int prePage;//上一页的页数
if(pagesNo == 1){
prePage = 1;//若当前页是第一页,则第一页只能是当前页
}else{
prePage = pagesNo - 1;//除了上述情况外上一页等于当前页-1页
}
%>
- 上一页
<%
pagesCount = (lastRow % pageSize == 0) ? (lastRow / pageSize) : (lastRow / pageSize +1);//计算数据库能读出来的全部页数
int minpages = (pagesNo - 3 >0) ? (pagesNo - 3) : 1;//设定最小页,防止页数小于第一页
int maxpages = (pagesNo + 3 >= pagesCount) ? (pagesCount) : (pagesNo+3);//设定最大页
for(int i = minpages;i <=maxpages ;i++){
if(i == pagesNo){//当前页和遍历出来的页数相等时,需要通过调用css里面的样式“active"进行高亮
out.print("- ");
out.print(""+i+"");
out.print("
");
}else{//输出每一个分页
out.print("- ");
out.print(""+i+"");
out.print("
");
}
}
//out.print("- ");
//out.print("alert('请先登录!');window.location.href='Login.html'");
}
%>
9、AddStudent.jsp页面的代码,这是通过点击Contain.jsp跳转到本页面,是用于实现添加手机信息操作的页面,这里是需要你在输入框中输入你所要添加的手机信息再通过表单提交到DaoAddStudent.jsp页面进行处理。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%
if((String)session.getAttribute("logname")==null){
out.print("");
}//提示登陆,并且在当前页面打开Login.html页面
%>
10、DaoAddStudent.jsp页面的代码,这是从AddStudent.jsp跳转到本页面,是通过连接数据库实现添加手机信息操作的页面。
11、AlertStudent.jsp页面的代码,这是输入需要更新的手机信息的页面,与AddStudent.jsp类似。
<%@page import="org.omg.CORBA.Request"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%!
String sourceId;
String mobile_version;
String mobile_name;
String mMobile_made;
String mobile_price;
String mobile_mess;
String mobile_pic;
String id;
%>
<%
if((String)session.getAttribute("logname")==null){
out.print("");
}
request.setCharacterEncoding("UTF-8");
mobile_version= request.getParameter("mobile_version");
String sqlid = "SELECT * FROM mobileshop.mobileForm where mobile_version='"+mobile_version+"'";
sourceId = mobile_version;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
String URL = "jdbc:mysql://127.0.0.1:3306/mobileshop?useSSL=false&user=root&password=123456&serverTimezone=GMT%2B8";
Connection con = DriverManager.getConnection(URL);
Statement sql = con.createStatement();
ResultSet rs = sql.executeQuery(sqlid);
if(rs.next()){
mobile_version=rs.getString(1);
mobile_name = rs.getString(2);
mMobile_made= rs.getString(3);
mobile_price = rs.getString(4);
mobile_mess = rs.getString(5);
mobile_pic= rs.getString(6);
id = rs.getString(7);
}
rs.close();
sql.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
%>
12、 AlertStudent.jsp页面的代码,这是实现更新操作的页面,与DaoAddStudent.jsp类。
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.Statement"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%
//修改学生资料
if((String)session.getAttribute("logname")==null){
out.print("");
}
request.setCharacterEncoding("UTF-8");
String sourceId = request.getParameter("sourceId");
sourceId = sourceId.substring(1, sourceId.length()-1);//由于传值过来会被''括住,需要去除
String mobile_version= request.getParameter("mobile_version");
String mobile_name = request.getParameter("mobile_name");
String mMobile_made = request.getParameter("mMobile_made");
String mobile_price = request.getParameter("mobile_price");
String mobile_mess= request.getParameter("mobile_mess");
String mobile_pic= request.getParameter("mobile_pic");
String id = request.getParameter("id");
String sqlQuery = "UPDATE `mobileshop`.`mobileForm` SET `mobile_version` = ?, `mobile_name` = ?, `mMobile_made` = ?, `mobile_price` = ?, `mobile_mess` = ?, `mobile_pic` = ?, `id` = ? WHERE (`mobile_version` = ?)";
String sqlid = "SELECT * FROM mobileshop.mobileForm where mobile_version='"+mobile_version+"'";
Connection con = null;
Statement stat = null;
ResultSet rs = null;
PreparedStatement ps = null;
boolean flag = true;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
String URL = "jdbc:mysql://127.0.0.1:3306/mobileshop?useSSL=false&user=root&password=123456&serverTimezone=GMT%2B8";
con = DriverManager.getConnection(URL);
stat = con.createStatement();
rs = stat.executeQuery(sqlid);
if(sourceId.equals(mobile_version)){
flag = false;
}
/*//out.print(flag);
out.print("
"+sourceId);
out.print("
"+id);*/
if(rs.next() && flag){
out.print("");
}else{
ps = con.prepareStatement(sqlQuery);
ps.setString(1,mobile_version);
ps.setString(2,mobile_name);
ps.setString(3,mMobile_made);
ps.setString(4,mobile_price);
ps.setString(5,mobile_mess);
ps.setString(6,mobile_pic);
ps.setString(7,id);
ps.setString(8,sourceId);
ps.executeUpdate();
out.print("");
ps.close();
}
rs.close();
stat.close();
con.close();
}catch (Exception e){
e.printStackTrace();
}
%>
13、DaoDelete.jsp页面的代码,这是实现删除手机信息的操作。
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%
//删除手机资料
if((String)session.getAttribute("logname")==null){
out.print("");
}
request.setCharacterEncoding("UTF-8");
String mobile_version = request.getParameter("mobile_version");
String sql = "DELETE FROM `mobileshop`.`mobileForm` WHERE (`mobile_version` = ?)";
Connection con = null;
PreparedStatement ps = null;
try{
String URL = "jdbc:mysql://127.0.0.1:3306/mobileshop?useSSL=false&user=root&password=123456&serverTimezone=GMT%2B8";
con = DriverManager.getConnection(URL);
ps = con.prepareStatement(sql);
ps.setString(1,mobile_version);
ps.executeUpdate();
out.print("");
ps.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
%>
14、Daosearch.jsp页面的代码,这是实现搜索手机信息的操作,可以通过手机名称或手机标识号进行查找。
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
手机信息管理系统
15、Contain2.jsp页面的代码,这个页面是用来管理手机订单信息的,可以进行增删改查等简单操作。
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
手机网后台管理系统
<%
request.setCharacterEncoding("UTF-8");
String pages = request.getParameter("pages");//获取当前页数
int pagesNo = Integer.parseInt(pages);//把当前页数从字符串转为整型
int startLine = (Integer.parseInt(pages)-1)*10;//指定数据库从哪一行开始读取
%>
<%
int prePage;//上一页的页数
if(pagesNo == 1){
prePage = 1;//若当前页是第一页,则第一页只能是当前页
}else{
prePage = pagesNo - 1;//除了上述情况外上一页等于当前页-1页
}
%>
- 上一页
<%
pagesCount = (lastRow % pageSize == 0) ? (lastRow / pageSize) : (lastRow / pageSize +1);//计算数据库能读出来的全部页数
int minpages = (pagesNo - 3 >0) ? (pagesNo - 3) : 1;//设定最小页,防止页数小于第一页
int maxpages = (pagesNo + 3 >= pagesCount) ? (pagesCount) : (pagesNo+3);//设定最大页
for(int i = minpages;i <=maxpages ;i++){
if(i == pagesNo){//当前页和遍历出来的页数相等时,需要通过调用css里面的样式“active"进行高亮
out.print("- ");
out.print(""+i+"");
out.print("
");
}else{//输出每一个分页
out.print("- ");
out.print(""+i+"");
out.print("
");
}
}
//out.print("- ");
//out.print("alert('请先登录!');window.location.href='Login.html'");
}//提示登陆,并且在当前页面打开Login.html页面
%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.Statement"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%
//添加学生资料
if((String)session.getAttribute("logname")==null){
out.print("");
}
request.setCharacterEncoding("UTF-8");
String id= request.getParameter("id");
String logname = request.getParameter("logname");
String mess = request.getParameter("mess");
String sum = request.getParameter("sum");
String sqlQuery = "INSERT INTO `mobileshop`.`orderForm` (`id`, `logname`, `mess`, `sum`) VALUES (?, ?, ?, ?)";
String sqlid = "SELECT * FROM mobileshop.orderForm where id='"+id+"'";
Connection con = null;
Statement stat = null;
ResultSet rs = null;
PreparedStatement ps = null;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
String URL = "jdbc:mysql://127.0.0.1:3306/mobileshop?useSSL=false&user=root&password=123456&serverTimezone=GMT%2B8";
con = DriverManager.getConnection(URL);
stat = con.createStatement();
rs = stat.executeQuery(sqlid);
if(rs.next()){
out.print("");
}else{
ps = con.prepareStatement(sqlQuery);
ps.setString(1,id);
ps.setString(2,logname);
ps.setString(3,mess);
ps.setString(4,sum);
ps.executeUpdate();
out.print("");
ps.close();
}
rs.close();
stat.close();
con.close();
}catch (Exception e){
e.printStackTrace();
}
%>
17、下面是AlertStudent2.jsp和DaoAlertStudent2.jsp页面的代码(按顺序),这两个代码是实现手机订单信息的更新,与更新手机信息的代码类似(AlertStudent.jsp、DaoAlertStudent.jsp页面)
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%!
String sourceId;
String id;
String logname;
String mess;
String sum;
%>
<%
if((String)session.getAttribute("logname")==null){
out.print("");
}
request.setCharacterEncoding("UTF-8");
id = request.getParameter("id");
String sqlid = "SELECT * FROM mobileshop.orderForm where id='"+id+"'";
sourceId = id;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
String URL = "jdbc:mysql://127.0.0.1:3306/mobileshop?useSSL=false&user=root&password=123456&serverTimezone=GMT%2B8";
Connection con = DriverManager.getConnection(URL);
Statement sql = con.createStatement();
ResultSet rs = sql.executeQuery(sqlid);
if(rs.next()){
id = rs.getString(1);
logname = rs.getString(2);
mess= rs.getString(3);
sum = rs.getString(4);
}
rs.close();
sql.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.Statement"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%
//修改学生资料
if((String)session.getAttribute("logname")==null){
out.print("");
}
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String sourceId = request.getParameter("sourceId");
sourceId = sourceId.substring(1, sourceId.length()-1);//由于传值过来会被''括住,需要去除
String logname=request.getParameter("logname");
String mess=request.getParameter("mess");
String sum=request.getParameter("sum");
String sqlQuery = "UPDATE `mobileshop`.`orderForm` SET `id` = ?, `logname` = ?, `mess` = ?, `sum` = ? WHERE (`id` = ?)";
String sqlid = "SELECT * FROM mobileshop.orderForm where id='"+id+"'";
Connection con = null;
Statement stat = null;
ResultSet rs = null;
PreparedStatement ps = null;
boolean flag = true;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
String URL = "jdbc:mysql://127.0.0.1:3306/mobileshop?useSSL=false&user=root&password=123456&serverTimezone=GMT%2B8";
con = DriverManager.getConnection(URL);
stat = con.createStatement();
rs = stat.executeQuery(sqlid);
if(sourceId.equals(id)){
flag = false;
}
if(rs.next() && flag){
out.print("");
}else{
ps = con.prepareStatement(sqlQuery);
ps.setString(1,id);
ps.setString(2,logname);
ps.setString(3,mess);
ps.setString(4,sum);
ps.setString(5,sourceId);
ps.executeUpdate();
out.print("");
ps.close();
}
rs.close();
stat.close();
con.close();
}catch (Exception e){
e.printStackTrace();
}
%>
18、DaoDelete2.jsp页面的代码,这是实现手机订单信息的删除功能,可以通过直接点击记录进行删除(其实是通过你点击的记录的订单号,然后去数据库中搜索该订单号的记录进行删除)
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%
//删除学生资料
if((String)session.getAttribute("logname")==null){
out.print("");
}
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String sql = "DELETE FROM `mobileshop`.`orderForm` WHERE (`id` = ?)";
Connection con = null;
PreparedStatement ps = null;
try{
String URL = "jdbc:mysql://127.0.0.1:3306/mobileshop?useSSL=false&user=root&password=123456&serverTimezone=GMT%2B8";
con = DriverManager.getConnection(URL);
ps = con.prepareStatement(sql);
ps.setString(1,id);
ps.executeUpdate();
out.print("");
ps.close();
con.close();
}catch(Exception e){
e.printStackTrace();
}
%>
19、DaoSearch2.jsp页面的代码,这是用来搜索手机订单信息的操作,可以通过订单号或者订单用户的用户名来进行搜索,从而达到筛选的目的。
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
订单信息管理系统
20,AdminPasswordReset.jsp的页面代码,这是修改代码的页面,需要你输入新的密码,然后通过表单来提交给DaoAdminPasswordRest.jsp页面进行修改。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%
if((String)session.getAttribute("logname")==null){
out.print("");
}
%>
管理员账户密码修改
21、DaoAdminPasswordReset.jsp页面的代码,这是通过request获取表单提交过来的数据,然后连接login表进行更新管理员的密码。
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
<%
//修改管理员的密码
String logname = session.getAttribute("logname").toString();
String realname = session.getAttribute("realname").toString();
String passowrd = request.getParameter("pwd");
String sql = "UPDATE `mobileshop`.`login` SET `password` = ? WHERE (`realname` = ?)";
Connection con = null;
PreparedStatement ps = null;
try{
Class.forName("com.mysql.cj.jdbc.Driver");
String URL = "jdbc:mysql://127.0.0.1:3306/mobileshop?useSSL=false&user=root&password=123456&serverTimezone=GMT%2B8";
con = DriverManager.getConnection(URL);
ps = con.prepareStatement(sql);
ps.setString(1, passowrd);
ps.setString(2, realname);
ps.executeUpdate();
ps.close();
con.close();
session.removeAttribute("realname");//移除用户会话
session.removeAttribute("logname");
out.print("");
}catch(Exception e){
e.printStackTrace();
}
%>
四、数据库表截图(数据库的表结构以及数据已导出并上传至顶部的百度网盘链接):
五、总结
至此,我的智多星手机销售管理系统的设计就到此顺利完成。总结本次实验本次的遗憾是由于时间比较紧急,所以老师直接给了我们前端的源码,但是,就算是源码,在前端的运行过程中还是出现比较多的细节问题,比如不能直接导入老师给的源代码文件、数据加载驱动的语句(驱动jar在8.0后的版本需要把加载驱动语句改为:Class.forName("com.mysql.cj.jdbc.Driver");)以及数据的连接语句需要修改(需要在url语句最后面加上&serverTimezone=GMT%2B8",否则会出现异常,百度了一下据说是跟时间戳有关),磕磕绊绊地最终还是在老师给定的期限内勉强地实现了整个手机销售管理系统。我接下来的空余时间内,我会把系统好好完善,最好是能够自己把前端的功能给实现一遍,而不是只由自己编写了后台代码,搞得自己需要花时间去理解代码,还要不断地调试陌生的代码。在实现后台的过程中,我了解到了bootstrap语言,这个语言是一种响应式布局设计,可以让一个网站可以兼容不同分辨率的设备。Bootstrap响应式布局设计,给用户提供更好的视觉使用体验、丰富的组件、高大上:界面美观上档次、未来向所有项目、平台推广,十分耐用,值得推荐大家去学习一下。最后,学无止境,我希望在接下来的生活中能够更好地认识到编程的乐趣,在兴趣中不断进步。