基于javaweb+mysql的jsp+servlet美食商城管理系统(java+jsp+bootstrap+jquery+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的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
if (ac.equals("frontlogin")) {
String uname = request.getParameter("uname");
String upass = request.getParameter("upass");
ArrayList cklist = (ArrayList) dao
.select("select * from member where uname='" + uname
+ "' and upass='" + upass + "' and delstatus='0'");
if (cklist.size() > 0) {
session.setAttribute("member", cklist.get(0));
go("/index.jsp", request, response);
} else {
request.setAttribute("no", "用户名或密码错误!");
go("/login.jsp", request, response);
}
}
// 前台退出
if (ac.equals("frontexit")) {
session.removeAttribute("member");
go("/index.jsp", request, response);
}
// 发布美食
if (ac.equals("goodsadd")) {
try {
String goodno = Info.getAutoNo();
String goodname = "";
String fid = "";
String sid = "";
String goodpp = "";
String price = "";
String filename = "";
String note = "";
String shstatus = "通过";
String istj = "no";
String savetime = Info.getDateStr();
String tprice = "";
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);
+ "','" + type + "')");
request.setAttribute("suc", "");
go("admin/noticesadd.jsp", request, response);
}
// 编辑公告
if (ac.equals("noticesedit")) {
String id = request.getParameter("id");
String title = request.getParameter("title");
String note = request.getParameter("note");
dao.commOper("update news set title='" + title + "',note='" + note
+ "' where id=" + id);
request.setAttribute("suc", "");
go("admin/noticesedit.jsp?id=" + id, request, response);
}
// 新增链接
if (ac.equals("yqlinkadd")) {
String linkname = request.getParameter("linkname");
String linkurl = request.getParameter("linkurl");
dao.commOper("insert into yqlink (linkname,linkurl) "
+ " values ('" + linkname + "','" + linkurl + "')");
request.setAttribute("suc", "操作成功!");
go("admin/yqlink.jsp", request, response);
}
// 编辑公告
if (ac.equals("yqlinkedit")) {
String id = request.getParameter("id");
String linkname = request.getParameter("linkname");
String linkurl = request.getParameter("linkurl");
dao.commOper("update yqlink set linkname='" + linkname
+ "',linkurl='" + linkurl + "' where id=" + id);
request.setAttribute("suc", "操作成功!");
go("admin/yqlink.jsp", request, response);
}
// 网站信息编辑
if (ac.equals("siteinfoedit")) {
String id = request.getParameter("id");
HashMap map = dao.select("select * from siteinfo where id=" + id)
.get(0);
try {
String tel = "";
String addr = "";
String note = "";
String logoimg = map.get("logoimg").toString();
request.setCharacterEncoding("utf-8");
RequestContext requestContext = new ServletRequestContext(
request);
if (FileUpload.isMultipartContent(requestContext)) {
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(new File(request
.getRealPath("/upfile/") + "/"));
String price = "";
String filename = "";
String note = "";
String shstatus = "通过";
String istj = "no";
String savetime = Info.getDateStr();
String tprice = "";
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);
if(d1[2].length()==1)
{
DATE1 = DATE1+"-0"+d1[2];
}else{
DATE1 = DATE1+"-"+d1[2];
}
String[] d2 = DATE2.split("-");
if(d2[1].length()==1)
{
DATE2 = d2[0]+"-0"+d2[1];
}else{
DATE2 = d2[0]+"-"+d2[1];
}
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;
}
/**
* 比较时间大小
* @param 当前HttpServletRequest对象
* @param 数据库操作对象
*/
public static PageManager getPage(String path, int pageSize,
HttpServletRequest request) {
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) {
}
public class Info {
public static String tform(HashMap map)
{
if(map.get("isgood")!=null){
+ memberid
+ "','"
+ note
+ "','"
+ savetime + "')");
request.setAttribute("suc", "");
go("/goodsx.jsp?id=" + goodid, request, response);
}
// 美食购买成功后的评价
if (ac.equals("pj")) {
String goodid = request.getParameter("goodid");
String memberid = member.get("id").toString();
String jb = request.getParameter("jb");
String msg = request.getParameter("msg");
String savetime = Info.getDateStr();
HashMap mm = dao.select("select * from goods where id=" + goodid)
.get(0);
dao.commOper("insert into pj (goodid,goodsaver,memberid,jb,msg,savetime,hf) values "
+ "('"
+ goodid
+ "','"
+ mm.get("saver")
+ "','"
+ memberid
+ "','"
+ jb
+ "','"
+ msg
+ "','"
+ savetime
+ "','') ");
request.setAttribute("suc", "美食评价成功!");
go("/mydd.jsp", request, response);
}
// 管理员回复评价
if (ac.equals("pjhf")) {
String id = request.getParameter("id");
String gid = request.getParameter("gid");
String hf = request.getParameter("hf");
dao.commOper("update pj set hf='" + hf + "' where id=" + id);
request.setAttribute("suc", "评价回复成功!");
go("/admin/goodpj.jsp?gid=" + gid, request, response);
}
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
MainMethod responses = new MainMethod();
public void go(String url, HttpServletRequest request,
HttpServletResponse response) {
try {
request.getRequestDispatcher(url).forward(request, response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void gor(String url, HttpServletRequest request,
HttpServletResponse response) {
try {
response.sendRedirect(url);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
HashMap admin = (HashMap) session.getAttribute("admin");
HashMap member = (HashMap) session.getAttribute("member");
String ac = request.getParameter("ac");
if (ac == null)
ac = "";
CommDAO dao = new CommDAO();
String date = Info.getDateStr();
String today = date.substring(0, 10);
String tomonth = date.substring(0, 7);
// 登录
if (ac.equals("login")) {
String username = request.getParameter("username");
String userpwd = request.getParameter("userpwd");
String sql = "select * from sysuser where username='" + username
+ "' and userpwd='" + userpwd
}
}
}
String sql = "update siteinfo set tel='" + tel + "',addr='"
+ addr + "',note='" + note + "',logoimg='" + logoimg
+ "' where id=" + id;
dao.commOper(sql);
request.setAttribute("suc", "");
go("/admin/siteinfo.jsp?id=" + id, request, response);
} catch (Exception e1) {
e1.printStackTrace();
request.setAttribute("error", "");
request.getRequestDispatcher("/admin/siteinfo.jsp?id=" + id)
.forward(request, response);
}
}
// 检查用户名唯一性AJAX
if (ac.equals("sysuserscheck")) {
String username = request.getParameter("username");
ArrayList cklist = (ArrayList) dao
.select("select * from sysuser where username='" + username
+ "' and delstatus='0' ");
if (cklist.size() > 0) {
out.write("1");
} else {
out.write("0");
}
}
// 新增管理员
if (ac.equals("sysuseradd")) {
String usertype = "管理员";
String username = request.getParameter("username");
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");
String delstatus = "0";
String savetime = Info.getDateStr();
dao.commOper("insert into sysuser (usertype,username,userpwd,realname,sex,idcard,tel,email,addr,delstatus,savetime)"
+ " values ('"
return source;
while(done){
start=sourceLowcase.indexOf(from,start);
if(start==-1) {
break;
}
subLowcase1=sourceLowcase.substring(0,start);
sub1=source.substring(0,start);
end=sourceLowcase.indexOf(to,start);
if(end==-1){
end=sourceLowcase.indexOf("/>",start);
if(end==-1) {
done=false;
}
}
else{
end=end+to.length();
subLowcase2=sourceLowcase.substring(end,source.length());
sub2=source.substring(end,source.length());
sourceLowcase=subLowcase1+subLowcase2;
source=sub1+sub2;
}
//System.out.println(start+" "+end);
}
return source.replaceAll(" ", "");
}
public static void delPic(String path,String img)
{
if(img!=null)
{
if(!img.equals(""))
{
File file1=new File(path + "/" + img);
if(file1.exists() ) {
file1.deleteOnExit();
//file1.delete();
}}}
}
request.setAttribute("suc", "收藏成功!");
go("/" + page, request, response);
} else {
request.setAttribute("suc", "此美食已收藏过!");
go("/" + page, request, response);
}
}
}
// 取消收藏
if (ac.equals("delfav")) {
String goodid = request.getParameter("goodid");
String page = request.getParameter("page");
dao.commOper("delete from fav where memberid='" + member.get("id")
+ "' and goodid='" + goodid + "'");
request.setAttribute("suc", "取消收藏成功!");
go("/" + page, request, response);
}
// 新增收货地址
if (ac.equals("addradd")) {
String memberid = member.get("id").toString();
String shr = request.getParameter("shr");
String shrtel = request.getParameter("shrtel");
String shraddr = request.getParameter("shraddr");
String delstatus = "0";
dao.commOper("insert into addr (memberid,shr,shrtel,shraddr,delstatus) values "
+ "('"
+ memberid
+ "','"
+ shr
+ "','"
+ shrtel
+ "','"
+ shraddr + "','" + delstatus + "') ");
request.setAttribute("suc", "操作成功!");
go("/addr.jsp", request, response);
}
// 检查用户名唯一性AJAX 系统用户
if (ac.equals("usernamecheck")) {
String username = request.getParameter("username");
ArrayList cklist = (ArrayList) dao
.select("select * from sysuser where username='" + username
+ "' and delstatus='0' ");
if (cklist.size() > 0) {
out.print("false");
} else {
out.print("true");
}
go("/" + page, request, response);
} else {
request.setAttribute("suc", "此美食已收藏过!");
go("/" + page, request, response);
}
}
}
// 取消收藏
if (ac.equals("delfav")) {
String goodid = request.getParameter("goodid");
String page = request.getParameter("page");
dao.commOper("delete from fav where memberid='" + member.get("id")
+ "' and goodid='" + goodid + "'");
request.setAttribute("suc", "取消收藏成功!");
go("/" + page, request, response);
}
// 新增收货地址
if (ac.equals("addradd")) {
String memberid = member.get("id").toString();
String shr = request.getParameter("shr");
String shrtel = request.getParameter("shrtel");
String shraddr = request.getParameter("shraddr");
String delstatus = "0";
dao.commOper("insert into addr (memberid,shr,shrtel,shraddr,delstatus) values "
+ "('"
+ memberid
+ "','"
+ shr
+ "','"
+ shrtel
+ "','"
+ shraddr + "','" + delstatus + "') ");
request.setAttribute("suc", "操作成功!");
go("/addr.jsp", request, response);
}
// 检查用户名唯一性AJAX 系统用户
if (ac.equals("usernamecheck")) {
String username = request.getParameter("username");
ArrayList cklist = (ArrayList) dao
.select("select * from sysuser where username='" + username
+ "' and delstatus='0' ");
if (cklist.size() > 0) {
out.print("false");
} else {
out.print("true");
}
}
if (ac.equals("useradd")) {
String username = request.getParameter("username");
String userpwd = request.getParameter("userpwd");
String email = request.getParameter("email") == null ? "" : request
request.setAttribute("info", "密码修改成功!");
} else {
request.setAttribute("info", "旧密码不正确!");
}
go("/admin/myaccount.jsp", request, response);
}
if (ac.equals("aboutedit")) {
String lxr = request.getParameter("lxr");
String tel = request.getParameter("tel");
String addr = request.getParameter("addr");
String note = request.getParameter("note");
dao.commOper("update about set lxr='" + lxr + "',tel='" + tel
+ "',addr='" + addr + "',note='" + note + "' where id=1");
request.setAttribute("suc", "操作成功!");
go("/admin/aboutedit.jsp", request, response);
}
if (ac.equals("msgadd")) {
String msg = request.getParameter("msg");
String hfmsg = "";
String savetime = Info.getDateStr();
String memberid = member.get("id").toString();
dao.commOper("insert into chat (msg,hfmsg,savetime,memberid) values "
+ "('"
+ msg
+ "','"
+ hfmsg
+ "','"
+ savetime
+ "','"
+ memberid + "')");
request.setAttribute("suc", "留言成功!");
go("/msg.jsp", request, response);
}
if (ac.equals("msghf")) {
String id = request.getParameter("id");
String hfmsg = request.getParameter("hfmsg");
dao.commOper("update chat set hfmsg='" + hfmsg + "' where id="
+ id);
request.setAttribute("suc", "回复成功!");
request.getRequestDispatcher("/admin/goodsgl.jsp").forward(
request, response);
}
}
// 会员修改美食
if (ac.equals("goodsedit")) {
String id = request.getParameter("id");
HashMap map = dao.select("select * from goods where id=" + id).get(
0);
try {
String goodname = "";
String fid = "";
String sid = "";
String goodpp = "";
String price = "";
String note = "";
String filename = map.get("filename").toString();
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);
}
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"));
}
}
String note = request.getParameter("note");
dao.commOper("update about set lxr='" + lxr + "',tel='" + tel
+ "',addr='" + addr + "',note='" + note + "' where id=1");
request.setAttribute("suc", "操作成功!");
go("/admin/aboutedit.jsp", request, response);
}
if (ac.equals("msgadd")) {
String msg = request.getParameter("msg");
String hfmsg = "";
String savetime = Info.getDateStr();
String memberid = member.get("id").toString();
dao.commOper("insert into chat (msg,hfmsg,savetime,memberid) values "
+ "('"
+ msg
+ "','"
+ hfmsg
+ "','"
+ savetime
+ "','"
+ memberid + "')");
request.setAttribute("suc", "留言成功!");
go("/msg.jsp", request, response);
}
if (ac.equals("msghf")) {
String id = request.getParameter("id");
String hfmsg = request.getParameter("hfmsg");
dao.commOper("update chat set hfmsg='" + hfmsg + "' where id="
+ id);
request.setAttribute("suc", "回复成功!");
go("/admin/msglist.jsp", request, response);
}
if (ac.equals("goodstjset")) {
String id = request.getParameter("id");
String tprice = request.getParameter("tprice") == null ? ""
: request.getParameter("tprice");
if (!tprice.equals("")) {
HashMap map = dao.select("select * from goods where id=" + id)
.get(0);
if (Double.valueOf(tprice) >= Double.valueOf(map.get("price")
.toString())) {
request.setAttribute("info", "特价必须低于原价!");
go("/admin/goodstjset.jsp?id=" + id, request, response);
} else {
dao.commOper("update goods set tprice='" + tprice
+ "' where id=" + id);
request.setAttribute("suc", "特价设置成功!");
go("/admin/goodsgl.jsp", request, response);
}
* Constructor of the object.
*/
public Upload() {
super();
}
/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
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) {
// 提交生成订单 填写收货信息
if (ac.equals("submitorder")) {
String memberid = member.get("id").toString();
// 生成订单号
String ddno = Info.getAutoNo();
String shrname = "";
String shrtel = "";
String shraddr = request.getParameter("addr");
double ddprice = 0.0;
String fhstatus = "待发货";
String shstatus = "待收货";
String fkstatus = "待付款";
String wlinfo = "暂无物流信息";
String savetime = Info.getDateStr();
// 查询该会员的购物车所有美食
ArrayList<HashMap> carlist = (ArrayList<HashMap>) dao
.select("select * from car where mid=" + memberid);
for (HashMap carmap : carlist) {
HashMap goodmap = dao.select(
"select * from goods where id=" + carmap.get("gid"))
.get(0);
if (goodmap.get("tprice") != null
&& !goodmap.get("tprice").equals("")) {
ddprice += Double.valueOf(goodmap.get("tprice").toString())
* Integer.valueOf(carmap.get("sl").toString());
} else {
ddprice += Double.valueOf(goodmap.get("price").toString())
* Integer.valueOf(carmap.get("sl").toString());
}
dao.commOper("insert into dddetail (ddno,goodid,sl) values ('"
+ ddno + "','" + carmap.get("gid") + "','"
+ carmap.get("sl") + "') ");
}
dao.commOper("insert into ddinfo (ddno,memberid,ddprice,fhstatus,savetime,shstatus,wlinfo,fkstatus,shrname,shrtel,shraddr) values "
+ "('"
+ ddno
+ "','"
+ memberid
+ "','"
+ ddprice
+ "','"
+ fhstatus
+ "','"
+ savetime
+ "','"