基于javaweb+mysql的ssm药品商城系统(java+ssm+jsp+jquery+mysql)
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明
基于javaweb+mysql的SSM药品商城系统(java+ssm+jsp+jquery+mysql)
项目介绍
本系统分为前后台,分为管理员与普通用户两种角色,前台由普通用户登录,后台由管理员登录;
管理员: 登录,修改个人资料,用户管理,公告管理,教室管理,科目管理,听课记录管理等功能。
用户角色包含以下功能: 用户登录,修改个人资料,查看公告,查看听课记录等功能。
环境需要
1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境:Tomcat 7.x,8.x,9.x版本均可 4.硬件环境:windows 7/8/10 1G内存以上;或者 Mac OS; 5.数据库:MySql 5.7版本; 6.是否Maven项目:否;
技术栈
- 后端:Spring+SpringMVC+Mybatis 2. 前端:JSP+jQuery+Ajax
使用说明
- 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件; 2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven; 若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行; 3. 将项目中jdbc.properties配置文件中的数据库配置改为自己的配置; 4. 运行项目,http://localhost:8080/ 用户账号/密码: user/123456 管理员账号/密码:admin/admin
}
@Controller
public class loginController {
@Autowired
private UserService userService;
@RequestMapping("login")
public String login() {
return "login";
}
// 用户登录
@RequestMapping("/userLogin")
public String userLogin(HttpServletRequest request,
@RequestParam String checkImg, User user, Model model)
throws zdyException, Exception {
String sessionCode = (String) request.getSession().getAttribute(
"checkcode");
if (!sessionCode.equalsIgnoreCase(checkImg)) {
//model.addAttribute("message", "验证码输入错误请重新注册");
//throw new zdyException("验证码输入错误请重新注册");
request.getSession().setAttribute("message", "验证码输入错误请重新注册");
return "redirect:login.action";
}
User loginUser = userService.loginFindByUnameAndPwd(user.getUsername(),
user.getPassword());
if (loginUser == null) {
//model.addAttribute("message", "密码输入错误请重新登陆");
request.getSession().setAttribute("message", "密码输入错误请重新登陆");
//throw new zdyException("密码输入错误请重新登陆");
return "redirect:login.action";
}
public class checkImgController {
@RequestMapping("checkImg")
public void checkImg(HttpServletRequest request ,HttpServletResponse response) throws IOException {
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, 18));
// String words
// ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
String words = "\u7684\u4e00\u4e86\u662f\u6211\u4e0d\u5728\u4eba\u4eec\u6709\u6765\u4ed6\u8fd9\u4e0a\u7740\u4e2a\u5730\u5230\u5927\u91cc\u8bf4\u5c31\u53bb\u5b50\u5f97\u4e5f\u548c\u90a3\u8981\u4e0b\u770b\u5929\u65f6\u8fc7\u51fa\u5c0f\u4e48\u8d77\u4f60\u90fd\u628a\u597d\u8fd8";
Random random = new Random();// 生成随机数
// 定义StringBuffer
StringBuffer sb = new StringBuffer();
// 定义x坐标
int x = 10;
for (int i = 0; i < 4; 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;
// 换算弧度
double theta = jiaodu * Math.PI / 180;
// 生成一个随机数字
int index = random.nextInt(words.length()); // 生成随机数 0 到 length - 1
// 获得字母数字
char c = words.charAt(index);
sb.append(c);
// 将c 输出到图片
graphics2d.rotate(theta, x, 20);
graphics2d.drawString(String.valueOf(c), x, 20);
graphics2d.rotate(-theta, x, 20);
x += 30;
public String contact(Model model,HttpServletRequest request) throws Exception {
return "contact";
}
@RequestMapping("/delivery")
public String delivery(Model model,HttpServletRequest request) throws Exception {
return "delivery";
}
//
@RequestMapping("/searchProduct")
public String searchProduct(@RequestParam String condition,Model model,HttpServletRequest request) throws Exception {
//查询一级分类
List<Category> cList = categoryService.findCategory();
request.getSession().getServletContext().setAttribute("cList",cList);
//查询商品
List<Product> hList= productService.findHotProduct();
model.addAttribute("hList", hList);
//搜索商品
List<Product> srList = productService.searchProduct(condition);
model.addAttribute("srList", srList);
//滚动图片专用,最多显示3个商品
List<Product> sList;
if(hList.size()>3)
{
sList = new ArrayList<Product>();
sList.add(hList.get(0));
sList.add(hList.get(1));
sList.add(hList.get(2));
model.addAttribute("sList", sList);
}
else
{
model.addAttribute("sList", hList);
}
return "searchProduct";
}
}
@Controller
public class loginController {
@Autowired
private UserService userService;
@RequestMapping("login")
public String login() {
return "login";
}
// 用户登录
@RequestMapping("/userLogin")
public String userLogin(HttpServletRequest request,
@RequestParam String checkImg, User user, Model model)
throws zdyException, Exception {
String sessionCode = (String) request.getSession().getAttribute(
"checkcode");
if (!sessionCode.equalsIgnoreCase(checkImg)) {
//model.addAttribute("message", "验证码输入错误请重新注册");
//throw new zdyException("验证码输入错误请重新注册");
request.getSession().setAttribute("message", "验证码输入错误请重新注册");
return "redirect:login.action";
}
User loginUser = userService.loginFindByUnameAndPwd(user.getUsername(),
user.getPassword());
if (loginUser == null) {
//model.addAttribute("message", "密码输入错误请重新登陆");
request.getSession().setAttribute("message", "密码输入错误请重新登陆");
//throw new zdyException("密码输入错误请重新登陆");
return "redirect:login.action";
}
request.getSession().setAttribute("loginUser", loginUser);
request.getSession().removeAttribute("message");
return "redirect:index.action";
}
// 用户退出
}
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin!=null){
return true ;
}
request.getRequestDispatcher("/WEB-INF/jsp/admin/index.jsp").forward(request, response);
return true;
}
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest arg0,
HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
}
}
public class golbalException implements HandlerExceptionResolver {
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
response.setHeader("content-type", "text/html;charset=UTF-8");
response.setHeader("refresh", "5;url=/shop/index.action");
zdyException exception =null;
if(ex instanceof zdyException){
exception=(zdyException)ex;
}else{
exception.setMessage("发生了未知异常");
}
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("errorMessage",exception.getMessage()+"系统将在5秒之后跳转到首页......");
modelAndView.setViewName("error");
return modelAndView;
}
}
return "admin/index";
}
categorySecondService.adminCategorySecond_deleteByCid(cid);
categoryService.deleteCategoryByCid(cid);
return "redirect:/admin/adminCategory_findAll.action";
}
// admin 的二级分类的管理
@RequestMapping("/admin/adminCategorySecond_findAllByPage")
public String adminCategorySecond_findAllByPage(@RequestParam int page,Model model,HttpServletRequest request) {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
PageBean<Categorysecond> csPageBean = categorySecondService
.adminCategorySecond_findAllByPage(page);
/*List<Categorysecond> list = csPageBean.getList();
for (Categorysecond categorysecond : list) {
System.out.println(categorysecond.getCsname());
}*/
model.addAttribute("csPageBean", csPageBean);
return "admin/categorysecond/list";
}
@RequestMapping("admin/adminCategorySecond_addPage")
public String adminCategorySecond_addPage(Model model,HttpServletRequest request) throws Exception{
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
List<Category> categoryList = categoryService.adminbFindCategory();
model.addAttribute("categoryList", categoryList);
return "admin/categorysecond/add";
}
@RequestMapping("admin/adminCategorySecond_save")
public String adminCategorySecond_save(@RequestParam String csname,@RequestParam int cid,HttpServletRequest request) throws Exception{
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
Categorysecond categorysecond = new Categorysecond();
categorysecond.setCsname(csname);
categorysecond.setCid(cid);
categorySecondService.adminCategorySecond_save(categorysecond);
@Controller
public class cartController {
@Autowired
private ProductService productService;
// 添加到购物车
@RequestMapping("/addCart")
public String addCart(HttpServletRequest request,@RequestParam int pid,@RequestParam int count ,Model model){
Product product = productService.finbProductByPid(pid);
// 存进一个购物项
CartItem cartItem = new CartItem();
cartItem.setCount(count);
cartItem.setProduct(product);
cartItem.setSubtotle(count*product.getShopPrice());
// 存进购物车
Cart cart=getCart(request);
cart.addCart(cartItem);
return "cart";
}
// 查看我的购物车
@RequestMapping("/myCart")
public String myCart(HttpServletRequest request,Model model){
User loginUser = (User) request.getSession().getAttribute("loginUser");
if (loginUser == null) {
model.addAttribute("message","您还没有登录!");
return "msg";
}
return "cart";
}
@RequestMapping("/clearCart")
public String clearCart(HttpServletRequest request){
Cart cart=getCart(request);
cart.clearCart();
return "redirect:myCart.action";
}
// 删除某个购物项
@RequestMapping("/delProFromCart")
public String delProFromCart(@RequestParam int pid,HttpServletRequest request){
Cart cart=getCart(request);
cart.delProFromCart(pid);
return "redirect:myCart.action";
}
public Cart getCart(HttpServletRequest request) {
Cart cart = (Cart) request.getSession().getAttribute("cart");
if (cart == null) {
cart = new Cart();
request.getSession().setAttribute("cart", cart);
}
return cart;
}
}
@Controller
public class messageController {
@Autowired
private MessageService messageService;
}
Categorysecond categorysecond = new Categorysecond();
categorysecond.setCsname(csname);
categorysecond.setCsid(csid);
categorySecondService.adminCategorySecond_update(categorysecond);
return "redirect:/admin/adminCategorySecond_findAllByPage.action?page=1";
}
@RequestMapping("admin/adminCategorySecond_delete")
public String adminCategorySecond_delete(@RequestParam int csid,HttpServletRequest request) throws Exception{
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
categorySecondService.adminCategorySecond_delete(csid);
return "redirect:/admin/adminCategorySecond_findAllByPage.action?page=1";
}
//admin的商品管理
@RequestMapping("/admin/adminProduct_findAllByPage")
public String adminProduct_findAllByPage(@RequestParam int page, Model model,HttpServletRequest request)
throws Exception {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
PageBean<Product> allProPageBean = productService.findAllProduct(page);
model.addAttribute("allProPageBean", allProPageBean);
return "admin/product/list";
}
@RequestMapping("/admin/adminProduct_addPage")
public String adminProduct_addPage(Model model,HttpServletRequest request) throws Exception {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
//查询出所有的二级分类
List<Categorysecond> cslist = categorySecondService.findAll();
/*for (Categorysecond categorysecond : cslist) {
System.out.println(categorysecond.getCsname());
}*/
model.addAttribute("cslist", cslist);
return "admin/product/add";
}
@RequestMapping("/admin/adminProduct_save")
public String adminProduct_save(Product product,HttpServletRequest request,MultipartFile file) throws Exception {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
@Controller
public class AdminController {
@Autowired
private UserService userService;
@Autowired
public CategoryService categoryService;
@Autowired
public CategorySecondService categorySecondService;
@Autowired
public ProductService productService;
@Autowired
private OrderService orderService;
@Autowired
private MessageService messageService;
@RequestMapping("/admin/admin_findAll")
}
@RequestMapping("/admin/adminProduct_save")
public String adminProduct_save(Product product,HttpServletRequest request,MultipartFile file) throws Exception {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
product.setPdate(new Date());
// 上传图片
if (file != null) {
String path = request.getServletContext().getRealPath(
"/products");
String uploadFileName = file.getOriginalFilename();
String fileName = UUIDUtiils.getUUID()+uploadFileName;
File diskFile = new File(path + "//" + fileName);
file.transferTo(diskFile);
product.setImage("products/" + fileName);
}
System.out.println(product.getImage());
productService.adminProduct_save(product);
return "redirect:/admin/adminProduct_findAllByPage.action?page=1";
}
@RequestMapping("admin/adminProduct_deletecs")
public String adminProduct_deletecs(@RequestParam int pid,HttpServletRequest request) throws Exception{
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
productService.adminProduct_deletecs(pid);
return "redirect:/admin/adminProduct_findAllByPage.action?page=1";
}
/**
* 编辑商品
*
* @param pid
* @param model
* @param request
* @return
* @throws Exception
*/
@RequestMapping("admin/adminProduct_edit")
public void loginFindByid(HttpServletRequest request,
HttpServletResponse response, @RequestParam String username) {
response.setContentType("text/html;charset=UTF-8");
try {
User user = userService.loginFindByid(username);
if (user!=null) {
response.getWriter().write("可以登录");
}else{
response.getWriter().write("不可以登录");
}
} catch (Exception e) {
e.printStackTrace();
}
}
@RequestMapping("/registFindByid")
public void registFindByid(HttpServletRequest request,
HttpServletResponse response, @RequestParam String username) {
response.setContentType("text/html;charset=UTF-8");
try {
User user = userService.loginFindByid(username);
if (user!=null) {
response.getWriter().write("已经被注册");
}else{
response.getWriter().write("可以注册");
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@Controller
public class CategorySecondController {
@Autowired
private ProductService productService;
//根据一级目录查找二级目录下面的商品(使用延迟加载但是这里不知为啥使用起来出错了)
public String adminCategory_save(@RequestParam String cname,HttpServletRequest request)
throws Exception {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
Category addCategory = new Category();
addCategory.setCname(cname);
categoryService.addCategory(addCategory);
return "redirect:/admin/adminCategory_findAll.action";
}
@RequestMapping("/admin/adminCategory_edit")
public String adminCategory_delete(@RequestParam int cid, Model model,HttpServletRequest request)
throws Exception {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
Category existCategory = categoryService.findCategory(cid);
model.addAttribute("existCategory", existCategory);
return "admin/category/edit";
}
@RequestMapping("/admin/adminCategory_update")
public String adminCategory_update(@RequestParam int cid,
@RequestParam String cname,HttpServletRequest request) {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
Category category = new Category();
category.setCid(cid);
category.setCname(cname);
categoryService.adminCategory_update(category);
return "redirect:/admin/adminCategory_findAll.action";
}
@RequestMapping("/admin/adminCategory_delete")
public String adminCategory_delete(@RequestParam int cid,HttpServletRequest request) throws Exception {
Adminuser adminuserLogin = (Adminuser) request.getSession().getAttribute("adminuserLogin");
if(adminuserLogin==null){
request.getSession().setAttribute("message","对不起您还没有登录");
return "admin/index";
}
HttpServletRequest request) throws Exception {
User loginUser = (User) request.getSession().getAttribute("loginUser");
PageBean<Orders> pageBean = orderService.findOrderByUidAndPage(page,loginUser.getUid());
model.addAttribute("pageBean", pageBean);
return "orderList";
}
// 确认收货
@RequestMapping("/updateState")
public String updateState(@RequestParam int oid ) throws Exception {
orderService.updateOrderStatus(oid, 3);
return "redirect:myOrder.action?page=1";
}
}
@Controller
public class checkImgController {
@RequestMapping("checkImg")
public void checkImg(HttpServletRequest request ,HttpServletResponse response) throws IOException {
int width = 120;
int height = 30;
// 步骤一 绘制一张内存中图片
BufferedImage bufferedImage = new BufferedImage(width, height,
BufferedImage.TYPE_INT_RGB);
// 步骤二 图片绘制背景颜色 ---通过绘图对象
Orders noPayOrder = orderService.findOrderByOid(oid);
request.getSession().setAttribute("orders", noPayOrder);
return "order";
}
// 查询myOrder
@RequestMapping("/myOrder")
public String myOrder(@RequestParam int page, Model model,
HttpServletRequest request) throws Exception {
User loginUser = (User) request.getSession().getAttribute("loginUser");
PageBean<Orders> pageBean = orderService.findOrderByUidAndPage(page,loginUser.getUid());
model.addAttribute("pageBean", pageBean);
return "orderList";
}
// 确认收货
@RequestMapping("/updateState")
public String updateState(@RequestParam int oid ) throws Exception {
orderService.updateOrderStatus(oid, 3);
return "redirect:myOrder.action?page=1";
}
}
@Controller
public class checkImgController {
@RequestMapping("checkImg")
public void checkImg(HttpServletRequest request ,HttpServletResponse response) throws IOException {
int width = 120;
int height = 30;
}
// 0表示没有付款、1表示已付款即将发货 2表示确认收货 3表示交易成功
orders.setState(0);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
Date date = simpleDateFormat.parse(simpleDateFormat.format(new Date()));
orders.setOrderTime(date);
orders.setUid(loginUser.getUid());
orders.setMoney(cart.getTotale());
/* orders.setState(0);
// //SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
orders.setOrderTime(new java.util.Date());
orders.setUid(loginUser.getUid());
orders.setMoney(cart.getTotale());
*/
orderService.toOrder(orders);
Map<Integer, CartItem> cartItems = cart.getCartItem();
for (Entry<Integer, CartItem> entry : cartItems.entrySet()) {
CartItem cartItem = entry.getValue();
Orderitem orderitem = new Orderitem();
orderitem.setProduct(cartItem.getProduct());
orderitem.setCount(cartItem.getCount());
orderitem.setPid(cartItem.getProduct().getPid());
orderitem.setSubtotal(cartItem.getSubtotle());
orderitem.setOid(orders.getOid());
orders.getOiList().add(orderitem);
orderService.toOrderItem(orderitem);
}
cart.clearCart();
request.getSession().setAttribute("orders", orders);
return "order";
}
// 为定单付款
@RequestMapping("/payOrder")
public String payOrder(Orders orders,@RequestParam String receiveInfo,@RequestParam String phoNum,@RequestParam String accepter) throws Exception {
orders.setReceiveinfo(receiveInfo);
orders.setPhonum(phoNum);
orders.setAccepter(accepter);
orderService.payOrder(orders);
return "redirect:myOrder.action?page=1";
@RequestMapping("/toOrder")
public String toOrder(HttpServletRequest request,Model model) throws Exception {
Orders orders = new Orders();
Cart cart = (Cart) request.getSession().getAttribute("cart");
User loginUser = (User) request.getSession().getAttribute("loginUser");
if(loginUser==null){
model.addAttribute("message", "对不起您还没有登录");
return "msg";
}
// 0表示没有付款、1表示已付款即将发货 2表示确认收货 3表示交易成功
orders.setState(0);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
Date date = simpleDateFormat.parse(simpleDateFormat.format(new Date()));
orders.setOrderTime(date);
orders.setUid(loginUser.getUid());
orders.setMoney(cart.getTotale());
/* orders.setState(0);
// //SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
orders.setOrderTime(new java.util.Date());
orders.setUid(loginUser.getUid());
orders.setMoney(cart.getTotale());
*/
orderService.toOrder(orders);
Map<Integer, CartItem> cartItems = cart.getCartItem();
for (Entry<Integer, CartItem> entry : cartItems.entrySet()) {
CartItem cartItem = entry.getValue();
Orderitem orderitem = new Orderitem();
orderitem.setProduct(cartItem.getProduct());
orderitem.setCount(cartItem.getCount());
orderitem.setPid(cartItem.getProduct().getPid());
orderitem.setSubtotal(cartItem.getSubtotle());
orderitem.setOid(orders.getOid());
orders.getOiList().add(orderitem);
orderService.toOrderItem(orderitem);
}