基于javaweb+mysql的jsp+servlet嘟嘟蛋糕商城系统(java+jdbc+servlet+jsp+ajax+mysql+fileupload)
私信源码获取及调试交流
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb的JSP+Servlet嘟嘟蛋糕商城系统(java+jdbc+servlet+jsp+ajax+mysql+fileupload)
前台用户:
user1 123456
user2 123456
后台管理员:
admin 123456
一、项目运行 环境配置:
Jdk1.8 + Tomcat8.5 + mysql + Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)
项目技术:
Jdbc+ Servlert + html+ css + JavaScript + JQuery + Ajax + Fileupload等等
HttpServletRequest myRequest = new MyRequest(httpServletRequest);
// 处理响应乱码
response.setContentType("text/html;charset=utf-8");
chain.doFilter(myRequest, response);
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
//自定义request对象
class MyRequest extends HttpServletRequestWrapper {
private HttpServletRequest request;
private boolean hasEncode;
public MyRequest(HttpServletRequest request) {
this.request = request;
}
@Override
public Map getParameterMap() {
// 先获得请求方式
String method = request.getMethod();
if (method.equalsIgnoreCase("post")) {
// post请求
try {
// 处理post乱码
request.setCharacterEncoding("utf-8");
return request.getParameterMap();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
} else if (method.equalsIgnoreCase("get")) {
* 这个函数的功能是获取前端的数据集合,将文件打包成File以便后续操作
* @param request
* @param servletContext
* @return
*/
public static List<FileItem> getRequsetFileItems(
HttpServletRequest request,ServletContext servletContext){
//判断enctype属性是否为multipart/form-data
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(isMultipart) {
DiskFileItemFactory factory = new DiskFileItemFactory();
String str="javax.servelet.context.tempdir";
File repository=(File) servletContext.getAttribute(str);
factory.setRepository(repository);
ServletFileUpload upload=new ServletFileUpload(factory);
try {
return upload.parseRequest(request);
}catch (FileUploadException e) {
e.printStackTrace();
return null;
}
}
return null;
}
/**
* 保存文件
* @param fileItem 要被保存的文件
* @param savePath 指定的保存目录路径
* @param fileName 要保存的文件名
* @return 保存成功返回true,否则返回false
*/
public static boolean saveFile(FileItem fileItem,String savePath,String fileName) {
File file = new File(savePath);
if(!file.exists()) {
file.mkdirs();
}
File uploadFile = new File(savePath+File.separator+fileName);
try{
fileItem.write(uploadFile);
return true;
}catch(Exception e){
e.printStackTrace();
//parmas.put("type", type);
List<Orders> list = service.getOrdersByName(parmas);
try {
if(list != null) {
JSONResult ok = JSONResult.ok(list);
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("未获取到任何数据,请重试");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 修改订单时,获取此订单的全部数据,并返回至修改页面
*/
public void toOrdersUpdatePage(HttpServletRequest req,HttpServletResponse resp) {
int id = Integer.parseInt(req.getParameter("id"));
Orders orders = service.getOrdersInfoById(id);
req.setAttribute("orders", orders);
try {
req.getRequestDispatcher("/backstage/tgls/ordersManage/orders_update.jsp").forward(req, resp);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 修改订单
* @throws IOException
*/
public void updateOrders(HttpServletRequest req,HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
Orders orders = new Orders();
orders.setId(Integer.parseInt(req.getParameter("id")));
orders.setNumber(req.getParameter("number"));
orders.setUser(req.getParameter("user"));
orders.setTime(req.getParameter("time"));
orders.setName(req.getParameter("name"));
orders.setSex(req.getParameter("sex"));
@WebServlet("/backstage_ordersServlet")
public class OrdersServlet extends HttpServlet{
OrdersService service = new OrdersService();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String action = req.getParameter("action");
System.out.println(action);
switch(action) {
case "getOrdersList":getOrdersList(req,resp);break;
case "getOrdersListByName":getOrdersListByName(req,resp);break;
case "deleteOrders":deleteOrders(req,resp);break;
case "deleteAllOrders":deleteAllOrders(req,resp);break;
case "toOrdersUpdatePage":toOrdersUpdatePage(req,resp);break;
case "updateOrders":updateOrders(req,resp);break;
case "fastbuy":sendOrder(req,resp);break;
}
}
/*
* 删除全部订单
*/
private void deleteAllOrders(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
// TODO 自动生成的方法存根
int d = service.deleteAllOrders();
try {
if(d>0) {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("删除失败,请重试");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
/**
* 向前端页面返回订单数据列表
*/
public void getOrdersList(HttpServletRequest req,HttpServletResponse resp) {
List<Orders> allOrders = service.getAllOrders();
req.setAttribute("ordersList",allOrders);
try {
req.getRequestDispatcher("/backstage/tgls/ordersManage/orders_list.jsp").forward(req, resp);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 根据订单名查询商品(注意!类别没改)
* @param req
* @param resp
* @throws IOException
*/
public void getOrdersListByName(HttpServletRequest req,HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
String name = req.getParameter("OrdersUser");
//String type = req.getParameter("type");
Map<String,String> parmas = new HashMap<>();
parmas.put("name", name);
//parmas.put("type", type);
List<Orders> list = service.getOrdersByName(parmas);
try {
if(list != null) {
JSONResult ok = JSONResult.ok(list);
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("未获取到任何数据,请重试");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("删除失败,请重试");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 提交订单
* @throws IOException
*/
public void sendOrder(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
User user =(User) req.getSession().getAttribute("user");
Orders order = new Orders();
order.setNumber(order.getRandomString(10));
order.setTime(df.format(new Date()));
order.setName(req.getParameter("recipients"));
order.setAddress(req.getParameter("address"));
order.setPhone(req.getParameter("phone"));
order.setAddress_label(req.getParameter("addressLabel"));
order.setSex(req.getParameter("sex"));
order.setUser(user.getUserName());
order.setGoods_id(Integer.parseInt(req.getParameter("id")));
order.setGoods_num(Integer.parseInt(req.getParameter("num")));
order.setGoods_status(1);
int d = service.addOrder(order);
try {
if(d>0) {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult error = JSONResult.errorMsg("订单提交失败!");
List<Goods> list = service.getGoodsByName(parmas);
try {
if(list != null) {
JSONResult ok = JSONResult.ok(list);
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("未获取到任何数据,请重试");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 修改商品时,获取此商品的全部数据,并返回至修改页面
*/
public void toGoodsUpdatePage(HttpServletRequest req,HttpServletResponse resp) {
int id = Integer.parseInt(req.getParameter("id"));
Goods goods = service.getGoodsInfoById(id);
req.setAttribute("goods", goods);
try {
req.getRequestDispatcher("/backstage/tgls/goodsManage/goods_update.jsp").forward(req, resp);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
*修改商品信息时,如果有修改图片,先将图片进行修改
* @throws IOException
*/
public void upGoodsImage(HttpServletRequest req,HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
FileUploadUtil upFile = new FileUploadUtil();
ServletContext servletContext = req.getSession().getServletContext();
List<FileItem> items= upFile.getRequsetFileItems(req,servletContext);
int ids =232323;
if(user!=null) {
ids = user.getId();
}
System.out.println(ids+"dddddddddddddddd");
Map<String, List<Goods>> allGoods = service.getCartGoods(ids+"");
try {
req.setAttribute("cart", allGoods);
req.getRequestDispatcher("/showcart.jsp").forward(req, resp);
return;
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
@WebServlet("/backstage_userServlet")
public class UserServlet extends HttpServlet{
UserService service = new UserService();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String action = req.getParameter("action");
switch(action) {
case "login":login(req, resp);break;
case "modifyPassword":modifyPassword(req, resp);break;
case "checkOldPassword":checkOldPassword(req, resp);break;
case "afterModifyPassword":afterModifyPassword(req, resp);break;
case "logout":logout(req, resp);break;
}
}
orders.setAddress(req.getParameter("address"));
orders.setPhone(req.getParameter("phone"));
orders.setAddress_label(req.getParameter("address_label"));
orders.setGoods_id(Integer.parseInt(req.getParameter("goods_id")));
orders.setGoods_num(Integer.parseInt(req.getParameter("goods_num")));
orders.setGoods_status(Integer.parseInt(req.getParameter("goods_status")));
System.out.println(orders);
int d = service.updateOrdersById(orders);
System.out.println(d);
try {
if(d>0) {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("修改失败,请重试");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 删除订单
* @throws UnsupportedEncodingException
*/
public void deleteOrders(HttpServletRequest req,HttpServletResponse resp) throws UnsupportedEncodingException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
int id = Integer.parseInt(req.getParameter("id"));
int d = service.deleteOrdersById(id);
try {
if(d>0) {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("删除失败,请重试");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
static String baseNumLetter = "123456789abcdefghijklmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 禁止缓存
// response.setHeader("Cache-Control", "no-cache");
// response.setHeader("Pragma", "no-cache");
// response.setDateHeader("Expires", -1);
int width = 120;
int height = 30;
// 步骤一 绘制一张内存中图片
BufferedImage bufferedImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 步骤二 图片绘制背景颜色 ---通过绘图对象
Graphics graphics = bufferedImage.getGraphics();// 得到画图对象 --- 画笔
// 绘制任何图形之前 都必须指定一个颜色
graphics.setColor(getRandColor(200, 250));
graphics.fillRect(0, 0, width, height);
// 步骤三 绘制边框
graphics.setColor(Color.WHITE);
graphics.drawRect(0, 0, width - 1, height - 1);
// 步骤四 四个随机数字
Graphics2D graphics2d = (Graphics2D) graphics;
// 设置输出字体
graphics2d.setFont(new Font("宋体", Font.BOLD, 28));
Random random = new Random();// 生成随机数
// int index = random.nextInt(words.size());
// String word = words.get(index);// 获得成语
StringBuffer sBuffer = new StringBuffer();
for(int i = 0; i < 4; i++){
int dot = random.nextInt(baseNumLetter.length());
sBuffer.append(baseNumLetter.charAt(dot));
}
String word = sBuffer.toString();
// 定义x坐标
int x = 10;
for (int i = 0; i < word.length(); i++) {
// 随机颜色
graphics2d.setColor(new Color(20 + random.nextInt(110), 20 + random
.nextInt(110), 20 + random.nextInt(110)));
// 旋转 -30 --- 30度
int jiaodu = random.nextInt(60) - 30;
try {
return upload.parseRequest(request);
}catch (FileUploadException e) {
e.printStackTrace();
return null;
}
}
return null;
}
/**
* 保存文件
* @param fileItem 要被保存的文件
* @param savePath 指定的保存目录路径
* @param fileName 要保存的文件名
* @return 保存成功返回true,否则返回false
*/
public static boolean saveFile(FileItem fileItem,String savePath,String fileName) {
File file = new File(savePath);
if(!file.exists()) {
file.mkdirs();
}
File uploadFile = new File(savePath+File.separator+fileName);
try{
fileItem.write(uploadFile);
return true;
}catch(Exception e){
e.printStackTrace();
}
return false;
}
/**
*这个函数的功能是获取当前时间点与1970年的间隔秒数
*/
public static int getSecondTimestamp(Date date){
if (null == date) {
return 0;
}
String timestamp = String.valueOf(date.getTime());
int length = timestamp.length();
if (length > 3) {
return Integer.valueOf(timestamp.substring(0,length-3));
} else {
@WebServlet("/backstage_userServlet")
public class UserServlet extends HttpServlet{
UserService service = new UserService();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String action = req.getParameter("action");
switch(action) {
case "login":login(req, resp);break;
case "modifyPassword":modifyPassword(req, resp);break;
case "checkOldPassword":checkOldPassword(req, resp);break;
case "afterModifyPassword":afterModifyPassword(req, resp);break;
case "logout":logout(req, resp);break;
}
}
/**
* 用户登录
* @throws IOException
*/
public void login(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
//获取前端页面传来的用户名
String userName = req.getParameter("userName");
//获取前端页面传来的密码
String password = req.getParameter("password");
// 1、先验证该用户的角色是否为管理员
String userRole = service.getUserRoleByName(userName);
try {
if(!"admin".equals(userRole)) {
JSONResult errorMsg = JSONResult.errorMsg("暂无登录权限");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}else {
//2、获取用户数据 进行用户名和密码验证
User user = service.getUserByNameAndPassword(userName, password);
if(user!=null) {
//将用户数据保存到session 作用域中,方便在后续的操作中使用用户数据
req.getSession().setAttribute("user", user);
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
// 将错误信息封装在结果集中
JSONResult result = JSONResult.errorMsg("用户名或密码错误,请重试");
//以json的形式返回给前端
resp.getWriter().println(JsonUtil.javaObjectToJson(result));
}
} else {
// 将错误信息封装在结果集中
JSONResult result = JSONResult.errorMsg("用户名或密码错误,请重试");
// 以json的形式返回给前端
resp.getWriter().println(JsonUtil.javaObjectToJson(result));
}
} else {
// 将错误信息封装在结果集中
JSONResult result = JSONResult.errorMsg("验证码输入错误,请重试");
// 以json的形式返回给前端
resp.getWriter().println(JsonUtil.javaObjectToJson(result));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 用户名重名检测
*
* @param req
* @param resp
*/
public void checkUserNameRepeat(HttpServletRequest req, HttpServletResponse resp) {
String userName = req.getParameter("userName");
if (userName != null) {
int d = service.checkUserNameRepeat(userName);
try {
if (d > 0) {
JSONResult error = JSONResult.errorMsg("");
resp.getWriter().println(JsonUtil.javaObjectToJson(error));
} else {
JSONResult ok = JSONResult.ok();
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}
} catch (Exception e) {
e.printStackTrace();
}
}
@WebServlet("/backstage_ordersServlet")
public class OrdersServlet extends HttpServlet{
OrdersService service = new OrdersService();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String action = req.getParameter("action");
System.out.println(action);
switch(action) {
case "getOrdersList":getOrdersList(req,resp);break;
case "getOrdersListByName":getOrdersListByName(req,resp);break;
case "deleteOrders":deleteOrders(req,resp);break;
case "deleteAllOrders":deleteAllOrders(req,resp);break;
case "toOrdersUpdatePage":toOrdersUpdatePage(req,resp);break;
case "updateOrders":updateOrders(req,resp);break;
case "fastbuy":sendOrder(req,resp);break;
}
}
/*
* 删除全部订单
*/
private void deleteAllOrders(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
// TODO 自动生成的方法存根
int d = service.deleteAllOrders();
e.printStackTrace();
}
}
/**
* 获取所有商品列表
* @param req
* @param resp
*/
public void carChart(HttpServletRequest req, HttpServletResponse resp) {
User user = (User) req.getSession().getAttribute("user");
int id =232323;
if(user!=null) {
id = user.getId();
}
System.out.println(id+"dddddddddddddddd");
Map<String, List<Goods>> allGoods = service.getCartGoods(id+"");
try {
req.setAttribute("cart", allGoods);
req.getRequestDispatcher("/showcart.jsp").forward(req, resp);
return;
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 获取所有商品列表
* @param req
* @param resp
*/
public void findAllGoods(HttpServletRequest req, HttpServletResponse resp) {
Map<String, List<Goods>> allGoods = service.getAllGoods();
try {
req.setAttribute("allGoods", allGoods);
req.getRequestDispatcher("/main.jsp").forward(req, resp);
return;
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
File fileInfo=new File(fileFullName);
String suffix = fileInfo.getName().substring(fileInfo.getName().lastIndexOf(".") + 1);
if(suffix.equals("jpg") ||suffix.equals("png") ) {
return suffix;
}
return null;
}
}
/**
* 解决中文乱码问题的过滤器
*/
public class EncodingFilter implements Filter {
public EncodingFilter() { }
public void destroy() {}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// 处理请求乱码
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
HttpServletRequest myRequest = new MyRequest(httpServletRequest);
// 处理响应乱码
response.setContentType("text/html;charset=utf-8");
* @param req
* @param resp
* @throws
*/
public void getGoodsListByName(HttpServletRequest req,HttpServletResponse resp) throws IOException {
//设置请求编码格式:
req.setCharacterEncoding("utf-8");
//设置响应编码格式
resp.setContentType("text/html;charset=utf-8");
String name = req.getParameter("goodsName");
String type = req.getParameter("type");
Map<String,String> parmas = new HashMap<>();
parmas.put("name", name);
parmas.put("type", type);
List<Goods> list = service.getGoodsByName(parmas);
try {
if(list != null) {
JSONResult ok = JSONResult.ok(list);
resp.getWriter().println(JsonUtil.javaObjectToJson(ok));
}else {
JSONResult errorMsg = JSONResult.errorMsg("未获取到任何数据,请重试");
resp.getWriter().println(JsonUtil.javaObjectToJson(errorMsg));
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 修改商品时,获取此商品的全部数据,并返回至修改页面
*/
public void toGoodsUpdatePage(HttpServletRequest req,HttpServletResponse resp) {
int id = Integer.parseInt(req.getParameter("id"));
Goods goods = service.getGoodsInfoById(id);
req.setAttribute("goods", goods);
try {
req.getRequestDispatcher("/backstage/tgls/goodsManage/goods_update.jsp").forward(req, resp);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}