当前位置: 首页 > news >正文

java web 服务员点餐系统demo 比较完整的前端后端+mysql + 图片上传 练习

目录结构


├── src/
│   └── com/
│       └── zfz/
│           ├── App.java
│           ├── dao/
│           │   ├── BaseDao.java
│           │   ├── CaiDao.java
│           │   ├── CdDao.java
│           │   ├── CdxqDao.java
│           │   ├── OrderDDao.java
│           │   ├── OrderDao.java
│           │   ├── UserDao.java
│           │   └── impl/
│           ├── filter/
│           │   ├── CharacterFilter.java
│           │   └── ListCaiFilter.java
│           ├── pojo/
│           │   ├── Cai.java
│           │   ├── Cd.java
│           │   ├── Cdxq.java
│           │   ├── CdxqView.java
│           │   ├── Order.java
│           │   ├── OrderD.java
│           │   ├── PageInFo.java
│           │   └── User.java
│           ├── service/
│           │   ├── CaiService.java
│           │   ├── CdService.java
│           │   ├── CdxqService.java
│           │   ├── OrderDService.java
│           │   ├── OrderService.java
│           │   ├── UserService.java
│           │   └── impl/
│           ├── servlet/
│           │   ├── AddCaiServlet.java
│           │   ├── AddCdServlet.java
│           │   ├── CDListServlet.java
│           │   ├── CDxqNumServlet.java
│           │   ├── CaiListServlet.java
│           │   ├── CreateOrderServlet.java
│           │   ├── DelCaiServlet.java
│           │   ├── FindCDXQServlet.java
│           │   ├── LoginServlet.java
│           │   ├── OutLoginServlet.java
│           │   ├── PreCaiServlet.java
│           │   ├── RegeditServlet.java
│           │   └── UpdateCaiServlet.java
│           └── utils/
│               └── StringUtils.java
├── web/
│   ├── WEB-INF/
│   │   ├── c.tld
│   │   ├── lib/
│   │   │   ├── commons-fileupload-1.2.2.jar
│   │   │   ├── commons-io-2.4.jar
│   │   │   ├── fastjson-1.2.9.jar
│   │   │   ├── hamcrest-2.2.jar
│   │   │   ├── jsp-api.jar
│   │   │   ├── jstl.jar
│   │   │   ├── junit-4.12.jar
│   │   │   ├── mysql-connector-j-8.0.33.jar
│   │   │   ├── mysql-connector-java-5.1.47.jar
│   │   │   ├── servlet-api.jar
│   │   │   └── standard.jar
│   │   └── web.xml
│   ├── cai_manage.jsp
│   ├── err.jsp
│   ├── index.jsp
│   ├── login.jsp
│   ├── look_candai.jsp
│   ├── look_dingdan.jsp
│   ├── regedit.jsp
│   └── static/
│       └── js/
│           └── jQuery-1.8.3.js
└── demo.iml

用到的表结构


CREATE TABLE cai (cid INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(100) NOT NULL,price DOUBLE NOT NULL,img VARCHAR(255),is_xs TINYINT(1) NOT NULL,count INT DEFAULT 0
);CREATE TABLE cd (cdid INT PRIMARY KEY AUTO_INCREMENT,cdno VARCHAR(50) NOT NULL,del BOOLEAN DEFAULT FALSE
);CREATE TABLE cdxq (did INT PRIMARY KEY AUTO_INCREMENT,cdid INT NOT NULL,cid INT NOT NULL,num INT NOT NULL,FOREIGN KEY (cdid) REFERENCES cd(cdid),FOREIGN KEY (cid) REFERENCES cai(cid)
);CREATE TABLE `order` (oid INT PRIMARY KEY AUTO_INCREMENT,ono VARCHAR(50) NOT NULL,total DOUBLE NOT NULL,create_time DATETIME NOT NULL
);CREATE TABLE order_d (id INT PRIMARY KEY AUTO_INCREMENT,oid INT NOT NULL,cname VARCHAR(100) NOT NULL,price DOUBLE NOT NULL,num INT NOT NULL,img VARCHAR(255),FOREIGN KEY (oid) REFERENCES `order`(oid)
);CREATE TABLE user (uid INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(50) NOT NULL
);CREATE VIEW cdxq_view AS
SELECT cdxq.did AS did,cdxq.cdid AS cdid,cai.img AS img,cai.name AS name,cai.price AS price,cdxq.num AS num,(cai.price * cdxq.num) AS total
FROM cdxq
INNER JOIN cai ON cdxq.cid = cai.cid;

该demo是一个基于Java Web的外卖/餐饮管理系统,主要功能包括菜品管理、订单处理和用户管理。以下是项目的核心组件和功能分析:

1. 项目架构

  • 技术栈 :Java + JSP + Servlet + MySQL + JDBC
  • 分层结构 :
    • 数据访问层(DAO): CaiDaoImpl.java 等类负责数据库操作
    • 业务逻辑层(Service):处理核心业务规则
    • 控制层(Servlet): CreateOrderServlet.java 等处理HTTP请求
    • 视图层(JSP): look_dingdan.jsp 等页面提供用户界面
    • 实体类(POJO): CdxqView.java 等映射数据库表结构

2. 核心功能模块

  • 菜品管理 :

    • 通过 CaiDaoImpl 操作菜品表(cai)
    • 支持菜品的增删改查功能
  • 订单处理 :

    • 订单主表(order)和明细表(order_d)分离设计
    • 通过 CdxqDaoImpl 处理订单详情
    • cdxq_view 提供订单详情的多表关联查询
  • 用户管理 :

    • 通过 UserDaoImpl 处理用户信息
    • 包含登录验证等基础功能

3. 数据库设计

  • 主要表结构 :
    • 用户表(user):存储用户信息
    • 菜品表(cai):存储菜品信息
    • 订单表(cd/order):存储订单主信息
    • 订单详情表(cdxq/order_d):存储订单明细
    • 视图(cdxq_view):关联查询订单和菜品信息

4. 技术特点

  • 使用JDBC进行数据库连接( BaseDao.java
  • 通过过滤器( CharacterFilter.java )处理字符编码
  • 采用MVC设计模式分离关注点

5. 潜在问题与优化点

  • 建议增加连接池管理数据库连接
  • 可考虑引入ORM框架(如MyBatis)简化数据访问层

实体类

//菜品实体类
public class Cai {private Integer cid;private String name;private Double price;private String img;private  Integer count;private Boolean is_xs;
}//餐袋实体类
public class Cd {private Integer cdid;private String cdno;private Boolean del;
}//餐袋详情实体类
public class Cdxq {private Integer did;private Integer cdid;private Integer cid;private Integer num;
}// 视图
public class CdxqView {private Integer did;private Integer cdid;private String img;private String name;private Double price;private Integer num;private Double total;
}//订单实体类
public class Order {private Integer oid;private  String ono;private Double total;private Date create_time;
}//订单详情
public class OrderD {private Integer odid;private Integer oid;private  String cname;private Double price;private Integer num;private  String img;
}public class User {private Integer uid;private String username;private String password;
}

工具类

package com.zfz.pojo;import java.util.List;/*
传递分页的数据*/
public class PageInFo<T> {//当前页private Integer pageNo;//显示数据的条数private Integer pageNum;//总数据条数private Integer total;//(总数据-1)/显示数+1//16    4   4//17    4   5//总页数private Integer pageTotal;//当前private List<T> list;public PageInFo() {}public PageInFo(Integer pageNo, Integer pageNum, Integer total, Integer pageTotal, List<T> list) {this.pageNo = pageNo;this.pageNum = pageNum;this.total = total;this.pageTotal = pageTotal;this.list = list;}public Integer getPageNo() {return pageNo;}public void setPageNo(Integer pageNo) {this.pageNo = pageNo;}public Integer getPageNum() {return pageNum;}public void setPageNum(Integer pageNum) {this.pageNum = pageNum;}public Integer getTotal() {return total;}public void setTotal(Integer total) {this.total = total;}public Integer getPageTotal() {return pageTotal;}public void setPageTotal(Integer pageTotal) {this.pageTotal = pageTotal;}public List<T> getList() {return list;}public void setList(List<T> list) {this.list = list;}
}public class StringUtils {//字符串不为空,空返回为假的public static boolean isNotEmpty(String str) {return str != null && str.length() != 0;}}package com.zfz.dao;import com.zfz.pojo.User;import java.sql.*;//连接数据库工具
public class BaseDao {private String url = "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8";private String username = "root";private String password = "1234";private static String driver = "com.mysql.cj.jdbc.Driver";private Connection conn;private PreparedStatement ps;private ResultSet rs;static {try {//加载驱动Class.forName(driver);} catch (ClassNotFoundException e) {e.printStackTrace();}}//创建链接private void getConnection() {try {conn = DriverManager.getConnection(url, username, password);} catch (SQLException e) {e.printStackTrace();}}//执行sql//增删改public int executeUpdate(String sql, Object... objs) {//获得连接getConnection();try {//select * from user where username=?and password=?ps = conn.prepareStatement(sql);if (objs != null) {for (int i = 0; i < objs.length; i++) {ps.setObject(i + 1, objs[i]);}}int i = ps.executeUpdate();return i;} catch (SQLException e) {e.printStackTrace();} finally {close();}return -1;}//查询public ResultSet executeQuery(String sql,Object... objs) {getConnection();try {ps = conn.prepareStatement(sql);if (objs != null) {for (int i = 0; i < objs.length; i++) {ps.setObject(i + 1, objs[i]);}}rs = ps.executeQuery();return rs;} catch (SQLException e) {e.printStackTrace();}return null;}//关闭public void close() {try {if (rs != null) {rs.close();}if (ps != null) {ps.close();}if (conn != null) {conn.close();}} catch (SQLException e) {System.out.println("关闭出错");}}//    public void test() {
//        try {
//            Class.forName(driver);
//            Connection connection = DriverManager.getConnection(url, username, password);
//            System.out.println("连接成功");
//
//        } catch (ClassNotFoundException e) {
//            e.printStackTrace();
//        } catch (SQLException e) {
//            e.printStackTrace();
//        }
//    }public static void main(String[] args) {BaseDao BaseDao = new BaseDao();//BaseDao.test();User user = new User(null, "赵六60", "132456");String sql = "insert into user(username,password) values('" + user.getUsername() + "'," + user.getPassword() + ")";int i = BaseDao.executeUpdate(sql);System.out.println(i);}}

过滤器


import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;//处理乱码
@WebFilter("/*")
public class CharacterFilter implements Filter {@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {servletRequest.setCharacterEncoding("utf-8");servletResponse.setCharacterEncoding("utf-8");filterChain.doFilter(servletRequest, servletResponse);}@Overridepublic void destroy() {}
}import com.zfz.pojo.Cai;
import com.zfz.service.CaiService;
import com.zfz.service.impl.CaiServiceImpl;import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;@WebFilter("/cai_manage.jsp")
public class ListCaiFilter implements Filter {private CaiService caiService = new CaiServiceImpl();public void destroy() {}public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {HttpSession session = ((HttpServletRequest) req).getSession();String cname = req.getParameter("cname");List<Cai> cais = caiService.listCaiByName(cname);session.setAttribute("caiList", cais);chain.doFilter(req, resp);}public void init(FilterConfig config) throws ServletException {}}

dao层

import com.zfz.pojo.User;//对用户表进行增删改查
public interface UserDao {//增加用户信息boolean addUser(User user);//查询用户信息User dindUserByUsernameAndPassword(User user);}import com.zfz.pojo.OrderD;public interface OrderDDao {int addOrderD(OrderD orderD);
}import com.zfz.pojo.Order;public interface OrderDao {int addOrder(Order order);}import com.zfz.pojo.Cdxq;
import com.zfz.pojo.CdxqView;import java.util.List;public interface CdxqDao {int addCdxq(Cdxq cdxq);int updateCdxq(Cdxq cdxq);int delCdxq(Integer did);List<Cdxq> listCdxqByCDID(Integer cdid);List<CdxqView> listCdxqViewByCDID(Integer cdid);
}import com.zfz.pojo.Cd;
import com.zfz.pojo.PageInFo;import java.util.List;public interface CdDao {int addCD(Cd cd);int updateCD(Cd cd);List<Cd> listCDsByISDEL(Boolean del);PageInFo<Cd> pageCDByISDEL(Integer pageNo,Integer pageNum,Boolean del);
}import com.zfz.pojo.Cai;
import com.zfz.pojo.Cd;
import com.zfz.pojo.PageInFo;import java.util.List;
//菜品实例化接口
public interface CaiDao {//添加int addCai(Cai cai);//删除int delCai(Integer cai);//修改int updateCai(Cai cai);//修改销量int updateCaiCount(Integer cid);//查询菜List<Cai> listCaiByName(String name);//根据是否在售查询菜品信息List<Cai> listCaiByIS_XS(Boolean is_xs);PageInFo<Cai> pageCaiByISDEL(Integer pageNo, Integer pageNum, Boolean is_xs);
}

dao实现层

package com.zfz.dao.impl;import com.zfz.dao.BaseDao;
import com.zfz.dao.UserDao;
import com.zfz.pojo.User;
import java.sql.ResultSet;
import java.sql.SQLException;public class UserDaoImpl extends BaseDao implements UserDao {@Overridepublic boolean addUser(User user) {String sql = "insert into user(username,password) values(?,?)";int i = this.executeUpdate(sql,user.getUsername(),user.getPassword());return i > 0 ? true : false;}@Overridepublic User dindUserByUsernameAndPassword(User user) {//selete * from user where username=""and passwoed="" '1'or'1=1 'String sql = "select * from user where username= ? and password=?";ResultSet rs = executeQuery(sql,user.getUsername(),user.getPassword());try {User user1=null;if (rs.next()){user1= new User(rs.getInt(1),rs.getString(2),rs.getString(3));}close();return user1;} catch (SQLException e) {e.printStackTrace();}return null;}//    public static void main(String[] args) {
//        UserDaoImpl UserDaoImpl=new UserDaoImpl();
//        User user = new User(null,"赵六70","132456");
//      //  String sql="insert into user(username,password) values('"+user.getUsername()+"',"+user.getPassword()+")";
//        boolean b = UserDaoImpl.addUser(user);
//        System.out.println(b);
//    }
}
package com.zfz.dao.impl;import com.zfz.dao.BaseDao;
import com.zfz.dao.OrderDDao;
import com.zfz.pojo.OrderD;public class OrderDDaoImpl extends BaseDao implements OrderDDao {@Overridepublic int addOrderD(OrderD orderD) {String sql = "insert into order_d (oid,cname,price,num,img) values(?,?,?,?,?)";return executeUpdate(sql,orderD.getOid(), orderD.getCname(), orderD.getPrice(), orderD.getNum(), orderD.getImg());}
}package com.zfz.dao.impl;import com.zfz.dao.BaseDao;
import com.zfz.dao.OrderDao;
import com.zfz.pojo.Order;import java.sql.ResultSet;public class OrderDaoImpl extends BaseDao implements OrderDao {@Overridepublic int addOrder(Order order) {String sql = "insert into `order`(ono,total,create_time) values (?,?,?)";int i = executeUpdate(sql, order.getOno(), order.getTotal(), order.getCreate_time());sql = "select oid from `order` where ono=?";ResultSet resultSet = executeQuery(sql, order.getOno());try {if (resultSet.next()) {return resultSet.getInt(1);}} catch (Exception e) {e.printStackTrace();}return -1;}
}package com.zfz.dao.impl;import com.zfz.dao.BaseDao;
import com.zfz.dao.CdxqDao;
import com.zfz.pojo.Cdxq;
import com.zfz.pojo.CdxqView;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class CdxqDaoImpl extends BaseDao implements CdxqDao {@Overridepublic int addCdxq(Cdxq cdxq) {String sql = "insert into cdxq (cdid,cid,num) values (?,?,?)";return executeUpdate(sql, cdxq.getCdid(), cdxq.getCid(), cdxq.getNum());}@Overridepublic int updateCdxq(Cdxq cdxq) {String sql = "update cdxq set num=? where did=?";return executeUpdate(sql, cdxq.getNum(), cdxq.getDid());}@Overridepublic int delCdxq(Integer did) {String sql = "delete from cdxq where did=?";return executeUpdate(sql, did);}@Overridepublic List<Cdxq> listCdxqByCDID(Integer cdid) {String sql = "select * from cdxq where cdid=?";ResultSet rs = executeQuery(sql, cdid);List list = new ArrayList();try {while (rs.next()) {list.add(new Cdxq(rs.getInt(1), rs.getInt(2), rs.getInt(3), rs.getInt(4)));}} catch (SQLException e) {e.printStackTrace();}return list;}@Overridepublic List<CdxqView> listCdxqViewByCDID(Integer cdid) {String sql = "select * from cdxq_view where cdid=?";ResultSet rs = executeQuery(sql, cdid);List list = new ArrayList();try {while (rs.next()) {list.add(new CdxqView(rs.getInt(1), rs.getInt(2), rs.getString(3), rs.getString(4),rs.getDouble(5),rs.getInt(6),rs.getDouble(7)));}} catch (SQLException e) {e.printStackTrace();}return list;}
}package com.zfz.dao.impl;import com.zfz.dao.BaseDao;
import com.zfz.dao.CdDao;
import com.zfz.pojo.Cd;
import com.zfz.pojo.PageInFo;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;public class CdDaoImpl extends BaseDao implements CdDao {@Overridepublic int addCD(Cd cd) {String sql = "insert into cd(cdno) values (?)";executeUpdate(sql, cd.getCdno());sql = "select * from cd where cdno=? order by cdid desc";ResultSet rs = executeQuery(sql, cd.getCdno());try {if (rs.next()) {return rs.getInt(1);}} catch (SQLException e) {e.printStackTrace();}return -1;}@Overridepublic int updateCD(Cd cd) {String sql = "update cd set del=? where cdid=?";return executeUpdate(sql, cd.getDel(), cd.getCdid());}@Overridepublic List<Cd> listCDsByISDEL(Boolean del) {String sql = "select * from cd where del=?";ResultSet rs = executeQuery(sql, del);List list = new ArrayList();try {while (rs.next()) {list.add(new Cd(rs.getInt(1), rs.getString(2), rs.getBoolean(3)));}close();} catch (SQLException e) {e.printStackTrace();}return list;}@Overridepublic PageInFo<Cd> pageCDByISDEL(Integer pageNo, Integer pageNum, Boolean del) {String sql = "SELECT * FROM cd where del=? limit ?,?";PageInFo<Cd> pageInFo = new PageInFo<>();ResultSet rs = executeQuery(sql, del, (pageNo - 1) * pageNum, pageNum);List list = new ArrayList();try {while (rs.next()) {list.add(new Cd(rs.getInt(1), rs.getString(2), rs.getBoolean(3)));}close();//当前页的数据pageInFo.setList(list);//查询总条数sql = "select count(*)from cd where del=?";rs = executeQuery(sql, del);if (rs.next()) {//拿到总条数pageInFo.setTotal(rs.getInt(1));}close();//当前页pageInFo.setPageNo(pageNo);//每页显示条数pageInFo.setPageNum(pageNum);//总页数pageInFo.setPageTotal((pageInFo.getTotal() - 1) / pageNum + 1);} catch (Exception e) {e.printStackTrace();}return pageInFo;}
}package com.zfz.dao.impl;import com.zfz.dao.BaseDao;
import com.zfz.dao.CaiDao;
import com.zfz.pojo.Cai;
import com.zfz.pojo.Cd;
import com.zfz.pojo.PageInFo;
import com.zfz.utils.StringUtils;import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;//菜品实例化
public class CaiDaoImpl extends BaseDao implements CaiDao {@Overridepublic int addCai(Cai cai) {String sql = "insert into cai (name,price,img,is_xs)values(?,?,?,?)";return executeUpdate(sql, cai.getName(), cai.getPrice(), cai.getImg(), cai.getIs_xs());}@Overridepublic int delCai(Integer cai) {String sql = "delete from cai where cid=?";return executeUpdate(sql, cai);}@Overridepublic int updateCai(Cai cai) {String sql = "update cai set name=?,price=?,img=?,is_xs=? where cid=?";if (cai.getImg()==null){sql = "update cai set name=?,price=?,is_xs=? where cid=?";return executeUpdate(sql, cai.getName(), cai.getPrice(), cai.getIs_xs(), cai.getCid());}return executeUpdate(sql, cai.getName(), cai.getPrice(), cai.getImg(), cai.getIs_xs(), cai.getCid());}
//增加猜菜的销量@Overridepublic int updateCaiCount(Integer cid) {String sql = "update cai set count=count+1 where cid=?";return executeUpdate(sql, cid);}@Overridepublic List<Cai> listCaiByName(String name) {List list = new ArrayList();if (!StringUtils.isNotEmpty(name)) {String sql = "select * from cai";ResultSet rs = executeQuery(sql);try {while (rs.next()) {Cai cai = new Cai(rs.getInt(1), rs.getString(2), rs.getDouble(3), rs.getString(4), rs.getInt(5), rs.getBoolean(6));list.add(cai);}close();} catch (SQLException e) {e.printStackTrace();}} else {String sql = "select * from cai where name like ?";ResultSet rs = executeQuery(sql, "%" + name + "%");try {while (rs.next()) {Cai cai = new Cai(rs.getInt(1), rs.getString(2), rs.getDouble(3), rs.getString(4), rs.getInt(5), rs.getBoolean(6));list.add(cai);}close();} catch (SQLException e) {System.err.println("错误");}}return list;}@Overridepublic List<Cai> listCaiByIS_XS(Boolean is_xs) {String sql="select * from cai where is_xs=?";ResultSet rs = executeQuery(sql, is_xs);List list=new ArrayList();try {while (rs.next()) {Cai cai = new Cai(rs.getInt(1), rs.getString(2), rs.getDouble(3), rs.getString(4), rs.getInt(5), rs.getBoolean(6));list.add(cai);}close();} catch (SQLException e) {e.printStackTrace();}return list;}@Overridepublic PageInFo<Cai> pageCaiByISDEL(Integer pageNo, Integer pageNum, Boolean is_xs){String sql = "SELECT * FROM cai where is_xs=? limit ?,?";PageInFo<Cai> pageInFo = new PageInFo<>();ResultSet rs = executeQuery(sql, is_xs, (pageNo - 1) * pageNum, pageNum);List list = new ArrayList();try {while (rs.next()) {list.add(new Cai(rs.getInt(1), rs.getString(2), rs.getDouble(3),rs.getString(4),rs.getInt(5),rs.getBoolean(5)));}close();//当前页的数据pageInFo.setList(list);//查询总条数sql = "select count(*)from cai where is_xs=?";rs = executeQuery(sql, is_xs);if (rs.next()) {//拿到总条数pageInFo.setTotal(rs.getInt(1));}close();//当前页pageInFo.setPageNo(pageNo);//每页显示条数pageInFo.setPageNum(pageNum);//总页数pageInFo.setPageTotal((pageInFo.getTotal() - 1) / pageNum + 1);} catch (Exception e) {e.printStackTrace();}return pageInFo;
}
}

service层

import com.zfz.pojo.User;//用户服务
public interface UserService {
//用户注测boolean doRegedit(User user);//用户登陆User doLogin(User user);
}
import com.zfz.pojo.Order;public interface OrderService {int addOrder(Order order);
}
import com.zfz.pojo.OrderD;public interface OrderDService {int addOrderD(OrderD orderD);
}import com.zfz.pojo.Cdxq;
import com.zfz.pojo.CdxqView;import java.util.List;public interface CdxqService {int addCdxq(Cdxq cdxq);int updateCdxq(Cdxq cdxq);int delCdxq(Integer did);List<Cdxq> listCdxqByCDID(Integer cdid);List<CdxqView> listCdxqViewByCDID(Integer cdid);
}import com.zfz.pojo.Cd;
import com.zfz.pojo.PageInFo;import java.util.List;public interface CdService {int addCD(Cd cd);int updateCD(Cd cd);List<Cd> listCDsByISDEL(Boolean del);PageInFo<Cd>  pageCDByISDEL(Integer pageNo,Integer pageNum,Boolean del);
}import com.zfz.pojo.Cai;
import com.zfz.pojo.Cd;
import com.zfz.pojo.PageInFo;import java.util.List;public interface CaiService {int addCai(Cai cai);int delCai(Integer cid);int updateCai(Cai cai);int updateCaiCount(Integer cid);List<Cai> listCaiByName(String name);List<Cai> listCaiByIS_XS(Boolean is_xs);PageInFo<Cai> pageCaiByISDEL(Integer pageNo, Integer pageNum, Boolean is_xs);
}

service 实现层


package com.zfz.service.impl;import com.zfz.dao.UserDao;
import com.zfz.dao.impl.UserDaoImpl;
import com.zfz.pojo.User;
import com.zfz.service.UserService;
import com.zfz.utils.StringUtils;public class UserServiceImpl implements UserService {private UserDao userDao=new UserDaoImpl();@Overridepublic boolean doRegedit(User user) {if (!StringUtils.isNotEmpty(user.getUsername())){System.err.println("用户名不为空");return false;}if (!StringUtils.isNotEmpty(user.getPassword())){System.err.println("用户名不为空");return false;}return userDao.addUser(user);}@Overridepublic User doLogin(User user) {return userDao.dindUserByUsernameAndPassword(user);}
}package com.zfz.service.impl;import com.zfz.dao.OrderDao;
import com.zfz.dao.impl.OrderDaoImpl;
import com.zfz.pojo.Order;
import com.zfz.service.OrderService;import java.util.Date;public class OrderServiceImpl implements OrderService {private OrderDao orderDao=new OrderDaoImpl();@Overridepublic int addOrder(Order order) {order.setCreate_time(new Date());return orderDao.addOrder(order);}
}package com.zfz.service.impl;import com.zfz.dao.OrderDDao;
import com.zfz.dao.impl.OrderDDaoImpl;
import com.zfz.pojo.OrderD;
import com.zfz.service.OrderDService;public class OrderDServiceImpl implements OrderDService {private OrderDDao odao=new OrderDDaoImpl();@Overridepublic int addOrderD(OrderD orderD) {return odao.addOrderD(orderD);//报错,改好了}
}package com.zfz.service.impl;import com.zfz.dao.CdxqDao;
import com.zfz.dao.impl.CdxqDaoImpl;
import com.zfz.pojo.Cdxq;
import com.zfz.pojo.CdxqView;
import com.zfz.service.CdxqService;import java.util.List;public class CdxqServiceImpl implements CdxqService {private CdxqDao cdxqDao=new CdxqDaoImpl();@Overridepublic int addCdxq(Cdxq cdxq) {return cdxqDao.addCdxq(cdxq);}@Overridepublic int updateCdxq(Cdxq cdxq) {return cdxqDao.updateCdxq(cdxq);}@Overridepublic int delCdxq(Integer did) {return cdxqDao.delCdxq(did);}@Overridepublic List<Cdxq> listCdxqByCDID(Integer cdid) {return cdxqDao.listCdxqByCDID(cdid);}@Overridepublic List<CdxqView> listCdxqViewByCDID(Integer cdid) {return cdxqDao.listCdxqViewByCDID(cdid);}
}package com.zfz.service.impl;import com.zfz.dao.CdDao;
import com.zfz.dao.impl.CdDaoImpl;
import com.zfz.pojo.Cd;
import com.zfz.pojo.PageInFo;
import com.zfz.service.CdService;import java.util.List;public class CdServiceImpl implements CdService {private CdDao cdDao=new CdDaoImpl();@Overridepublic int addCD(Cd cd) {return cdDao.addCD(cd);}@Overridepublic int updateCD(Cd cd) {return cdDao.updateCD(cd);}@Overridepublic List<Cd> listCDsByISDEL(Boolean del) {return cdDao.listCDsByISDEL(del);}@Overridepublic PageInFo<Cd> pageCDByISDEL(Integer pageNo,Integer pageNum,Boolean del) {return cdDao.pageCDByISDEL(pageNo,pageNum,del);}
}package com.zfz.service.impl;import com.zfz.dao.CaiDao;
import com.zfz.dao.impl.CaiDaoImpl;
import com.zfz.pojo.Cai;
import com.zfz.pojo.Cd;
import com.zfz.pojo.PageInFo;
import com.zfz.service.CaiService;import java.util.List;public class CaiServiceImpl implements CaiService {private CaiDao caiDao=new CaiDaoImpl();@Overridepublic int addCai(Cai cai) {return caiDao.addCai(cai);}@Overridepublic int delCai(Integer cid) {return caiDao.delCai(cid);}@Overridepublic int updateCai(Cai cai) {return caiDao.updateCai(cai);}@Overridepublic int updateCaiCount(Integer cid) {return caiDao.updateCaiCount(cid);}@Overridepublic List<Cai> listCaiByName(String name) {return caiDao.listCaiByName(name);}@Overridepublic List<Cai> listCaiByIS_XS(Boolean is_xs) {return caiDao.listCaiByIS_XS(is_xs);}@Overridepublic PageInFo<Cai> pageCaiByISDEL(Integer pageNo, Integer pageNum, Boolean is_xs) {return caiDao.pageCaiByISDEL(pageNo,pageNum,is_xs);}
}

servlet 层

package com.zfz.servlet;import com.zfz.pojo.Cai;
import com.zfz.service.CaiService;
import com.zfz.service.impl.CaiServiceImpl;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;//添加菜品的servlet
@WebServlet("/addCai")
public class AddCaiServlet extends HttpServlet {//文件上传路径private static final String upload = "./upload/";private static final String ip = "http://127.0.0.1:8081/";private CaiService caiService = new CaiServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//判断表单提交是否符合文件上传类型Cai cai = new Cai();if (ServletFileUpload.isMultipartContent(request)) {//servletFileUpload,文件上传的相关对象ServletFileUpload fileUpload = new ServletFileUpload(new DiskFileItemFactory());//解析表单数据try {List<FileItem> list = fileUpload.parseRequest(request);for (FileItem fileItem : list) {if (fileItem.isFormField()) {//普通表单数据switch (fileItem.getFieldName()) {case "name":cai.setName(fileItem.getString("utf-8"));break;case "price":cai.setPrice(Double.parseDouble(fileItem.getString("utf-8")));break;case "is_xs":cai.setIs_xs("1".equals(fileItem.getString("utf-8")));break;}} else {//文件表单数据,文件名filenameString fileName = fileItem.getName();//应用服务器,应用上下文//当前项目运行路径String realPath = request.getServletContext().getRealPath(upload);String newFileName = UUID.randomUUID() + fileName.substring(fileName.lastIndexOf("."), fileName.length());File file = new File(realPath + newFileName);//判断文件上级是否有目录if (!file.getParentFile().isDirectory()) {//没有父级目录就创建file.getParentFile().mkdirs();}//文件上传到服务器fileItem.write(file);
//                        System.out.println("文件上传的路径"+file.getAbsolutePath());
//                        System.out.println("文件路径"+file.getPath());//拿到图片的网络路径String contextPath = request.getContextPath().length() > 1 ? request.getContextPath() : "";String url = ip + contextPath + upload.substring(1) + newFileName;cai.setImg(url);}}//请求中参数存放到数据库caiService.addCai(cai);//重定向response.sendRedirect("./cai_manage.jsp");} catch (Exception e) {System.out.println("错啦七十八行");e.printStackTrace();}} else {response.sendRedirect("./err.js");}}}package com.zfz.servlet;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.zfz.pojo.Cd;
import com.zfz.pojo.Cdxq;
import com.zfz.service.CdService;
import com.zfz.service.CdxqService;
import com.zfz.service.impl.CdServiceImpl;
import com.zfz.service.impl.CdxqServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.UUID;@WebServlet("/addCD")
public class AddCdServlet extends HttpServlet {private CdService cdService = new CdServiceImpl();private CdxqService cdxqService = new CdxqServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String cd = request.getParameter("cd");//对象List<Cdxq> cdxqs = JSONArray.parseArray(cd, Cdxq.class);//创建餐袋Cd cd1 = new Cd();cd1.setCdno(UUID.randomUUID().toString());Integer cdid = cdService.addCD(cd1);//餐袋详情for (Cdxq cdxq : cdxqs) {cdxq.setCdid(cdid);cdxqService.addCdxq(cdxq);}request.getSession().removeAttribute("cdList");response.sendRedirect("./look_candai.jsp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}package com.zfz.servlet;import com.zfz.pojo.Cai;
import com.zfz.pojo.Cd;
import com.zfz.pojo.PageInFo;
import com.zfz.service.CaiService;
import com.zfz.service.CdService;
import com.zfz.service.impl.CaiServiceImpl;
import com.zfz.service.impl.CdServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;//实现菜品页分页功能
@WebServlet("/caiList")
public class CaiListServlet extends HttpServlet {private CaiService caiService = new CaiServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String pageNo = request.getParameter("pageNo");String pageNum = request.getParameter("pageNum");PageInFo<Cai> cdPageInFo = caiService.pageCaiByISDEL(Integer.parseInt(pageNo), Integer.parseInt(pageNum), false);//List<Cd> cds = cdService.listCDsByISDEL(false);request.getSession().setAttribute("caiList", cdPageInFo);response.sendRedirect("./look_candai.jsp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}package com.zfz.servlet;import com.zfz.pojo.Cd;
import com.zfz.pojo.PageInFo;
import com.zfz.service.CdService;
import com.zfz.service.impl.CdServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;@WebServlet("/cdList")
public class CDListServlet extends HttpServlet {private CdService cdService=new CdServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String pageNo = request.getParameter("pageNo");String pageNum = request.getParameter("pageNum");PageInFo<Cd> cdPageInFo = cdService.pageCDByISDEL(Integer.parseInt(pageNo), Integer.parseInt(pageNum), false);//List<Cd> cds = cdService.listCDsByISDEL(false);request.getSession().setAttribute("cdList",cdPageInFo);response.sendRedirect("./look_candai.jsp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}package com.zfz.servlet;import com.zfz.pojo.Cdxq;
import com.zfz.service.CdxqService;
import com.zfz.service.impl.CdxqServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;@WebServlet("/CDxqnum")
public class CDxqNumServlet extends HttpServlet {private CdxqService cdxqService=new CdxqServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String did = request.getParameter("did");String num = request.getParameter("num");Cdxq cdxq = new Cdxq();cdxq.setDid(Integer.parseInt(did));cdxq.setNum(Integer.parseInt(num));int i = cdxqService.updateCdxq(cdxq);PrintWriter writer = response.getWriter();writer.println("ok");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);}
}package com.zfz.servlet;import com.zfz.dao.CaiDao;
import com.zfz.dao.impl.CaiDaoImpl;
import com.zfz.pojo.*;
import com.zfz.service.*;
import com.zfz.service.impl.*;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.UUID;@WebServlet("/createOrder")
public class CreateOrderServlet extends HttpServlet {private CdService cdService = new CdServiceImpl();private CdxqService cdxqService = new CdxqServiceImpl();private OrderService orderService = new OrderServiceImpl();private OrderDService orderDService = new OrderDServiceImpl();private CaiService caiService = new CaiServiceImpl();
private  CaiDao caiDao=new CaiDaoImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.获取餐袋IDString cdid = request.getParameter("cdid");//2根据餐袋id查询餐袋详情List<CdxqView> cdxqViews = cdxqService.listCdxqViewByCDID(Integer.parseInt(cdid));System.out.println(cdxqViews);//3.生成订单(ID,订单编号,总金额,创建时间)Order order = new Order();//生成订单编号order.setOno(UUID.randomUUID().toString());Double total = 0d;for (CdxqView cdxqView : cdxqViews) {total += cdxqView.getTotal();}order.setTotal(total);int oid = orderService.addOrder(order);//4.订单详情表(订单id,菜名,单价,份数,图片)for (CdxqView cdxqView : cdxqViews) {orderDService.addOrderD(new OrderD(oid, cdxqView.getName(), cdxqView.getPrice(), cdxqView.getNum(), cdxqView.getImg()));}//5删除餐袋Cd cd = new Cd();cd.setCdid(Integer.parseInt(cdid));cd.setDel(true);cdService.updateCD(cd);//6.更改菜品销量List<Cdxq> cdxqs = cdxqService.listCdxqByCDID(Integer.parseInt(cdid));for (Cdxq cdxq : cdxqs) {for (int i = 0; i < cdxq.getNum(); i++) {caiService.updateCaiCount(cdxq.getCid());}}response.sendRedirect("./look_candai.jsp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}package com.zfz.servlet;import com.zfz.service.CaiService;
import com.zfz.service.impl.CaiServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/delCai")
public class DelCaiServlet extends HttpServlet {private CaiService caiService=new CaiServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String cid = request.getParameter("cid");if (request.getSession().getAttribute("user")==null){response.sendRedirect("./login.jsp");return;}caiService.delCai(Integer.parseInt(cid));response.sendRedirect("./cai_manage.jsp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}
package com.zfz.servlet;import com.alibaba.fastjson.JSONArray;
import com.zfz.pojo.CdxqView;
import com.zfz.service.CdxqService;
import com.zfz.service.impl.CdxqServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
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;@WebServlet("/findCDXQ")
public class FindCDXQServlet extends HttpServlet {private CdxqService cdxqService = new CdxqServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String cdid = request.getParameter("cdid");List<CdxqView> cdxqViews = cdxqService.listCdxqViewByCDID(Integer.parseInt(cdid));PrintWriter writer = response.getWriter();writer.println(JSONArray.toJSONString(cdxqViews));}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);}
}package com.zfz.servlet;import com.zfz.pojo.User;
import com.zfz.service.UserService;
import com.zfz.service.impl.UserServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/doLogin")
public class LoginServlet extends HttpServlet {private UserService userService=new UserServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String username = request.getParameter("username");String password = request.getParameter("password");User user = userService.doLogin(new User(null, username, password));
if(user!=null){//登陆成功request.getSession().setAttribute("user",user);response.sendRedirect("./index.jsp");
//    response.sendRedirect("./look_dingdan.jsp");}else {response.sendRedirect("./err.jsp");
}}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doPost(request, response);}
}package com.zfz.servlet;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@WebServlet("/outLogin")
public class OutLoginServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//销毁sessionrequest.getSession().invalidate();//跳转登录response.sendRedirect("./login.jsp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}package com.zfz.servlet;import com.zfz.pojo.Cai;
import com.zfz.service.CaiService;
import com.zfz.service.impl.CaiServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;@WebServlet("/preCai")
public class PreCaiServlet extends HttpServlet {private CaiService caiService = new CaiServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//查询在售菜品信息List<Cai> cais = caiService.listCaiByIS_XS(true);request.getSession().setAttribute("caiListIS_XS", cais);response.sendRedirect("./index.jsp");}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request, response);}
}package com.zfz.servlet;import com.zfz.pojo.User;
import com.zfz.service.UserService;
import com.zfz.service.impl.UserServiceImpl;import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;//注测处理的servlet
@WebServlet("/doRegedit")
public class RegeditServlet extends HttpServlet {
private UserService userService=new UserServiceImpl();protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws SecurityException, IOException {String username = req.getParameter("username");String password = req.getParameter("password");if (userService.doRegedit(new User(null,username,password))) {//注测成功resp.sendRedirect("./login.jsp");}else{//失败resp.sendRedirect("./err.jsp");}}protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws SecurityException, IOException {this.doPost(req, resp);}
}package com.zfz.servlet;import com.zfz.pojo.Cai;
import com.zfz.service.CaiService;
import com.zfz.service.impl.CaiServiceImpl;
import com.zfz.utils.StringUtils;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.UUID;@WebServlet("/updateCai")
public class UpdateCaiServlet extends HttpServlet {private static final String upload = "./upload/";private static final String ip = "http://127.0.0.1:8081/";private CaiService caiService = new CaiServiceImpl();protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//判断表单提交是否符合文件上传类型Cai cai = new Cai();if (ServletFileUpload.isMultipartContent(request)) {//servletFileUpload,文件上传的相关对象ServletFileUpload fileUpload = new ServletFileUpload(new DiskFileItemFactory());//解析表单数据try {List<FileItem> list = fileUpload.parseRequest(request);for (FileItem fileItem : list) {if (fileItem.isFormField()) {//普通表单数据switch (fileItem.getFieldName()) {case  "cid":cai.setCid(Integer.parseInt(fileItem.getString("utf-8")));break;case "name":cai.setName(fileItem.getString("utf-8"));break;case "price":cai.setPrice(Double.parseDouble(fileItem.getString("utf-8")));break;case "is_xs":cai.setIs_xs("1".equals(fileItem.getString("utf-8")));break;}} else {if (StringUtils.isNotEmpty(fileItem.getName())){//文件表单数据,文件名filenameString fileName = fileItem.getName();//应用服务器,应用上下文//当前项目运行路径String realPath = request.getServletContext().getRealPath(upload);String newFileName = UUID.randomUUID() + fileName.substring(fileName.lastIndexOf("."), fileName.length());File file = new File(realPath + newFileName);//判断文件上级是否有目录if (!file.getParentFile().isDirectory()) {//没有父级目录就创建file.getParentFile().mkdirs();}//文件上传到服务器fileItem.write(file);
//                        System.out.println("文件上传的路径"+file.getAbsolutePath());
//                        System.out.println("文件路径"+file.getPath());//拿到图片的网络路径String contextPath = request.getContextPath().length() > 1 ? request.getContextPath() : "";String url = ip + contextPath + upload.substring(1) + newFileName;cai.setImg(url);}}}//请求中参数存放到数据库caiService.updateCai(cai);//重定向response.sendRedirect("./cai_manage.jsp");} catch (Exception e) {System.out.println("错啦七十八行");e.printStackTrace();}} else {response.sendRedirect("./err.js");}}}

测试


package com.zfz;import com.zfz.dao.UserDao;
import com.zfz.dao.impl.UserDaoImpl;
import com.zfz.pojo.User;
import org.junit.Test;public class App {@Testpublic void test(){UserDao userDao=new UserDaoImpl();User user = new User(null, "张三", "123");userDao.addUser(user);}@Testpublic void test2(){UserDao userDao=new UserDaoImpl();User user = new User(null, "张三", "123");System.out.println(userDao.dindUserByUsernameAndPassword(user));}
}

前端代码

<!-- cai_manage.jsp -->
<%@ page import="com.zfz.pojo.User" %>
<%@ page import="java.util.List" %>
<%@ page import="com.zfz.pojo.Cai" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--声明jsp页面使用核心标签库--%>
<%--这里写什么,就用什么,比如这是c,也就是起个别名--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><meta charset="utf-8"><title>吃货联盟订餐系统</title><!-- 		<link href="./css/bootstrap.min.css"  type="text/css"/><script src="./js/jquery.min.js" type="text/text/javascript"></script><script src="./js/bootstrap.min.js" type="text/javascript"></script> --><style type="text/css">body {margin: 0;padding: 0;height: 100%;background-color: #ff9249;}ul {list-style: none;margin: 0;padding: 0;}a {text-decoration: none;}.header {width: 950px;margin: 0 auto;/* background-color: #fa814d; */background-image: linear-gradient(to right, #ff9249, #fa814d, #ff9249);line-height: 40px;text-indent: 10px;}.box {width: 950px;margin: 0 auto;background-color: #EEEEEE;display: flex;box-shadow: 1px 1px 10px #000000;}.left {width: 210px;/* padding: 5px; */background-color: #fa814d;background-image: linear-gradient(to bottom, #fa814d, #ff9249);}.left_ul {border-bottom: #FFFFFF 1px solid;}.left_ul > li {padding: 10px;background-color: #ff9249;border-top: #FFFFFF 1px solid;text-align: center;}.left_ul > li > a {color: white;}.c {height: 608px;width: 790px;}.tab {margin: 10px;}.c_box {width: 220px;box-shadow: 1px 1px 10px #000000;margin: 20px;border-radius: 2px;overflow: hidden;}.c_box > img {width: 220px;height: 220px;}.c_text {display: flex;justify-content: space-between;color: black;padding: 0 10px;line-height: 40px;}.c_text > span:last-child {font-size: 14px;font-weight: bold;color: red;}.btn {font-size: 18px;font-weight: bold;text-align: center;display: block;width: 120px;color: white;margin: 0 auto;line-height: 40px;background-color: #fa814d;border-radius: 5px;border: none;margin-bottom: 30px;}.add {font-size: 14px;font-weight: bold;text-align: center;display: block;width: 100px;color: white;line-height: 30px;background-color: #fa814d;border-radius: 5px;border: none;margin: 10px;}.out {background-color: #fa814d;border-radius: 20px;color: white;border: none;float: right;margin-top: 10px;margin-right: 10px;box-shadow: 1px 1px 10px #000000;}.active {background-color: #fa814d !important;}.tab {width: 770px;}.tab > .th {display: flex;justify-content: space-around;background-color: #CCCCCC;line-height: 30px;}.tab > .row {display: flex;justify-content: space-around;margin: 10px;line-height: 80px;}.col {width: 100%;}.col > img {width: 80px;height: 80px;}.card_li {display: flex;justify-content: center;margin: 10px;}.card_li > span {width: 80px;display: block;text-align: right;line-height: 40px;}.card_li > input {width: 200px;height: 30px;/* line-height: 30px !important; */display: block;text-indent: 5px;text-align: left;line-height: 40px;}.card_li > div {width: 200px;height: 30px;/* line-height: 30px !important; */text-indent: 5px;text-align: left;line-height: 40px;}.card-box {position: fixed;display: none;top: 120px;width: 400px;background-color: #FFF;border-radius: 10px;box-shadow: 1px 1px 10px #CCCCCC;padding: 40px;left: 35%;}.box-title {font-size: 20px;font-weight: bold;padding-bottom: 20px;}#title {display: flex;justify-content: space-between;}.select {line-height: 30px;margin: 10px;height: 30px;}.select > input {height: 30px;}.select > button {height: 30px;}</style>
</head>
<body>
<div class="header">欢迎<%//获取sessionUser user = (User) session.getAttribute("user");if (user == null) {response.sendRedirect("./login.jsp");} else {
//        if (session.getAttribute("cdList") == null) {
//            //跳转到servlet中,查询餐袋信息
//            response.sendRedirect("./caiList?pageNo=1&pageNum=3");
//        }out.println(user.getUsername());}
%>登录点餐<button class="out" onclick="location.href='./outLogin'">退出登录</button>
</div>
<div class="row box"><div class="left"><ul class="left_ul"><li><a href="./index.jsp">点餐</a></li><li><a href="./look_candai.jsp">查看餐袋</a></li><li><a href="./look_dingdan.jsp">查看订单</a></li><li class="active"><a href="./cai_manage.jsp">菜品管理</a></li></ul></div><div class="right col-8"><div class="right_header c"><div id="title"><button class="add" onclick="showAdd()">添加菜品</button><div class="select"><input type="text" id="cname"><button onclick="getCaiName()"> 查询</button></div></div><div class="tab"><div class="th"><div class="col">编号</div><div class="col">图片</div><div class="col">菜品名</div><div class="col">单价</div><div class="col">是否在售</div><div class="col">操作</div></div><%-- intems中写的是 EL表达式--%><c:if test="${sessionScope.get('caiList')!=null}"><c:forEach items="${sessionScope.get('caiList')}" var="cai"><div class='row'><div class='col'>${cai.cid}</div><div class='col'><img src='${cai.img}'></div><div class='col'>${cai.name}</div><div class='col'>${cai.price}</div><div class='col'>${cai.is_xs}</div>
<%--                            <div class='col' typeof='hidden'>${cai.cid}</div>--%><div class='col'><button onclick='updateCai(this)'>修改</button><button onclick='location.href="./delCai?cid=${cai.cid}"'>删除</button></div></div></c:forEach></c:if></div></div><div class="card-box" id="card-box"><div class="box-title" id="box-title">添加菜品</div><div><form action="./addCai" id="form" enctype="multipart/form-data" method="post"><ul class="card"><input type="text" name="cid" hidden><li class="card_li"><span>菜品名:</span><input type="text" name="name"></li><li class="card_li"><span>单价:</span><input type="text" name="price"></li><li class="card_li"><span>是否在售:</span><div><input type="radio" name="is_xs" value="1"><input type="radio" name="is_xs"value="0"></div></li><li class="card_li"><span id="img">图片:</span><input type="file" name="file"></li><button class="btn" id="btn" type="submit">添加</button></ul></form></div></div>
<%--        <div>--%>
<%--            <c:forEach end="${sessionScope.get('caiList').pageTotal}" begin="1" var="i">--%>
<%--                &lt;%&ndash;分页按钮 &ndash;%&gt;--%>
<%--                <button onclick="location.href='./caiList?pageNo=${i}&pageNum=3'">${i}</button>--%>
<%--            </c:forEach>--%>
<%--        </div>--%></div>
</div>
<script type="text/javascript">//显示菜单function showAdd() {let cardEl = document.getElementById("card-box");if (cardEl.style.display == null || cardEl.style.display == '' || cardEl.style.display == "none") {//添加菜品  添加document.getElementById("box-title").innerHTML = "添加菜品";document.getElementById("btn").innerHTML = "添加";document.getElementById("form").reset();document.getElementById("img").innerHTML = "图片:";var is_xsELs = document.getElementsByName("is_xs");is_xsELs[0].removeAttribute("checked");is_xsELs[1].removeAttribute("checked");//修改后表单提交地址document.getElementById("form").setAttribute("action", "./addCai");cardEl.style.display = "block";} else {cardEl.style.display = "none";}}//修改菜品function updateCai(el) {let cardEl = document.getElementById("card-box");if (cardEl.style.display == null || cardEl.style.display == '' || cardEl.style.display == "none") {//显示cardEl.style.display = "block";//修改菜品   修改document.getElementById("box-title").innerHTML = "修改菜品";document.getElementById("btn").innerHTML = "修改";//修改后表单提交地址document.getElementById("form").setAttribute("action", "./updateCai");//拿到页面中的数据//console.log(el.parentNode.parentNode)打印到控制台,F12的控制台var cid = el.parentNode.parentNode.children[0].innerHTML;var img = el.parentNode.parentNode.children[1].lastElementChild.getAttribute("src")// console.log(el.parentNode.parentNode.children[1].lastElementChild.getAttribute("src"));var name = el.parentNode.parentNode.children[2].innerHTML;var price = el.parentNode.parentNode.children[3].innerHTML;var is_xs = el.parentNode.parentNode.children[4].innerHTML;//把数据填充到表单中document.getElementsByName("cid")[0].value = cid;document.getElementsByName("name")[0].value = name;document.getElementsByName("price")[0].value = price;var is_xsELs = document.getElementsByName("is_xs");if (is_xs == "true") {is_xsELs[0].setAttribute("checked", true);} else {is_xsELs[1].setAttribute("checked", true);}document.getElementById("img").innerHTML = "图片:<img style='height: 80px';width:80px src='" + img + "'>";} else {cardEl.style.display = "none";}}//根据菜名查询菜品function getCaiName() {var cname = document.getElementById("cname").value;location.href = "./cai_manage.jsp?cname=" + cname;}
</script>
</body>
</html><!-- err.jsp --><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>错误</title>
</head>
<body>
<h1>错啦</h1>
</body>
</html><!-- index.jsp -->
<%@ page import="com.zfz.pojo.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><meta charset="utf-8"><title>吃货联盟订餐系统</title><link href="./css/bootstrap.min.css" type="text/css"/><script src="./js/jquery.min.js" type="text/text/javascript"></script><script src="./js/bootstrap.min.js" type="text/javascript"></script><style type="text/css">body {margin: 0;padding: 0;height: 100%;background-color: #ff9249;}ul {list-style: none;margin: 0;padding: 0;}a {text-decoration: none;}.header {width: 950px;margin: 0 auto;/* background-color: #fa814d; */background-image: linear-gradient(to right, #ff9249, #fa814d, #ff9249);line-height: 40px;text-indent: 10px;}.box {width: 950px;margin: 0 auto;background-color: #EEEEEE;display: flex;box-shadow: 1px 1px 10px #000000;}.left {width: 210px;/* padding: 5px; */background-color: #fa814d;background-image: linear-gradient(to bottom, #fa814d, #ff9249);}.left_ul {border-bottom: #FFFFFF 1px solid;}.left_ul > li {padding: 10px;background-color: #ff9249;border-top: #FFFFFF 1px solid;text-align: center;}.left_ul > li > a {color: white;}.c {display: flex;flex-wrap: wrap;}.c_box {width: 220px;box-shadow: 1px 1px 10px #000000;margin: 20px;border-radius: 2px;overflow: hidden;height: 260px;box-sizing: border-box;}.c_box > img {width: 220px;height: 220px;}.c_text {display: flex;justify-content: space-between;color: black;padding: 0 10px;line-height: 40px;}.c_text > span:last-child {font-size: 14px;font-weight: bold;color: red;}.btn {font-size: 18px;font-weight: bold;text-align: center;display: block;width: 120px;color: white;margin: 0 auto;line-height: 40px;background-color: #fa814d;border-radius: 5px;border: none;margin-bottom: 30px;}.out {background-color: #fa814d;border-radius: 20px;color: white;border: none;float: right;margin-top: 10px;margin-right: 10px;box-shadow: 1px 1px 10px #000000;}.active {background-color: #fa814d !important;}.addBtn {width: 100px;height: 40px;line-height: 20px;display: flex;justify-content: center;}.val {width: 30px;height: 20px;margin: 10px 0;text-align: center;}.add, .jj {border-radius: 50%;background-color: #fa814d;color: white;height: 20px;line-height: 20px;width: 20px;margin: 10px 5px;font-size: 10px;text-align: center;}</style>
</head>
<body>
<div class="header">欢迎<%//获取sessionUser user = (User) session.getAttribute("user");if (user == null) {response.sendRedirect("./login.jsp");} else {if (session.getAttribute("caiListIS_XS") == null) {//去服务器请求response.sendRedirect("./preCai");} else {out.println(user.getUsername());}}
%>登录点餐<button class="out" onclick="location.href='./outLogin'">退出登录</button>
</div>
<div class="row box"><div class="left"><ul class="left_ul"><li class="active"><a href="./index.jsp">点餐</a></li><li><a href="./look_candai.jsp">查看餐袋</a></li><li><a href="./look_dingdan.jsp">查看订单</a></li><li><a href="./cai_manage.jsp">菜品管理</a></li></ul></div><div class="right col-8"><div class="c"><c:forEach items="${sessionScope.get('caiListIS_XS')}" var="cai"><div class="c_box" onclick="getCai(this)"><input type="text" value="${cai.cid}" hidden><img src="${cai.img}"><div class="c_text"><span>${cai.name}</span><div class="addBtn" style="display: none"><span class="add" onclick="addVal(this)">+</span><input class="val" type="number" value="1"><span class="jj" onclick="jjVal(this)">-</span></div><span>¥${cai.price}</span></div></div></c:forEach></div><div><button class="btn" onclick="addCanDi()">加入餐袋</button></div></div>
</div>
<script type="text/javascript">//存放菜品的容器var cfMap = new Map();function getCai(el) {//console.log(el);if (el.style.border == null || el.style.border == "" || el.style.border == "none" || el.style.border.indexOf("medium") >= 0) {el.style.border = "2px solid #ff9249";el.children[2].children[1].style.display = "block";cfMap.set(el.children[0].value, el.children[2].children[1].children[1].value);//el是个div  children子标签?value值// cfcai.add(el.children[0].value);} else {el.style.border = "none";el.children[2].children[1].style.display = "none";cfMap.delete(el.children[0].value);}//在控制台打印选中的菜品序号<1132m32s>consolecfMap.forEach(item => {console.log(cfMap.get(item));})//console.log(JSON.stringify(cfMap));}//加加的方法function addVal(el) {event.stopPropagation();el.nextElementSibling.value++;cfMap.set(el.parentNode.parentNode.parentNode.firstElementChild.value, el.nextElementSibling.value);}//减减的方法function jjVal(el) {event.stopPropagation();if (el.previousElementSibling.value == 1) {return;}el.previousElementSibling.value--;cfMap.set(el.parentNode.parentNode.parentNode.firstElementChild.value, el.nextElementSibling.value);}function addCanDi() {var list = mapToArray(cfMap);var s = JSON.stringify(list);console.log(s)// encodeURIComponent()location.href = './addCD?cd=' + encodeURIComponent(s);}function mapToArray(map) {let list = [];for (let key of map) {<%--json对象--%>let obj = {"cid": key[0], "num": key[1]};list.push(obj);}return list;};
</script>
</body>
</html><!-- login.jsp --><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>登陆</title><style type="text/css">.centent{width: 500px;height: 300px;box-shadow: 1px 1px 10px black;margin: auto;}.centent>h1{text-align: center;line-height: 60px;}.card{list-style: none;margin-bottom: 30px;}.card_li{display: flex;justify-content: center;margin: 10px;}.card_li>span{width: 80px;display: block;text-align: right;line-height: 40px;}.card_li>input{width:200px;height: 30px;/* line-height: 30px !important; */display: block;text-indent: 5px;text-align: left;}.btn{font-size: 18px;font-weight: bold;text-align: center;display: block;width: 120px;color: white;margin: 0 auto;line-height: 40px;background-color: #fa814d;border-radius: 5px;border: none;}</style>
</head>
<body>
<div class="centent"><h1>登录</h1><form action="./doLogin" method="post"><ul class="card"><li class="card_li"><span>用户名:</span><input type="text" value="" name="username"/></li><li class="card_li"><span>密码:</span><input type="password" value="" name="password"/></li></ul><button type="submit" class="btn">登录</button></form>
</div>
</body>
</html><!-- look_candai.jsp --><%@ page import="com.zfz.pojo.User" %>
<%@ page import="java.util.List" %>
<%@ page import="com.zfz.pojo.Cai" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--声明jsp页面使用核心标签库--%>
<%--这里写什么,就用什么,比如这是c,也就是起个别名--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><meta charset="utf-8"><title>吃货联盟订餐系统_查看餐袋</title><!-- 		<link href="./css/bootstrap.min.css"  type="text/css"/><script src="./js/jquery.min.js" type="text/text/javascript"></script><script src="./js/bootstrap.min.js" type="text/javascript"></script> --><style type="text/css">body {margin: 0;padding: 0;height: 100%;background-color: #ff9249;}ul {list-style: none;margin: 0;padding: 0;}a {text-decoration: none;}.header {width: 950px;margin: 0 auto;/* background-color: #fa814d; */background-image: linear-gradient(to right, #ff9249, #fa814d, #ff9249);line-height: 40px;text-indent: 10px;}.box {width: 950px;margin: 0 auto;background-color: #EEEEEE;display: flex;box-shadow: 1px 1px 10px #000000;}.left {width: 210px;/* padding: 5px; */background-color: #fa814d;background-image: linear-gradient(to bottom, #fa814d, #ff9249);}.left_ul {border-bottom: #FFFFFF 1px solid;}.left_ul > li {padding: 10px;background-color: #ff9249;border-top: #FFFFFF 1px solid;text-align: center;}.left_ul > li > a {color: white;}.c {height: 608px;width: 790px;}.tab {margin: 10px;}.c_box {width: 220px;box-shadow: 1px 1px 10px #000000;margin: 20px;border-radius: 2px;overflow: hidden;}.c_box > img {width: 220px;height: 220px;}.c_text {display: flex;justify-content: space-between;color: black;padding: 0 10px;line-height: 40px;}.c_text > span:last-child {font-size: 14px;font-weight: bold;color: red;}.btn {font-size: 18px;font-weight: bold;text-align: center;display: block;width: 120px;color: white;margin: 0 auto;line-height: 40px;background-color: #fa814d;border-radius: 5px;border: none;margin-bottom: 30px;}.add {font-size: 14px;font-weight: bold;text-align: center;display: block;width: 100px;color: white;line-height: 30px;background-color: #fa814d;border-radius: 5px;border: none;margin: 10px;}.out {background-color: #fa814d;border-radius: 20px;color: white;border: none;float: right;margin-top: 10px;margin-right: 10px;box-shadow: 1px 1px 10px #000000;}.active {background-color: #fa814d !important;}.tab {width: 770px;}.tab > .th {display: flex;justify-content: space-around;background-color: #CCCCCC;line-height: 30px;}.tab > .th > .col {text-align: center;}.tab > .row {display: flex;justify-content: space-around;margin: 10px;line-height: 30px;}.tab > .row > .col:nth-child(1), .tab > .th > .col:nth-child(1) {width: 80px;text-align: center;}.tab > .row > .col:nth-child(2), .tab > .th > .col:nth-child(2) {width: 500px;text-align: center;}.tab > .row > .col:nth-child(3), .tab > .th > .col:nth-child(3  ) {width: 240px;text-align: center;}.col {width: 100%;}.col > img {width: 80px;height: 80px;}.card_li {display: flex;justify-content: center;margin: 10px;}.card_li > span {width: 80px;display: block;text-align: right;line-height: 40px;}.card_li > input {width: 200px;height: 30px;/* line-height: 30px !important; */display: block;text-indent: 5px;text-align: left;line-height: 40px;}.card_li > div {width: 200px;height: 30px;/* line-height: 30px !important; */text-indent: 5px;text-align: left;line-height: 40px;}.card-box {position: fixed;display: none;top: 120px;width: 400px;background-color: #FFF;border-radius: 10px;box-shadow: 1px 1px 10px #CCCCCC;padding: 40px;left: 35%;}.box-title {font-size: 20px;font-weight: bold;padding-bottom: 20px;}#title {display: flex;justify-content: space-between;}.select {line-height: 30px;margin: 10px;height: 30px;}.select > input {height: 30px;}.select > button {height: 30px;}</style>
</head>
<body>
<div class="header">欢迎<%//获取sessionUser user = (User) session.getAttribute("user");if (user == null) {response.sendRedirect("./login.jsp");} else {if (session.getAttribute("cdList") == null) {//跳转到servlet中,查询餐袋信息response.sendRedirect("./cdList?pageNo=1&pageNum=6");}out.println(user.getUsername());}
%>登录点餐<button class="out" onclick="location.href='./outLogin'">退出登录</button>
</div>
<div class="row box"><div class="left"><ul class="left_ul"><li><a href="./index.jsp">点餐</a></li><li class="active"><a href="./look_candai.jsp">查看餐袋</a></li><li><a href="./look_dingdan.jsp">查看订单</a></li><%--            <li ><a href="./cai_manage.jsp">菜品管理</a></li>--%><li><a href="./cai_manage.jsp">菜品管理</a></li></ul></div><div class="right col-8"><div class="right_header c"><div class="tab"><div class="th"><div class="col">ID</div><div class="col">编号</div><div class="col">操作</div></div><%-- intems中写的是 EL表达式--%><c:if test="${sessionScope.get('cdList')!=null}"><c:forEach items="${sessionScope.get('cdList').list}" var="cd"><div class='row'><div class='col'>${cd.cdid}</div><div class='col'>${cd.cdno}</div><div class='col'><button onclick='updateCai(this)'>餐袋详情</button><button onclick='location.href="./createOrder?cdid=${cd.cdid}"'>结算</button></div></div></c:forEach></c:if><div><c:forEach end="${sessionScope.get('cdList').pageTotal}" begin="1" var="i"><%--分页按钮 --%><button onclick="location.href='./cdList?pageNo=${i}&pageNum=6'">${i}</button></c:forEach>
<%--                    总页数:${sessionScope.get('cdList').pageTotal}--%>
<%--                    每页显示:${sessionScope.get('cdList').pageNum}--%>
<%--                    总数据:${sessionScope.get('cdList').total}--%>
<%--&lt;%&ndash;                     //(总数据-1)/显示数+1&ndash;%&gt;--%>
<%--&lt;%&ndash;                    当前页: ${(sessionScope.get('cdList').total-1)/(sessionScope.get('cdList').pageNum+1)}&ndash;%&gt;--%></div></div></div><div><button class="btn"></button></div><%--餐袋详情--%><div class="card-box" id="card-box"><div class="box-title" id="box-title" style="display: flex;justify-content: space-between"><span>餐袋详情</span><spanonclick="hiden()">X</span></div><div><ul class="card"><table style="width:100%" id="tab"><tr><th>图片</th><th>菜名</th><th>单价</th><th>数量</th><th>金额</th><th>操作</th></tr></table><button class="btn" id="btn" type="submit">结算</button></ul></div></div></div>
</div>
<script src="./static/js/jQuery-1.8.3.js" type="text/javascript"></script>
<script type="text/javascript">//隐藏function hiden() {document.getElementById("card-box").style.display = "none";}//显示菜单function showAdd() {let cardEl = document.getElementById("card-box");if (cardEl.style.display == null || cardEl.style.display == '' || cardEl.style.display == "none") {//添加菜品  添加document.getElementById("box-title").innerHTML = "添加菜品";document.getElementById("btn").innerHTML = "添加";document.getElementById("form").reset();document.getElementById("img").innerHTML = "图片:";var is_xsELs = document.getElementsByName("is_xs");is_xsELs[0].removeAttribute("checked");is_xsELs[1].removeAttribute("checked");//修改后表单提交地址document.getElementById("form").setAttribute("action", "./addCai");cardEl.style.display = "block";} else {cardEl.style.display = "none";}}//根据餐袋ID查询餐袋详情function findCdxqByCDID(cdid) {var elementById = document.getElementById("tab");var child = elementById.children[0];elementById.innerHTML = "";elementById.append(child);// location.href="./findCDXQ=?cdid=?"+cdid;$.ajax("./findCDXQ",{data: {cdid: cdid},success(data, textStatus, jqXHR) {//数组var list = JSON.parse(data);for (let i = 0; i < list.length; i++) {var tr = document.createElement("tr");tr.setAttribute("class", "cdxq_data");var td1 = document.createElement("td");var img = document.createElement("img");img.style.width = "40px";img.style.height = "40px";img.setAttribute("src", list[i].img);td1.append(img);var td2 = document.createElement("td");td2.innerText = list[i].name;var td3 = document.createElement("td");td3.innerText = list[i].price + "元";// <th><input type="text" style="width: 60px"></th>var td4 = document.createElement("td");//加空格,,不加报错td4.innerHTML = "<button onclick='jjVal(this," + list[i].did + ")'>-</button><input type='text' value=" + list[i].num + "              style='width: 35px'><button onclick='addVal(this," + list[i].did + ")'>+</button>";var td5 = document.createElement("td");td5.innerHTML = list[i].total;var td6 = document.createElement("td");td6.innerHTML = "<button>删除</button>";tr.append(td1);tr.append(td2);tr.append(td3);tr.append(td4);tr.append(td5);tr.append(td6);document.getElementById("tab").append(tr);}console.log(list[i]);}})}//查看餐袋详情function updateCai(el) {let cardEl = document.getElementById("card-box");if (cardEl.style.display == null || cardEl.style.display == '' || cardEl.style.display == "none") {//显示cardEl.style.display = "block";//修改菜品   修改var cdid = el.parentNode.parentNode.children[0].innerHTML;findCdxqByCDID(cdid);} else {cardEl.style.display = "none";}}//根据菜名查询菜品function getCaiName() {var cname = document.getElementById("cname").value;location.href = "./cai_manage.jsp?cname=" + cname;}//减减function jjVal(el, did) {if (el.nextElementSibling.value <= 1) {return;}//nextElementSiblingel.nextElementSibling.value--;el.parentNode.nextSibling.firstChild.nodeValue = parseFloat(el.parentNode.previousSibling.firstChild.nodeValue) * parseInt(el.nextElementSibling.value);//debugger;setNum(did, el.nextElementSibling.value);}//加加function addVal(el, did) {el.previousElementSibling.value++;el.parentNode.nextSibling.firstChild.nodeValue = parseFloat(el.parentNode.previousSibling.firstChild.nodeValue) * parseInt(el.previousElementSibling.value);setNum(did, el.previousElementSibling.value);}function setNum(did, number) {$.ajax("./CDxqnum", {data: {did: did, num: number}})}
</script>
</body>
</html><!-- look_dingdan.jsp --><%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><html>
<head><title>查看订单</title>
</head>
<body>
这是个查看订单的jsp
<div>
<%--    <c:forEach items="${sessionScope.user}" var="user">--%>
<%--        <p>${user.uid}</p>--%>
<%--        <p>${user.username}</p>--%>
<%--        <p>${user.password}</p>--%>
<%--    </c:forEach>--%><c:set var="user" value="${sessionScope.user}"/>var user = ${user.username};</div>
</body>
</html><!-- regedit.jsp -->
<%--1' or 1='1
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><meta charset="utf-8"><title>注测</title><style type="text/css">.centent {width: 500px;height: 300px;box-shadow: 1px 1px 10px black;margin: auto;}.centent > h1 {text-align: center;line-height: 60px;}.card {list-style: none;margin-bottom: 30px;}.card_li {display: flex;justify-content: center;margin: 10px;}.card_li > span {width: 80px;display: block;text-align: right;line-height: 40px;}.card_li > input {width: 200px;height: 30px;/* line-height: 30px !important; */display: block;text-indent: 5px;text-align: left;}.btn {font-size: 18px;font-weight: bold;text-align: center;display: block;width: 120px;color: white;margin: 0 auto;line-height: 40px;background-color: #fa814d;border-radius: 5px;border: none;}</style>
</head>
<body>
<div class="centent"><h1>用户注册</h1><form action="./doRegedit" method="post" id="regedit"><ul class="card"><li class="card_li"><span>用户名:</span><input type="text" value="" name="username"/></li><li class="card_li"><span>密码:</span><input id="pwd" type="password" value="" name="password"/></li><li class="card_li"><span>确认密码:</span><input id="tmpPwd" type="password" value="" name="password"/></li></ul><button type="button" class="btn" onclick="regedit()">注测</button></form>
</div>
<script type="text/javascript">function regedit() {var pwdEL = document.getElementById("pwd");var elementById = document.getElementById("tmpPwd");if (pwdEL.value == tmpPwd.value && pwdEL.value != null &&pwdEL.value!="") {
//数据进行提交document.getElementById("regedit").submit();}}
</script>
</body>
</html>

TODO

还有部分没有做完。就这样吧。
上传的文件如果没有打包,是在out文件夹下的

用到的jar
commons-fileupload-1.2.2.jar
commons-io-2.4.jar
fastjson-1.2.9.jar
hamcrest-2.2.jar
jsp-api.jar
jstl.jar
junit-4.12.jar
mysql-connector-j-8.0.33.jar
mysql-connector-java-5.1.47.jar
servlet-api.jar
standard.jar

http://www.dtcms.com/a/315761.html

相关文章:

  • 从审批流到审计链:刻录系统的全周期管控技术解析
  • Spring MVC框架中DispatcherServlet详解
  • 【开源工具】基于Python的PDF清晰度增强工具全解析(附完整源码)
  • LeetCode算法日记 - Day 2: 快乐数、盛水最多容器
  • 力扣经典算法篇-43-全排列(经典回溯问题)
  • vite面试题及详细答案120题(01-30)
  • 普通树状数组
  • 《Node.js与 Elasticsearch的全文搜索架构解析》
  • Leetcode 13 java
  • 2025-08-05Gitee + PicGo + Typora搭建免费图床
  • MongoDB学习专题(二)核心操作
  • MongoDB 从3.4.0升级到4.0.0完整指南实战-优雅草蜻蜓I即时通讯水银版成功升级-卓伊凡|bigniu
  • 时序数据库flux aggregateWindow命令详解
  • Baumer相机如何通过YoloV8深度学习模型实现道路场所路人口罩的检测识别(C#代码UI界面版)
  • 概率论之条件概率
  • ubuntu自动重启BUG排查指南
  • C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(六)
  • Go 单元测试:如何只运行某个测试函数(精确控制)
  • C++ 网络编程入门:TCP 协议下的简易计算器项目
  • 【STM32】HAL库中的实现(四):RTC (实时时钟)
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(14):文法:ていく+きた+单词
  • MQTT学习
  • Starrocks 关于 trace 命令的说明
  • C# --- 本地缓存失效形成缓存击穿触发限流
  • 【面向对象】面向对象七大原则
  • 【乐企板式文件生成工程】关于乐企板式文件(PDF/OFD/XML)生成工程介绍
  • [2401MT-B] 面积比较
  • 翻译的本质:人工翻译vs机器翻译的核心差异与互补性
  • Starrocks中的 Query Profile以及explain analyze及trace命令中的区别
  • MySQL 中 VARCHAR 和 TEXT 的区别