基于javaweb和mysql的ssm+maven网上电子书城项目(java+ssm+jsp+maven+mysql)

私信源码获取及调试交流

私信源码获取及调试交流

运行环境

Java≥8、MySQL≥5.7、Tomcat≥8

开发工具

eclipse/idea/myeclipse/sts等均可配置运行

适用

课程设计,大作业,毕业设计,项目练习,学习演示等

功能说明

基于javaweb的SSM+Maven网上电子书城项目(java+ssm+jsp+maven+mysql)

项目描述:

spring mvc +jsp实现的简单书城项目

运行环境:

jdk8+tomcat9+mysql+IntelliJ IDEA

项目技术:

spring+spring mvc+mybatis+jsp+maven

           model.addAttribute("pageModel", pageModel);
           return "/client/product_list.jsp";
       }else {
           return "/index.jsp";
       }

   }

   @RequestMapping("/findProductById.do")
    public String findProductById(String id,Model model){
       Product product=productService.findProductById(id);
       model.addAttribute("p",product);
       return "/client/info.jsp";
   }

   @RequestMapping("/findProductByName.do")
    public String findBookByName(@RequestParam(defaultValue = "1") int pageIndex,String name,Model model){

           PageModel pageModel=new PageModel();
           pageModel.setPageIndex(pageIndex);

           int count=productService.findProductCount(name);
           pageModel.setRecordCount(count);

           List<Product> products=productService.findProductByName(name,pageModel);
           model.addAttribute("count",count);
           model.addAttribute("products",products);
           model.addAttribute("pageModel",pageModel);
           model.addAttribute("name",name);
           return "/client/product_search_list.jsp";
   }

   @RequestMapping("/addCart.do")
    public String  addCart(String id, HttpSession session,Model model){

       //list数组添加购物车
      /* List<Cart> cart= (List<Cart>) session.getAttribute("cart");
       Product product = productService.findProductById(id);
       Cart book=new Cart();
       if(cart!=null){
           for(int i=0;i<cart.size();i++){
               if(cart.get(i).getKey().getId().equals(product.getId())){
                   cart.get(i).setValue(cart.get(i).getValue()+1);
        HSSFWorkbook wb=new HSSFWorkbook();
        HSSFSheet sheet=wb.createSheet(sheetName);
        HSSFRow row1=sheet.createRow(0);
        HSSFCell cell=row1.createCell(0);
        sheet.addMergedRegion(new CellRangeAddress(0,0,0,1));
        cell.setCellValue(titleName);

        HSSFRow row=sheet.createRow(1);
        for(int i=0;i<2;i++){
            row.createCell(i).setCellValue(columnName[i]);
        }

        for(int i=0;i<dataList.length;i++){
            row=sheet.createRow(i+2);
            for(int j=0;j<2;j++){
                row.createCell(j).setCellValue(dataList[i][j]);
            }
        }

        String filename=fileName+".xls";
        filename=processFileName(request,filename);
        response.setContentType("application/ms-excel;charset=UTF-8");
        response.setHeader("content-Disposition","attachment;filename="+filename);
        OutputStream out=response.getOutputStream();
        wb.write(out);
    }
   //解决浏览器乱码
    public String processFileName(HttpServletRequest request, String fileNames) {
        String codedfilename = null;
        try {
            String agent = request.getHeader("USER-AGENT");
            if (null != agent && -1 != agent.indexOf("MSIE") || null != agent
                    && -1 != agent.indexOf("Trident")) {// ie

                String name = java.net.URLEncoder.encode(fileNames, "UTF8");

                codedfilename = name;
            } else if (null != agent && -1 != agent.indexOf("Mozilla")) {// 火狐,chrome等

                codedfilename = new String(fileNames.getBytes("UTF-8"), "iso-8859-1");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return codedfilename;
    }

}


    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        /*强制类型转换*/
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        /*获取本次请求的URI*/
        String requestURI = request.getRequestURI();
        //boolean flag = false;
        /*循环判断本次请求是否是数组中定义的页面或处理器方法*/
        for (String s:IG_URI){
            /*如果是,放行*/
            if (requestURI.endsWith(s)){
                //flag = true;
                filterChain.doFilter(request,response);
                //break;
                return;
            }
        }

        // (!flag){
            /*获取当前登录用户的信息*/
            User login_user = (User) request.getSession().getAttribute("login_user");
            /*如果用户已经登录*/
            if (login_user != null){
                /*通过放行*/
                if("超级管理员".equals(login_user.getRole())){
                    filterChain.doFilter(request,response);
                }else {
                    response.sendRedirect(request.getContextPath()+"/admin/error/privilege.jsp");
                }
            }else {
                request.setAttribute("message","权限不足");
                response.sendRedirect(request.getContextPath()+"/admin/error/privilege.jsp");
            }
        Notice notice=productService.findRecentNotice();
        List<Product> products=productService.findHotProduct();
        model.addAttribute("notice",notice);
        model.addAttribute("products",products);
        return "/client/index.jsp";
    }
}

/**
 * 生成验证码的工具类
 */
public class CheckImageServlet extends HttpServlet {

	// 集合中保存所有成语
	private List<String> words = new ArrayList<String>();

	@Override
	public void init() throws ServletException {
		// 初始化阶段,读取new_words.txt
		// web工程中读取 文件,必须使用绝对磁盘路径
		String path = getServletContext().getRealPath("/WEB-INF/new_words.txt");
		try {
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					new FileInputStream(path), "utf-8"));
			String line;
            bookService.addProduct(product);
            return "redirect:/admin/product/findProduct.do";
        }else {
            model.addAttribute("message","上传附件失败!");
            return "/admin/products/error.jsp";
        }
    }

    @RequestMapping("/removeProduct.do")
    public String removeProduct(String id,Model model){

            Product target = bookService.findProductById(id);
            String path = IdUtils.rootDir + "/src/main/webapp";
            String filename=target.getImgurl();
            File file = new File(path,filename);
            if (file.exists()) {
                //file.delete();
            }
            int rows=bookService.removeProductById(id);
            if(rows>0){
                return "redirect:/admin/product/findProduct.do";
            }else{
                model.addAttribute("message","删除图书失败!");
                return "/admin/products/error.jsp";
            }
    }

    @RequestMapping("/download.do")
    public void download(String year, String month, HttpServletResponse response,HttpServletRequest request) throws IOException {

        List<Orderitem> tops=bookService.download(year,month);

        String fileName = year+"年"+month+"月销售榜单";
        String sheetName=month+"月销售榜单";
        String titleName=year+"年"+month+"月销售榜单";
        String[] columnName={"商品名称","商品销量"};

        String[][] dataList =new String[tops.size()][2];
        for(int i=0;i<tops.size();i++){
            Product target = bookService.findProductById(id);
            String path = IdUtils.rootDir + "/src/main/webapp";
            String filename=target.getImgurl();
            File file = new File(path,filename);
            if (file.exists()) {
                //file.delete();
            }
            int rows=bookService.removeProductById(id);
            if(rows>0){
                return "redirect:/admin/product/findProduct.do";
            }else{
                model.addAttribute("message","删除图书失败!");
                return "/admin/products/error.jsp";
            }
    }

    @RequestMapping("/download.do")
    public void download(String year, String month, HttpServletResponse response,HttpServletRequest request) throws IOException {

        List<Orderitem> tops=bookService.download(year,month);

        String fileName = year+"年"+month+"月销售榜单";
        String sheetName=month+"月销售榜单";
        String titleName=year+"年"+month+"月销售榜单";
        String[] columnName={"商品名称","商品销量"};

        String[][] dataList =new String[tops.size()][2];
        for(int i=0;i<tops.size();i++){
            dataList[i][0]=tops.get(i).getProduct().getName();
            dataList[i][1]=String.valueOf(tops.get(i).getBuynum());
        }

        HSSFWorkbook wb=new HSSFWorkbook();
        HSSFSheet sheet=wb.createSheet(sheetName);
        HSSFRow row1=sheet.createRow(0);
        HSSFCell cell=row1.createCell(0);
        sheet.addMergedRegion(new CellRangeAddress(0,0,0,1));
        cell.setCellValue(titleName);

        HSSFRow row=sheet.createRow(1);
        for(int i=0;i<2;i++){
            row.createCell(i).setCellValue(columnName[i]);
        }

        for(int i=0;i<dataList.length;i++){
            row=sheet.createRow(i+2);
            for(int j=0;j<2;j++){
                row.createCell(j).setCellValue(dataList[i][j]);
            }
    }

    @Override
    public User findUserByNameAndPassword(User user) {
        return userDao.findUserByNameAndPassword(user);
    }

    @Override
    public int active(String activeCode) {

        return userDao.active(activeCode);
    }

    @Override
    public int modifyUserInfo(User user) {
        return userDao.modifyUserInfo(user);
    }

    @Override
    public User findUserById(Integer id) {
        return userDao.findUserById(id);
    }

    @Override
    public User findEmail(String email) {
        return userDao.findEmail(email);
    }

    @Override
    public User findUsername(String username) {
        return userDao.findUsername(username);
    }
}

        //设置请求参数
        AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
        alipayRequest.setReturnUrl(AlipayConfig.return_url);
        alipayRequest.setNotifyUrl(AlipayConfig.notify_url);

        //商户订单号,商户网站订单系统中唯一订单号,必填
        String out_trade_no = id;

        orderService.modifyPaystate(out_trade_no);
        return "/client/paysuccess.jsp";
    }

    @RequestMapping("/findOrderByUser.do")
    public String findOrderByUser(HttpSession session,Model model){

        User user= (User) session.getAttribute("user");
        List<Order> orders=orderService.findOrderByUser(user.getId());
        model.addAttribute("orders",orders);
        return "/client/orderlist.jsp";

    }

    @RequestMapping("/findOrderById.do")
    public String findOrderById(String id,Model model){

         List<Orderitem> orderitems=orderService.findOrderitemById(id);
         model.addAttribute("orderitems",orderitems);
         return "/client/orderInfo.jsp";
    }

    @RequestMapping("/delOrderById.do")
    public String delOrderById(String id,String flag){

        orderService.delOrderById(id,flag);
        return "/client/delOrderSuccess.jsp";

    }

}


public class LoginFilter implements Filter {
    /*不进行过滤的页面或处理器方法*/
    private String[] IG_URI = {"/login.jsp","/login.do","/"};

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        /*强制类型转换*/
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        /*获取本次请求的URI*/
        String requestURI = request.getRequestURI();
        //boolean flag = false;
        /*循环判断本次请求是否是数组中定义的页面或处理器方法*/
        for (String s:IG_URI){
            /*如果是,放行*/
            if (requestURI.endsWith(s)){
                //flag = true;
                filterChain.doFilter(request,response);
                //break;
                return;
            }
        }

        // (!flag){
            /*获取当前登录用户的信息*/
            User login_user = (User) request.getSession().getAttribute("login_user");
            /*如果用户已经登录*/
            if (login_user != null){
                /*通过放行*/
                if("超级管理员".equals(login_user.getRole())){
                    filterChain.doFilter(request,response);
                }else {
                    response.sendRedirect(request.getContextPath()+"/admin/error/privilege.jsp");
                }
            }else {
                request.setAttribute("message","权限不足");
                response.sendRedirect(request.getContextPath()+"/admin/error/privilege.jsp");
		String word = words.get(index-1);// 获得成语
		// 定义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;
			// 换算弧度
			double theta = jiaodu * Math.PI / 180;

			// 获得字母数字
			char c = word.charAt(i);

			// 将c 输出到图片
			graphics2d.rotate(theta, x, 20);
			graphics2d.drawString(String.valueOf(c), x, 20);
			graphics2d.rotate(-theta, x, 20);
			x += 40;
		}
		System.out.println(word);
		// 将验证码内容保存session
		request.getSession().setAttribute("checkcode_session", word);

		// 步骤五 绘制干扰线
		graphics.setColor(getRandColor(160, 200));
		int x1;
		int x2;
		int y1;
		int y2;
		for (int i = 0; i < 30; i++) {
			x1 = random.nextInt(width);
			x2 = random.nextInt(12);
			y1 = random.nextInt(height);
			y2 = random.nextInt(12);
			graphics.drawLine(x1, y1, x1 + x2, x2 + y2);
		}

		// 将上面图片输出到浏览器 ImageIO
		graphics.dispose();// 释放资源
		ImageIO.write(bufferedImage, "jpg", response.getOutputStream());

	}
    public String addNotice(Notice notice,Model model){

         int rows=noticeService.addNotice(notice);
         if(rows>0){
             return "redirect:/admin/notice/findNotice.do";
         }else {
             model.addAttribute("message","添加公告失败!");
             return "/admin/notices/error.jsp";
         }
    }

    @RequestMapping("/removeNotice.do")
    public String removeNotice(Integer id,Model model){

        int rows=noticeService.removeNotice(id);
        if(rows>0){
            return "redirect:/admin/notice/findNotice.do";
        }else{
            model.addAttribute("message","删除公告失败!");
            return "/admin/notices/error.jsp";
        }
    }
}

public class LoginFilter implements Filter {
    /*不进行过滤的页面或处理器方法*/
    private String[] IG_URI = {"/login.jsp","/login.do","/"};

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        /*强制类型转换*/
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        /*获取本次请求的URI*/
        String requestURI = request.getRequestURI();

/**
 * company: www.abc.com
 * Author: Administrator
 */
@Service
public class UserServiceImpl implements IUserService {
    @Resource
    private IUserDao userDao;
    @Override
    public int addUser(User user, HttpServletRequest request) {
        int rows=0;
       /* String emailMsg="请点击<a href='http://localhost:8080/"+request.getContextPath()+"/client/user/active.do?activeCode="+user.getActiveCode()+" '>激活</a>你的账号";*/
        String emailMsg="请点击<a href='http://localhost:8080/bookStore_war/client/user/active.do?activeCode="+user.getActiveCode()+" '>激活</a>你的账号";
        try {
            MailUtils.sendMail(user.getEmail(),emailMsg);

        } catch (MessagingException e) {
            e.printStackTrace();
        }
        try {
            user.setState(1);
            rows=userDao.addUser(user);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return rows;
    }

    @Override
    public User findUserByNameAndPassword(User user) {
        return userDao.findUserByNameAndPassword(user);
    }

    @Override
    public int active(String activeCode) {

        return userDao.active(activeCode);
    }
                //flag = true;
                filterChain.doFilter(request,response);
                //break;
                return;
            }
        }

        // (!flag){
            /*获取当前登录用户的信息*/
            User login_user = (User) request.getSession().getAttribute("login_user");
            /*如果用户已经登录*/
            if (login_user != null){
                /*通过放行*/
                if("超级管理员".equals(login_user.getRole())){
                    filterChain.doFilter(request,response);
                }else {
                    response.sendRedirect(request.getContextPath()+"/admin/error/privilege.jsp");
                }
            }else {
                request.setAttribute("message","权限不足");
                response.sendRedirect(request.getContextPath()+"/admin/error/privilege.jsp");
            }
       // }
       /* HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String requestURI = request.getRequestURI();
        if(requestURI.endsWith("/login.jsp") || requestURI.endsWith("/login.do")){
            filterChain.doFilter(request,response);
        }*/
    }

    @Override
    public void destroy() {

    }
}

            return "/client/activeFail.jsp";
        }

    }

    @RequestMapping("/modifyUserInfo.do")
    public String modifyUserInfo(User user,Model model,HttpSession session){

            int rows=userService.modifyUserInfo(user);
            if(rows>0){
                model.addAttribute("message","修改成功,请重新登陆!");
                return "/client/login.jsp";
            }else{
                model.addAttribute("error","修改用户信息失败!");
                return "/client/modifyuserinfo.jsp";
            }
    }

    @RequestMapping("/logout.do")
    public String logout(HttpSession session,HttpServletRequest request,HttpServletResponse response){
        session.removeAttribute("user");
        Cookie cookie1 =new Cookie("bookstore_username",null);
        cookie1.setMaxAge(0);
        cookie1.setPath(request.getContextPath()+"/");
        response.addCookie(cookie1);
        Cookie cookie2 =new Cookie("bookstore_password",null);
        cookie2.setMaxAge(0);
        cookie2.setPath(request.getContextPath()+"/");
        response.addCookie(cookie2);
        return "/client/login.jsp";
    }

    @RequestMapping("/findEmail.do")
    @ResponseBody
    public String findEmail(String email){
        User user=userService.findEmail(email);
        if(user!=null){
            return "exist";
        }else{
            return null;
        }
    }

    @RequestMapping("/findUsername.do")
    @ResponseBody
    public String findUsername(String username){
        User user=userService.findUsername(username);
        if(user!=null){
            return "exist";
        }else{
            return null;
        }
    }

                }
            }

            bookService.modifyProduct(product);
            return "redirect:/admin/product/findProduct.do";

        }
    }

    @RequestMapping("/addProduct.do")
    public String addProduct(Product product, Model model, HttpSession session,HttpServletRequest request) throws IOException {

        String path =IdUtils.rootDir + "/src/main/webapp/productImg";

        //上传到服务器
       /* String path=session.getServletContext().getRealPath("/productImg");*/
        File upload = new File(path);

        if (!upload.exists()) {
            upload.mkdirs();
        }
        String filename = IdUtils.getUUID()+".jpg";
        if(filename.endsWith(".jpg")||filename.endsWith(".png")){
            product.getFile().transferTo(new File(path+File.separator+filename));
            product.setId(IdUtils.getUUID());
            product.setImgurl("/productImg/"+filename);
            bookService.addProduct(product);
            return "redirect:/admin/product/findProduct.do";
        }else {
            model.addAttribute("message","上传附件失败!");
            return "/admin/products/error.jsp";
        }
    }

    @RequestMapping("/removeProduct.do")
    public String removeProduct(String id,Model model){

            Product target = bookService.findProductById(id);

           PageModel pageModel=new PageModel();
           pageModel.setPageIndex(pageIndex);

           int count=productService.findProductCount(name);
           pageModel.setRecordCount(count);

           List<Product> products=productService.findProductByName(name,pageModel);
           model.addAttribute("count",count);
           model.addAttribute("products",products);
           model.addAttribute("pageModel",pageModel);
           model.addAttribute("name",name);
           return "/client/product_search_list.jsp";
   }

   @RequestMapping("/addCart.do")
    public String  addCart(String id, HttpSession session,Model model){

       //list数组添加购物车
      /* List<Cart> cart= (List<Cart>) session.getAttribute("cart");
       Product product = productService.findProductById(id);
       Cart book=new Cart();
       if(cart!=null){
           for(int i=0;i<cart.size();i++){
               if(cart.get(i).getKey().getId().equals(product.getId())){
                   cart.get(i).setValue(cart.get(i).getValue()+1);
               }else{
                   book.setCount(cart.get(cart.size()-1).getCount()+1);
                   book.setKey(product);
                   book.setValue(1);
                   cart.add(book);
                   break;
               }
           }
       }else {
           book.setCount(1);
           book.setValue(1);
           book.setKey(product);
           cart=new ArrayList<>();
           cart.add(book);
       }
       session.setAttribute("cart",cart);
       model.addAttribute("p",product);
       session.setAttribute("category",product.getCategory());*/

      //map添加购物车
       Product product = productService.findProductById(id);
       Map<Product,Integer> cart= (Map<Product, Integer>) session.getAttribute("cart");
       if(cart == null){
           cart=new HashMap<Product,Integer>();
   @RequestMapping("/changeCart.do")
    public String changeCart(String id,Integer count,HttpSession session){

       //map修改购物车
       Product product = productService.findProductById(id);
       Map<Product,Integer> cart= (Map<Product, Integer>) session.getAttribute("cart");
       if(count ==0){
           cart.remove(product);
       }else {
           cart.put(product,count);
       }
       return "/client/cart.jsp";
   }

    @RequestMapping("/showIndex.do")
    public String showIndex(Model model){

        Notice notice=productService.findRecentNotice();
        List<Product> products=productService.findHotProduct();
        model.addAttribute("notice",notice);
        model.addAttribute("products",products);
        return "/client/index.jsp";
    }
}

        orderService.delOrderById(id,flag);
        return "/client/delOrderSuccess.jsp";

    }

}

/**
 * company: www.abc.com
 * Author: Administrator
 */
@Controller
@RequestMapping("/admin/notice")
public class NoticeHandler {

    @Autowired
    private INoticeService noticeService;

    @RequestMapping("/findNotice.do")
    public String findNotice(@RequestParam(defaultValue = "1") int pageIndex, Model model){

        PageModel pageModel=new PageModel();
        pageModel.setPageIndex(pageIndex);

        int count=noticeService.findNoticeCount();
        pageModel.setRecordCount(count);

        List<Notice> notices=noticeService.findNotice(pageModel);

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐