功能主要分为 四个部分:
1、用户的登录、注册
2、名片管理:增删改查名片,删除分为彻底删除或者放入到回收站中
3、回收站:对删除的名片进行还原或者删除
4、管理员:可以对所有名片和所有用户进行管理
主要使用 jsp,css,js做的页面(做的很丑确实)
java写代码
使用了 jdbc 连接数据库,servlet处理用户请求和响应,jsp前后台交互。
使用了mvc三层架构。
1、java代码
结构:
2、页面
3、核心代码
package com.atmae.web;
import com.atmae.pojo.Card;
import com.atmae.pojo.User;
import com.atmae.service.CardService;
import com.atmae.service.UserService;
import com.atmae.service.impl.CardServiceImpl;
import com.atmae.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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
import java.util.List;
@WebServlet(“/cardServlet”)
public class CardServlet extends HttpServlet {
private CardService cardService = new CardServiceImpl();
private UserService userService = new UserServiceImpl();
protected void showAny(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List cards = cardService.show();
req.setAttribute(“cards”, cards);
req.getRequestDispatcher(“manage1.jsp”).forward(req, resp);
}
protected void show(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String id = req.getParameter(“id”);
int id0 = Integer.parseInt(id);
Card card = cardService.showCardById(id0);
if (card == null) {
req.setAttribute(“error”, “未找到此id!”);
} else {
req.setAttribute(“card”, card);
}
req.getRequestDispatcher(“show.jsp”).forward(req, resp);
}
protected void showDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
User user = (User) session.getAttribute(“user”);
String username = user.getUsername();
List cards = cardService.showCardForDelete(username);
if (cards != null) {
req.setAttribute(“cards”, cards);
} else {
req.setAttribute(“error”, “回收站为空”);
}
req.getRequestDispatcher(“waste.jsp”).forward(req, resp);
}
protected void showDeleteAdmin(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
List cards = cardService.showDeleteAdmin();
if (cards != null) {
req.setAttribute(“cards”, cards);
} else {
req.setAttribute(“error”, “回收站为空”);
}
req.getRequestDispatcher(“waste.jsp”).forward(req, resp);
}
protected void showAll(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
User user = (User) session.getAttribute(“user”);
String username = user.getUsername();
List cards = cardService.showCards(username);
if (cards != null) {
req.setAttribute(“cards”, cards);
req.setAttribute(“mulity”, “mulity”);
} else {
req.setAttribute(“error”, “当前用户没有名片”);
}
req.getRequestDispatcher(“show.jsp”).forward(req, resp);
}
protected void updateName(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter(“name”);
name = new String(name.getBytes(“ISO-8859-1”), “UTF-8”);
String id = req.getParameter(“id”);
HttpSession session = req.getSession();
User user = (User) session.getAttribute(“user”);
int id0 = Integer.parseInt(id);
if (user.getUsername().equals(cardService.showCNameByID(id0)) && cardService.updateName(name, id0)) {
req.getRequestDispatcher(“jump3.jsp”).forward(req, resp);
} else {
req.setAttribute(“error”, “未找到此id号”);
req.getRequestDispatcher(“update.jsp”).forward(req, resp);
}
}
protected void updateAccount(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String account = req.getParameter(“account”);
String id = req.getParameter(“id”);
HttpSession session = req.getSession();
User user = (User) session.getAttribute(“user”);
int id0 = Integer.parseInt(id);
if (user.getUsername().equals(cardService.showCNameByID(id0)) && cardService.updateAccount(account, id0)) {
req.getRequestDispatcher(“jump3.jsp”).forward(req, resp);
} else {
req.setAttribute(“error”, “未找到此id号”);
req.getRequestDispatcher(“update.jsp”).forward(req, resp);
}
}
protected void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name = req.getParameter(“name”);
String prem = req.getParameter(“prem”);
int prem0 = Integer.parseInt(prem);
name = new String(name.getBytes(“ISO-8859-1”), “UTF-8”);
HttpSession session = req.getSession();
User user = (User) session.getAttribute(“user”);
if (prem0 == 1) {
if (user.getUsername().equals(cardService.showCNameByName(name)) && cardService.deleteRealByName(name) != -1) {
req.getRequestDispatcher(“jump2.jsp”).forward(req, resp);
} else {
req.setAttribute(“error”, “未找到此用户名”);
req.getRequestDispatcher(“delete.jsp”).forward(req, resp);
}
} else {
if (user.getUsername().equals(cardService.showCNameByName(name)) && cardService.deleteCardByName(name)) {
req.getRequestDispatcher(“jump2.jsp”).forward(req, resp);
} else {
req.setAttribute(“error”, “未找到此用户名”);
req.getRequestDispatcher(“delete.jsp”).forward(req, resp);
}
}
}
protected void deleteCard(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String id = req.getParameter(“id”);
String prem = req.getParameter(“prem”);
int prem0 = Integer.parseInt(prem);
int id0 = Integer.parseInt(id);
if (prem0 == 1) {
cardService.deleteCardByID(id0);
req.getRequestDispatcher(“jump7.jsp”).forward(req, resp);
} else {
cardService.deleteRealById(id0);
req.getRequestDispatcher(“jump6.jsp”).forward(req, resp);
}
}
protected void permanent(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String id = req.getParameter(“id”);
int id0 = Integer.parseInt(id);
cardService.deleteWaste(id0);
req.getRequestDispatcher(“jump5.jsp”).forward(req, resp);
}
protected void restore(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String id = req.getParameter(“id”);
int id0 = Integer.parseInt(id);
cardService.returnWaste(id0);
req.getRequestDispatcher(“jump4.jsp”).forward(req, resp);
}
protected void insert(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
总目录展示
该笔记共八个节点(由浅入深),分为三大模块。
高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。该笔记将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。
一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。
高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。
篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)
由于内容太多,这里只截取部分的内容。
而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,将用一个节点来专门讲解如何设计秒杀减库存方案。
高可用。 虽然介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。笔记的最后,将带你思考可以从哪些环节来设计兜底方案。
篇幅有限,无法一个模块一个模块详细的展示(这些要点都收集在了这份《高并发秒杀顶级教程》里),麻烦各位转发一下(可以帮助更多的人看到哟!)
[外链图片转存中…(img-dQ160Rhy-1712086467081)]
[外链图片转存中…(img-l7YkTAkv-1712086467082)]
由于内容太多,这里只截取部分的内容。