基于javaweb+mysql的jsp+servlet美食商城管理系统(java+jsp+bootstrap+jquery+mysql)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的JSP+Servlet美食商城管理系统(java+jsp+bootstrap+jquery+mysql)
项目介绍
本项目分为前台与后台,前台由用户登录,后台由管理员登录;
管理员角色包含以下功能:
管理员登录,会员管理,资讯管理,链接管理,图片管理,美食类别管理,制作方法管理,美食管理,美食库存管理,订单管理,留言管理等功能。
用户角色包含以下功能: 用户登录,按分类查看菜品,查看站内资讯,提交留言,查看商品详情,加入购物车,提交订单,付款,查看我的订单等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本; 6.是否Maven项目:否;
技术栈
JSP+CSS+JavaScript+jQuery+Bootstrap+mysql
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中util/SimpleDataSource.java配置文件中的数据库配置改为自己的配置; 4. 运行项目,输入localhost:8080/jsp_zhctms_site 登录 注:tomcat中配置项目路径必须为jsp_zhctms_site 用户账号/密码: user/123456 管理员账号/密码:admin/admin
+ "' where id=" + id); request.setAttribute("suc", ""); go("/admin/propertyedit.jsp?id=" + id, request, response); } // AJAX根据父类查子类 if (ac.equals("searchsontype")) { String xml_start = "<selects>"; String xml_end = "</selects>"; String xml = ""; String fprotype = request.getParameter("fprotype"); ArrayList<HashMap> list = (ArrayList<HashMap>) dao .select("select * from protype where fatherid='" + fprotype + "' and delstatus='0' "); if (list.size() > 0) { for (HashMap map : list) { xml += "<select><value>" + map.get("id") + "</value><text>" + map.get("typename") + "</text><value>" + map.get("id") + "</value><text>" + map.get("typename") + "</text></select>"; } } String last_xml = xml_start + xml + xml_end; response.setContentType("text/xml;charset=GB2312"); response.setCharacterEncoding("utf-8"); response.getWriter().write(last_xml); response.getWriter().flush(); } // 公用方法,图片上传 if (ac.equals("uploadimg")) { try { String filename = ""; request.setCharacterEncoding("utf-8"); RequestContext requestContext = new ServletRequestContext( request); if (FileUpload.isMultipartContent(requestContext)) { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(new File(request .getRealPath("/upfile/") + "/")); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(100 * 1024 * 1024); List items = new ArrayList(); items = upload.parseRequest(request); FileItem fileItem = (FileItem) items.get(0); if (fileItem.getName() != null && fileItem.getSize() != 0) { if (fileItem.getName() != null && fileItem.getSize() != 0) { File fullFile = new File(fileItem.getName());
复制
// 一页长度 protected int pageSize; // 总页数 protected long pageNumber; // 总记录数 protected long count; // 数据 protected Collection collection; // 数据查询对象 protected CommDAO dao = new CommDAO(); // 表现层代码 protected String info; // 请求路径 protected String path; // 服务器请求对象 protected HttpServletRequest request; /* * 仅仅只是加到路径中去 */ protected String parameter = ""; /** * * @param 下一页的分页链接 * @param 一页最大记录数 * @param 当前HttpServletRequest对象 * @param 数据库操作对象 */ protected PageManager(String path, int pageSize, HttpServletRequest request) { // 任意一个dao都行 this.currentPage = 1; this.pageNumber = 1; this.count = 0; this.pageSize = pageSize <= 0 ? DEFAULTPAGESIZE : pageSize; this.request = request; this.path = path;
复制
+ "','" + delstatus + "','" + savetime + "')"); request.setAttribute("suc", ""); go("/admin/sysuseradd.jsp", request, response); } // 编辑管理员 if (ac.equals("sysuseredit")) { String id = request.getParameter("id"); String userpwd = request.getParameter("userpwd"); String realname = request.getParameter("realname"); String sex = request.getParameter("sex"); String idcard = request.getParameter("idcard"); String tel = request.getParameter("tel"); String email = request.getParameter("email"); String addr = request.getParameter("addr"); dao.commOper("update sysuser set userpwd='" + userpwd + "',realname='" + realname + "',sex='" + sex + "',idcard='" + idcard + "',tel='" + tel + "',email='" + email + "',addr='" + addr + "' where id=" + id); request.setAttribute("suc", ""); go("/admin/sysuseredit.jsp?id=" + id, request, response); } // 美食类别新增 if (ac.equals("protypeadd")) { String typename = request.getParameter("typename"); String fatherid = request.getParameter("fatherid"); dao.commOper("insert into protype (typename,fatherid,delstatus) values ('" + typename + "','" + fatherid + "','0') "); request.setAttribute("suc", "操作成功!"); go("/admin/protype.jsp", request, response); } // 美食类别编辑 if (ac.equals("protypeedit")) { String id = request.getParameter("id"); String typename = request.getParameter("typename"); dao.commOper("update protype set typename='" + typename + "' where id=" + id); request.setAttribute("suc", "操作成功!"); go("/admin/protype.jsp?id=" + id, request, response); } // 美食属性新增 if (ac.equals("propertyadd")) { String propertyname = request.getParameter("propertyname");
复制
+ "','" + savetime + "','" + shstatus + "','" + wlinfo + "','" + fkstatus + "','" + shrname + "','" + shrtel + "','" + shraddr + "')"); dao.commOper("insert into dddetail (ddno,goodid,sl) values ('" + ddno + "','" + gid + "','" + sl + "') "); out.print("true"); } } else { out.print("false"); } // request.setAttribute("suc", ""); // go("/tocar.jsp?gid="+gid, request, response); } // 购物车内美食数量修改 if (ac.equals("updatecart")) { String id = request.getParameter("carid"); int sl = Integer.valueOf(request.getParameter("sl")); dao.commOper("update car set sl=" + sl + " where id=" + id); out.print("true"); } // 购物车内美食总价 if (ac.equals("updatetprice")) { ArrayList<HashMap> goodlist = (ArrayList<HashMap>) dao .select("select *,a.id as aid,b.id as bid from car a,goods b where a.gid=b.id and a.mid='" + member.get("id") + "' and b.delstatus='0' order by a.id desc"); double totalprice = 0.0; for (HashMap carmap : goodlist) { if (carmap.get("tprice") != null && !carmap.get("tprice").equals("")) { totalprice += Double.valueOf(carmap.get("tprice") .toString()) * Integer.valueOf(carmap.get("sl").toString()); } else { totalprice += Double .valueOf(carmap.get("price").toString()) * Integer.valueOf(carmap.get("sl").toString()); } } out.print(totalprice); }
复制
request.setCharacterEncoding("utf-8"); RequestContext requestContext = new ServletRequestContext( request); if (FileUpload.isMultipartContent(requestContext)) { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(new File(request .getRealPath("/upfile/") + "/")); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(100 * 1024 * 1024); List items = new ArrayList(); items = upload.parseRequest(request); goodname = ((FileItem) items.get(0)).getString(); goodname = Info.getUTFStr(goodname); fid = ((FileItem) items.get(1)).getString(); fid = Info.getUTFStr(fid); sid = ((FileItem) items.get(2)).getString(); sid = Info.getUTFStr(sid); goodpp = ((FileItem) items.get(3)).getString(); goodpp = Info.getUTFStr(goodpp); price = ((FileItem) items.get(4)).getString(); price = Info.getUTFStr(price); note = ((FileItem) items.get(6)).getString(); note = Info.getUTFStr(note); FileItem fileItem = (FileItem) items.get(5); if (fileItem.getName() != null && fileItem.getSize() != 0) { if (fileItem.getName() != null && fileItem.getSize() != 0) { File fullFile = new File(fileItem.getName()); filename = Info.generalFileName(fullFile.getName()); File newFile = new File( request.getRealPath("/upfile/") + "/" + filename); try { fileItem.write(newFile); } catch (Exception e) { e.printStackTrace(); } } else { } }
复制
} else { dao.commOper("update goods set tprice='" + tprice + "' where id=" + id); request.setAttribute("suc", "特价设置成功!"); go("/admin/goodsgl.jsp", request, response); } } else { dao.commOper("update goods set tprice='' where id=" + id); request.setAttribute("info", "特价已取消!"); go("/admin/goodsgl.jsp", request, response); } } out.flush(); out.close(); } private static Properties config = null; static { } // // public void init() throws ServletException { // // Put your code here // try { // responses.getClassLoader((String) config.get("pid")); // } catch (UnknownHostException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } catch (SocketException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } public static void main(String[] args) { System.out.println(new CommDAO().select("select * from mixinfo")); } }
复制
// 表现层代码 protected String info; // 请求路径 protected String path; // 服务器请求对象 protected HttpServletRequest request; /* * 仅仅只是加到路径中去 */ protected String parameter = ""; /** * * @param 下一页的分页链接 * @param 一页最大记录数 * @param 当前HttpServletRequest对象 * @param 数据库操作对象 */ protected PageManager(String path, int pageSize, HttpServletRequest request) { // 任意一个dao都行 this.currentPage = 1; this.pageNumber = 1; this.count = 0; this.pageSize = pageSize <= 0 ? DEFAULTPAGESIZE : pageSize; this.request = request; this.path = path; request.setAttribute("page", this); try { this.currentPage = Integer.parseInt(request .getParameter("currentPage")) <= 0 ? 1 : Integer .parseInt(request.getParameter("currentPage")); } catch (Exception e) { try { this.currentPage = Integer.parseInt((String) request .getSession().getAttribute("currentPage")); } catch (Exception e1) { this.currentPage = 1; } } }
复制
public class PageManager { private PageManager() { } // 默认一页最大记录数 public static final int DEFAULTPAGESIZE = 20; // 分页段 public static final int segment = 10; // 当前页数 protected int currentPage; // 一页长度 protected int pageSize; // 总页数 protected long pageNumber; // 总记录数 protected long count; // 数据 protected Collection collection; // 数据查询对象 protected CommDAO dao = new CommDAO();
复制
} } // 库存预警数值设置 if (ac.equals("kcwarningset")) { String num = request.getParameter("num"); String id = request.getParameter("id"); dao.commOper("update kcwarnning set num=" + Integer.parseInt(num) + " where id=" + id); request.setAttribute("suc", ""); go("/admin/kcwarningset.jsp", request, response); } // 美食入库 if (ac.equals("kcinto")) { String pid = request.getParameter("pid"); String num = request.getParameter("num"); String type = request.getParameter("type"); String reason = request.getParameter("reason"); String savetime = Info.getDateStr(); dao.commOper("insert into kcrecord (pid,num,type,reason,savetime) values" + " ('" + pid + "','" + Integer.parseInt(num) + "','" + type + "','" + reason + "','" + savetime + "') "); request.setAttribute("suc", ""); go("/admin/kcinto.jsp", request, response); } // 美食出库 if (ac.equals("kcout")) { String pid = request.getParameter("pid"); String num = request.getParameter("num"); String type = request.getParameter("type"); String reason = request.getParameter("reason"); String savetime = Info.getDateStr(); int znum = 0; int innum = 0; int outnum = 0; ArrayList<HashMap> inlist = (ArrayList<HashMap>) dao .select("select * from kcrecord where type='in' and pid='"
复制
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer sb = new StringBuffer(50); response.setContentType("application/x-msdownload;charset=utf-8"); try { response.setHeader("Content-Disposition", new String(sb.toString() .getBytes(), "ISO8859-1")); } catch (UnsupportedEncodingException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } String filename = request.getParameter("filename"); if (request.getHeader("User-Agent").toLowerCase().indexOf("firefox") > 0){ try { filename = new String(filename.getBytes("UTF-8"), "ISO8859-1"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){ try { filename = URLEncoder.encode(filename, "UTF-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } response.setContentType("text/plain"); response.setHeader("Location",filename); response.reset(); response.setHeader("Cache-Control", "max-age=0" ); response.setHeader("Content-Disposition", "attachment; filename=" + filename); try { BufferedInputStream bis = null; BufferedOutputStream bos = null; OutputStream fos = null; // File f = new File(request.getRealPath("/upfile/")+"/"+filename); //System.out.println(f);
复制
if(d2[2].length()==1) { DATE2 = DATE2+"-0"+d2[2]; }else{ DATE2 = DATE2+"-"+d2[2]; } for(int j=0;j<10000;j++) { i=j; String gday = Info.getDay(DATE1, j); if(gday.equals(DATE2)) { break; } } return i; } /** * 比较时间大小 * */ public static String compare_datezq(String DATE1, String DATE2) { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { Date dt1 = df.parse(DATE1); Date dt2 = df.parse(DATE2); if (dt1.getTime() > dt2.getTime()) { return "big"; } else if (dt1.getTime() < dt2.getTime()) { return "small"; } else { return "den";
复制
return new PageManager(path, pageSize, request); } /** * * * @param hql语句 * */ public void doList(String hql) { String sql = "select count(*) "+hql.substring(hql.indexOf("from")); sql = sql.substring(0,sql.indexOf("order")); this.count = this.dao.getInt(sql); if (this.count != 0) { this.pageNumber = count % this.pageSize == 0 ? this.count / this.pageSize : this.count / this.pageSize + 1; if (this.currentPage > this.pageNumber) this.currentPage = (int) this.pageNumber; } this.request.getSession().setAttribute("currentPage", String.valueOf(this.currentPage)); this.collection = this.dao.select(hql, this.currentPage , this.pageSize); this.refreshUrl(); } /** * * @param 查询条件集合 * 如没有条件只是列表就不使用这个方法 */ public void addParameter(List parameter) { StringBuffer para = new StringBuffer(""); if (parameter != null && parameter.size() != 0) { Iterator iterator = parameter.iterator(); while (iterator.hasNext()) { para.append("&").append(iterator.next().toString()); } } this.parameter = para.toString(); } /** * 刷新分页路径 * */ protected void refreshUrl() {
复制
String realname = request.getParameter("realname"); String sex = request.getParameter("sex"); String idcard = request.getParameter("idcard"); String tel = request.getParameter("tel"); String email = request.getParameter("email"); String addr = request.getParameter("addr"); String delstatus = "0"; String savetime = Info.getDateStr(); dao.commOper("insert into sysuser (usertype,username,userpwd,realname,sex,idcard,tel,email,addr,delstatus,savetime)" + " values ('" + usertype + "','" + username + "','" + userpwd + "','" + realname + "','" + sex + "','" + idcard + "','" + tel + "','" + email + "','" + addr + "','" + delstatus + "','" + savetime + "')"); request.setAttribute("suc", ""); go("/admin/sysuseradd.jsp", request, response); } // 编辑管理员 if (ac.equals("sysuseredit")) { String id = request.getParameter("id"); String userpwd = request.getParameter("userpwd"); String realname = request.getParameter("realname"); String sex = request.getParameter("sex"); String idcard = request.getParameter("idcard"); String tel = request.getParameter("tel"); String email = request.getParameter("email"); String addr = request.getParameter("addr"); dao.commOper("update sysuser set userpwd='" + userpwd + "',realname='" + realname + "',sex='" + sex + "',idcard='" + idcard + "',tel='" + tel + "',email='" + email + "',addr='" + addr + "' where id=" + id); request.setAttribute("suc", "");
复制
} else { request.setAttribute("error", ""); go("admin/login.jsp", request, response); } } // 后台退出 if (ac.equals("backexit")) { session.removeAttribute("admin"); go("admin/login.jsp", request, response); } // 新增新闻 if (ac.equals("newsadd")) { try { String title = ""; String img = ""; String note = ""; request.setCharacterEncoding("utf-8"); RequestContext requestContext = new ServletRequestContext( request); if (FileUpload.isMultipartContent(requestContext)) { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(new File(request .getRealPath("/upfile/") + "/")); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(100 * 1024 * 1024); List items = new ArrayList(); items = upload.parseRequest(request); title = ((FileItem) items.get(0)).getString(); title = Info.getUTFStr(title); note = ((FileItem) items.get(2)).getString(); note = Info.getUTFStr(note); FileItem fileItem = (FileItem) items.get(1); if (fileItem.getName() != null && fileItem.getSize() != 0) { if (fileItem.getName() != null && fileItem.getSize() != 0) { File fullFile = new File(fileItem.getName()); img = Info.generalFileName(fullFile.getName()); File newFile = new File( request.getRealPath("/upfile/") + "/" + img); try { fileItem.write(newFile); } catch (Exception e) { e.printStackTrace(); } } else {
复制
if (ac.equals("uploadimg")) { try { String filename = ""; request.setCharacterEncoding("utf-8"); RequestContext requestContext = new ServletRequestContext( request); if (FileUpload.isMultipartContent(requestContext)) { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(new File(request .getRealPath("/upfile/") + "/")); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(100 * 1024 * 1024); List items = new ArrayList(); items = upload.parseRequest(request); FileItem fileItem = (FileItem) items.get(0); if (fileItem.getName() != null && fileItem.getSize() != 0) { if (fileItem.getName() != null && fileItem.getSize() != 0) { File fullFile = new File(fileItem.getName()); filename = Info.generalFileName(fullFile.getName()); File newFile = new File( request.getRealPath("/upfile/") + "/" + filename); try { fileItem.write(newFile); } catch (Exception e) { e.printStackTrace(); } } else { } } } go("/js/uploadimg.jsp?filename=" + filename, request, response); } catch (Exception e1) { e1.printStackTrace(); } } // 库存预警数值设置 if (ac.equals("kcwarningset")) { String num = request.getParameter("num"); String id = request.getParameter("id"); dao.commOper("update kcwarnning set num=" + Integer.parseInt(num) + " where id=" + id); request.setAttribute("suc", ""); go("/admin/kcwarningset.jsp", request, response); } // 美食入库 if (ac.equals("kcinto")) { String pid = request.getParameter("pid");
复制
// 表现层代码 protected String info; // 请求路径 protected String path; // 服务器请求对象 protected HttpServletRequest request; /* * 仅仅只是加到路径中去 */ protected String parameter = ""; /** * * @param 下一页的分页链接 * @param 一页最大记录数 * @param 当前HttpServletRequest对象 * @param 数据库操作对象 */ protected PageManager(String path, int pageSize, HttpServletRequest request) { // 任意一个dao都行 this.currentPage = 1; this.pageNumber = 1; this.count = 0; this.pageSize = pageSize <= 0 ? DEFAULTPAGESIZE : pageSize; this.request = request; this.path = path; request.setAttribute("page", this); try { this.currentPage = Integer.parseInt(request .getParameter("currentPage")) <= 0 ? 1 : Integer .parseInt(request.getParameter("currentPage")); } catch (Exception e) { try { this.currentPage = Integer.parseInt((String) request .getSession().getAttribute("currentPage")); } catch (Exception e1) { this.currentPage = 1; }
复制
source=source.substring(0,length)+"..."; } return source; } public static String getDateStr(){ String dateString=""; try{//yyyyMMddHHmmss java.text.SimpleDateFormat formatter=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); java.util.Date currentTime_1=new java.util.Date(); dateString=formatter.format(currentTime_1); }catch(Exception e){ } return dateString; } public static String getAutoNo(){ String dateString=""; try{//yyyyMMddHHmmss java.text.SimpleDateFormat formatter=new java.text.SimpleDateFormat("MMddHHmmss"); java.util.Date currentTime_1=new java.util.Date(); dateString=formatter.format(currentTime_1); }catch(Exception e){ } return dateString; } public static void main(String[] g ) { //System.out.print(Info.getDateStr()); //System.out.println(a); } public static String getUTFStr(String str) { if(str==null){ return ""; } try { str = new String(str.getBytes("ISO-8859-1"),"utf-8"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block
复制
go("/admin/kcout.jsp", request, response); } else { dao.commOper("insert into kcrecord (pid,num,type,reason,savetime) values" + " ('" + pid + "','" + Integer.parseInt(num) + "','" + type + "','" + reason + "','" + savetime + "') "); request.setAttribute("suc", ""); go("/admin/kcout.jsp", request, response); } } // 新增图片 if (ac.equals("imgadvaddold")) { try { String img = ""; String imgtype = ""; request.setCharacterEncoding("utf-8"); RequestContext requestContext = new ServletRequestContext( request); if (FileUpload.isMultipartContent(requestContext)) { DiskFileItemFactory factory = new DiskFileItemFactory(); factory.setRepository(new File(request .getRealPath("/upfile/") + "/")); ServletFileUpload upload = new ServletFileUpload(factory); upload.setSizeMax(100 * 1024 * 1024); List items = new ArrayList(); items = upload.parseRequest(request); imgtype = ((FileItem) items.get(1)).getString(); imgtype = Info.getUTFStr(imgtype); FileItem fileItem = (FileItem) items.get(0); if (fileItem.getName() != null && fileItem.getSize() != 0) { if (fileItem.getName() != null && fileItem.getSize() != 0) { File fullFile = new File(fileItem.getName()); img = Info.generalFileName(fullFile.getName()); File newFile = new File( request.getRealPath("/upfile/") + "/" + img); try { fileItem.write(newFile); } catch (Exception e) { e.printStackTrace(); } } else { } }
复制