赞
踩
作者主页:夜未央5788
简介:Java领域优质创作者、Java项目、学习资料、技术互助
文末获取源码
本项目包含管理员、用户两种角色;
管理员角色包含以下功能:
登录页面,管理员管理书籍,用户管理等功能。
用户角色包含以下功能:
首页,用户登录页面,电子书查看页面,下载电子书,查看分类,用户上传图书,查看个人中心,添加反馈,查看反馈等功能。
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项目:是;
1. 后端:Spring+SpringMVC+Mybatis
2. 前端:JSP+CSS+JavaScript
1. 使用Navicat或者其它工具,在mysql中创建对应名称的数据库,并导入项目的sql文件;
2. 使用IDEA/Eclipse/MyEclipse导入项目,Eclipse/MyEclipse导入时,若为maven项目请选择maven;
若为maven项目,导入成功后请执行maven clean;maven install命令,然后运行;
3. 将项目中config.properties配置文件中的数据库配置改为自己的配置;
4. 运行项目,在浏览器中输入http://localhost:8080/ssm_ebooknet 登录
- package com.lianshuwang.controller;
-
- import com.lianshuwang.domin.Book;
- import com.lianshuwang.domin.BookType;
- import com.lianshuwang.domin.Upload;
- import com.lianshuwang.domin.User;
- import com.lianshuwang.helper.PageHelper;
- import com.lianshuwang.service.BookService;
- import com.lianshuwang.service.UserService;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
-
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import java.io.*;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Date;
- import java.util.List;
-
- /**
- * Created by admin on 2019/10/15.
- */
- @Controller
- public class BookController {
-
- @Autowired
- private BookService bookService;
- @Autowired
- private UserService userService;
-
- private static final Log logger = LogFactory.getLog(BookController.class);
-
- @RequestMapping(value = "/bookList")
- public String getBookList(String bookType, String smallType, @RequestParam(value = "pageId",defaultValue = "1") int pageId, Model model) {
- logger.info("you are visiting the books list page!");
- List<BookType> smallTypes;
- smallTypes = bookService.getSmallTypesOfBook(bookType);
- model.addAttribute("smallTypesOfBook", smallTypes);
- model.addAttribute("bookType",bookType);
- PageHelper page = new PageHelper();
- page.setCurrentPage(pageId);
- if (null == smallType) {
- int sumOfBooks = bookService.getTotalOfLTBooks(smallTypes);
- page.setTotalRows(sumOfBooks);
- List<Book> books = bookService.getLargeTypeBooks(smallTypes,page);
- model.addAttribute("currentPage",pageId);
- model.addAttribute("totalPage",page.getTotalPage());
- model.addAttribute("books",books);
- } else {
- int type_id = 0;
- for (BookType sBookType : smallTypes) {
- if (sBookType.getSmall_type_name().equals(smallType)) {
- type_id = sBookType.getId();
- break;
- }
- }
- int sumOfBooks = bookService.getTotalOfSTBooks(type_id);
- page.setTotalRows(sumOfBooks);
- List<Book> books = bookService.getSmallTypeBooks(type_id,page);
- model.addAttribute("currentPage",pageId);
- model.addAttribute("totalPage",page.getTotalPage());
- model.addAttribute("books",books);
- model.addAttribute("smallType",smallType);
- }
- return "bookList";
- }
-
- @RequestMapping(value = "/bookDetail")
- public String bookDetail(long bookID, Model model) {
- Book book;
- book = bookService.getBookDetail(bookID);
- Upload upload;
- upload = bookService.getUploadInfo(bookID);
- Date uploadedDate = upload.getUploadedDate();
- SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
- String uploadDate = dateFormat.format(uploadedDate);
- User user;
- user = userService.queryById(upload.getUploader());
- model.addAttribute("book",book);
- model.addAttribute("uploadedDate",uploadDate);
- model.addAttribute("uploader",user.getUserName());
- model.addAttribute("format",book.getBook_format().toUpperCase());
- logger.info("you are looking up the book:" + book.getBook_title());
- return "bookDetail";
- }
-
- @RequestMapping(value = "/getBookCover")
- public void getBookCover(String coverPath, HttpServletResponse response, HttpSession session) {
- String basePath = session.getServletContext().getRealPath("/") + "ebooks/" + coverPath;
-
- InputStream in = null;
- BufferedInputStream bis = null;
- OutputStream out = null;
- BufferedOutputStream bos = null;
- File file = new File(basePath);
- if (!file.exists() || file.isDirectory()) {
- return;
- }
- try {
- in = new FileInputStream(basePath);
- bis = new BufferedInputStream(in);
- byte[] data = new byte[1024];
- int bytes = 0;
- out = response.getOutputStream();
- bos = new BufferedOutputStream(out);
- while ((bytes = bis.read(data, 0, data.length)) != -1) {
- bos.write(data, 0, bytes);
- }
- bos.flush();
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- if (bos != null) {
- bos.close();
- }
- if (out != null) {
- out.close();
- }
- if (bis != null) {
- bis.close();
- }
- if (in != null) {
- in.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
-
- @RequestMapping(value = "/book_download")
- public void getBookDownload(long bookID, String filePath, HttpServletResponse response) {
- response.setContentType("text/html;charset=utf-8");
- String fileName = filePath.substring(filePath.lastIndexOf("/") + 1);
- BufferedInputStream bis = null;
- BufferedOutputStream bos = null;
- try {
- long fileLength = new File(filePath).length();
- response.setContentType("application/x-msdownload");
- response.setHeader("Content-disposition", "attachment; filename="
- + new String(fileName.getBytes("utf-8"), "ISO8859-1"));
- response.setHeader("Content-Length", String.valueOf(fileLength));
- bis =new BufferedInputStream(new FileInputStream(filePath));
- bos = new BufferedOutputStream(response.getOutputStream());
- byte[] buff = new byte[2018];
- int bytesRead;
- while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
- bos.write(buff, 0, bytesRead);
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- if (bis != null) {
- bis.close();
- }
- if (bos != null) {
- bos.close();
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- bookService.addDownloadTimes(bookID);
- logger.info("you are downloading the book, the book file is " + fileName);
- }
- }
-
- @RequestMapping(value = "/bookSearch")
- public String bookSearch(String searchBy, String searchTxt, Model model) throws ParseException {
- logger.info("you are searching book!");
- logger.info("The search context is " + searchTxt);
- List<Book> books = bookService.searchBook(searchBy, searchTxt);
- model.addAttribute("books", books);
- model.addAttribute("searchTxt",searchTxt);
- return "searchResult";
- }
-
- }

- package com.lianshuwang.controller;
-
- import com.lianshuwang.domin.User;
- import com.lianshuwang.helper.UserHelper;
- import com.lianshuwang.service.UserService;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestBody;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.springframework.web.bind.annotation.ResponseBody;
-
- import javax.servlet.http.Cookie;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import javax.servlet.http.HttpSession;
- import java.util.HashMap;
- import java.util.Map;
-
- /**
- * Created by admin on 2019/10/13.
- */
- @Controller
- public class LoginController {
-
- @Autowired
- private UserService userService;
-
- private static final Log logger = LogFactory.getLog(LoginController.class);
-
- @RequestMapping(value = "/login", method = RequestMethod.POST)
- @ResponseBody
- public Map<String, Object> index(@RequestBody User user, HttpSession session) {
- logger.info("you are logging in!");
- String userCode = user.getUserCode();
- String password = user.getUserPassword();
- UserHelper userHelper = userService.getLoginUser(userCode,password);
- Map<String, Object> resultMap = new HashMap<String, Object>();
- if (null != userHelper) {
- session.setAttribute("userHelper",userHelper);
- resultMap.put("isLogined", true);
- resultMap.put("user", userHelper);
- } else {
- resultMap.put("isLogined", false);
- }
- return resultMap;
- }
-
- @RequestMapping(value = "/logout")
- public String logout(HttpSession session,HttpServletRequest request,HttpServletResponse response) {
- logger.info("you have logged out!");
- session.invalidate();
- Cookie[] cookies = request.getCookies();
- try
- {
- for(int i=0;i<cookies.length;i++)
- {
- //System.out.println(cookies[i].getName() + ":" + cookies[i].getValue());
- Cookie cookie = new Cookie(cookies[i].getName(), null);
- cookie.setMaxAge(0);
- cookie.setPath("/");//根据你创建cookie的路径进行填写
- response.addCookie(cookie);
- }
- }catch(Exception ex)
- {
- System.out.println("清空Cookies发生异常!");
- }
- return "redirect:/";
- }
-
- }

- package com.lianshuwang.controller;
-
- import com.lianshuwang.domin.Gonggao;
- import com.lianshuwang.helper.RankingBook;
- import com.lianshuwang.service.BookService;
- import com.lianshuwang.service.GonggaoService;
- import com.lianshuwang.util.PropertyConfigurer;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
-
- import java.text.SimpleDateFormat;
- import java.util.List;
-
- @Controller
- public class MainController {
-
- private static final Log logger = LogFactory.getLog(MainController.class);
-
- @Autowired
- private BookService bookService;
- @Autowired
- GonggaoService gonggaoService;
- @RequestMapping(value = "/index")
- public String index(Model model) {
- logger.info("Welcome to gatheringbook.cn!");
- String name = (String)PropertyConfigurer.getProperty("book_path");
- System.out.println("hello, " + name);
- int sumOfBooks = bookService.queryNumberOfBooks();
- model.addAttribute("sumOfBooks", sumOfBooks);
- List<Integer> everyTypeBooks;
- everyTypeBooks = bookService.queryNumberOfSomeTypeBooks();
- model.addAttribute("sumOfTypeBooks",everyTypeBooks);
- String maxUploadDate = bookService.getMaxUploadDate();
- model.addAttribute("maxUploadDate", maxUploadDate);
- List<RankingBook> rankingBooks;
- rankingBooks = bookService.queryByUploadedDate();
- model.addAttribute("rankingBooks",rankingBooks);
- List<RankingBook> rankingBooks1;
- rankingBooks1 = bookService.queryByDownloadTimes();
- model.addAttribute("rankingBooks1",rankingBooks1);
-
- List<Gonggao> gonggaos;
- gonggaos = gonggaoService.getLists();
- for(Gonggao gonggao:gonggaos) {
- if(gonggao.getContent()!=null&&gonggao.getContent().length()>10) {
- gonggao.setContent(gonggao.getContent().substring(0,10)+"...");
- SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd"); //格式化当前系统日期
- String dateTime = dateFm.format(gonggao.getShijian());
- gonggao.setTime(dateTime);
- }
- }
- model.addAttribute("gonggaos",gonggaos);
- return "main";
- }
- }

- package com.lianshuwang.controller;
-
- import com.lianshuwang.domin.User;
- import com.lianshuwang.helper.UploadHelper;
- import com.lianshuwang.helper.UserHelper;
- import com.lianshuwang.service.UserService;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.Model;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.ResponseBody;
-
- import javax.servlet.http.HttpSession;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
- /**
- * Created by admin on 2019/10/15.
- */
- @Controller
- public class UserController {
- @Autowired
- private UserService userService;
-
- private static final Log logger = LogFactory.getLog(UserController.class);
-
- @RequestMapping(value = "/person")
- public String getPerosonInfo(Model model, HttpSession session) {
- UserHelper userHelper = (UserHelper) session.getAttribute("userHelper");
- if (null == userHelper) {
- return "redirect:index";
- }
- model.addAttribute("user", userHelper);
- logger.info("The user(" + userHelper.getUserName() + ") is coming to person information page!");
- return "personInfo";
- }
-
- @RequestMapping(value = "/infoModify")
- public String infoModify(String name, String email, String avatarImg, HttpSession session) {
- logger.info("The user is modifying his information!");
- UserHelper userHelper = (UserHelper) session.getAttribute("userHelper");
- User user = new User();
- user.setId(userHelper.getId());
- user.setUserName(name);
- user.setEmail(email);
- int avatarId = userService.getAvatarId(avatarImg);
- user.setAvatarNum(avatarId);
- userService.updateUserInfo(user);
- User user1;
- user1 = userService.queryById(userHelper.getId());
- UserHelper newUserHelper;
- newUserHelper = userService.getLoginUser(user1.getUserCode(),user1.getUserPassword());
- session.setAttribute("userHelper",newUserHelper);
- return "redirect:/person";
- }
-
- @RequestMapping(value = "/pwdModify")
- public String pwdModify(String newPwd, HttpSession session) {
- logger.info("The user is modifying his password!");
- UserHelper userHelper = (UserHelper) session.getAttribute("userHelper");
- userService.updateUserPassword(userHelper.getId(), newPwd);
- session.invalidate();
- return "redirect:/index";
- }
-
- @RequestMapping(value = "/getUploadHistory")
- @ResponseBody
- public Map<String,Object> getUploadHistory(HttpSession session) {
- Map<String,Object> resultMap = new HashMap<String,Object>();
- UserHelper userHelper = (UserHelper) session.getAttribute("userHelper");
- List<UploadHelper> uploadHelperList = userService.getUploadedBook(userHelper.getId());
- resultMap.put("uploadList", uploadHelperList);
- logger.info("you are looking up the uploaded books");
- return resultMap;
- }
-
- @RequestMapping(value = "/feedback")
- @ResponseBody
- public void feedback(String contact, String suggestion,HttpSession session) {
- UserHelper userHelper = (UserHelper) session.getAttribute("userHelper");
- userService.addFeedback(userHelper.getId(),contact,suggestion);
- logger.info("you are posting the suggestion!");
- logger.info("contact:" + contact);
- logger.info("suggestion:" + suggestion);
- }
- }

BackStageService
- package com.lianshuwang.service;
-
- import com.lianshuwang.dao.BookDao;
- import com.lianshuwang.dao.FeedbackDao;
- import com.lianshuwang.dao.UploadDao;
- import com.lianshuwang.dao.UserDao;
- import com.lianshuwang.domin.Book;
- import com.lianshuwang.domin.Feedback;
- import com.lianshuwang.domin.Upload;
- import com.lianshuwang.domin.User;
- import com.lianshuwang.helper.doBookHelper;
- import com.lianshuwang.util.PropertyConfigurer;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
-
- import java.io.File;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
- import javax.servlet.http.HttpSession;
-
- @Service
- public class BackStageService {
- @Autowired
- private UploadDao uploadDao;
- @Autowired
- private BookDao bookDao;
- @Autowired
- private UserDao userDao;
- @Autowired
- private FeedbackDao feedbackDao;
-
- public boolean getLogin(String username, String password, HttpSession session) {
- User user = userDao.queryByLogin(username,password);
- if(user == null) {
- return false;
- }else if(user.getRole() == 0){
- return false;
- }
- else if(user.getRole() == 1||user.getRole() == 2){
- session.setAttribute("role", user.getRole());
- session.setAttribute("id", user.getId());
- return true;
- }else {
- return false;
- }
-
- }
-
- public List<doBookHelper> iteratorUploadList(List<Upload> uploadList) {
- List<doBookHelper> doBookHelperList = new ArrayList<doBookHelper>();
- Book book;
- for (Upload upload : uploadList) {
- doBookHelper bookHelper = new doBookHelper();
- book = bookDao.queryById(upload.getUploadedBook());
- bookHelper.setId(book.getId());
- bookHelper.setTitle(book.getBook_title());
- bookHelper.setAuthor(book.getBook_author());
- bookHelper.setUploader(upload.getUploader());
- bookHelper.setUploadedDate(upload.getUploadedDate());
- doBookHelperList.add(bookHelper);
- }
- return doBookHelperList;
- }
-
- public List<doBookHelper> getUploadBooks() {
- List<doBookHelper> doBookHelperList;
- List<Upload> uploadList = uploadDao.queryByUploadedDate();
- doBookHelperList = iteratorUploadList(uploadList);
- return doBookHelperList;
- }
-
- public List<doBookHelper> getBooksByDays(int days) {
- List<doBookHelper> doBookHelperList;
- List<Upload> uploadList;
- if (days == 30) {
- uploadList = uploadDao.searchByThirtyDays();
- } else if (days == 7) {
- uploadList = uploadDao.searchBySevenDays();
- } else {
- uploadList = uploadDao.searchByToday();
- }
- doBookHelperList = iteratorUploadList(uploadList);
- return doBookHelperList;
- }
-
- public List<doBookHelper> getBooksByTitle(String title) {
- List<doBookHelper> doBookHelperList = new ArrayList<doBookHelper>();
- List<Book> bookList = bookDao.searchBookByTitle(title);
- for (Book book: bookList) {
- doBookHelper bookHelper = new doBookHelper();
- bookHelper.setId(book.getId());
- bookHelper.setTitle(book.getBook_title());
- bookHelper.setAuthor(book.getBook_author());
- Upload upload = uploadDao.queryByBookId(book.getId());
- bookHelper.setUploader(upload.getUploader());
- bookHelper.setUploadedDate(upload.getUploadedDate());
- doBookHelperList.add(bookHelper);
- }
- return doBookHelperList;
- }
-
- public List<doBookHelper> getBooksByUserId(long userId) {
- List<doBookHelper> doBookHelperList = new ArrayList<doBookHelper>();
- List<Upload> uploadList = uploadDao.queryByUserId(userId);
- Book book;
- for (Upload upload : uploadList) {
- book = bookDao.queryById(upload.getUploadedBook());
- doBookHelper bookHelper = new doBookHelper();
- bookHelper.setId(book.getId());
- bookHelper.setTitle(book.getBook_title());
- bookHelper.setAuthor(book.getBook_author());
- bookHelper.setUploader(upload.getUploader());
- bookHelper.setUploadedDate(upload.getUploadedDate());
- doBookHelperList.add(bookHelper);
- }
- return doBookHelperList;
- }
-
- public int deleteBook(long bookId) {
- Book book;
- book = bookDao.queryById(bookId);
- String bookFilePath = book.getBook_file();
- File file = new File(bookFilePath);
- if (file.exists()) {
- file.delete();
- }
- // else {
- // return 0;
- // }
- String bookCoverPath = book.getBook_cover();
- File cover = new File(bookCoverPath);
- if (cover.exists()) {
- cover.delete();
- }
- // else {
- // return 0;
- // }
- int count = bookDao.deleteBook(bookId);
- int count2 = uploadDao.deleteUploadRow(bookId);
- if (count == 0 || count2 == 0) {
- return 0;
- }
- return 1;
- }
-
- public Map<String,Object> getUserByContribution() {
- Map<String,Object> resultMap = new HashMap<String,Object>();
- List<User> userList = userDao.queryUserByContribution();
- resultMap.put("userList",userList);
- resultMap.put("totalUser",userDao.queryUserNumber());
- resultMap.put("weekUser",userDao.queryUserNumberByWeek());
- resultMap.put("monthUser",userDao.queryUserNumberByMonth());
- return resultMap;
- }
-
- public Map<String,Object> getAdminByRole() {
- Map<String,Object> resultMap = new HashMap<String,Object>();
- List<User> userList = userDao.queryByRole(1);
- if(userList != null) {
- userList.addAll(userDao.queryByRole(2));
- }else {
- userList = userDao.queryByRole(2);
- }
- resultMap.put("userList",userList);
- resultMap.put("totalUser",userDao.queryAdminNumber());
- resultMap.put("weekUser",userDao.queryAdminNumberByWeek());
- resultMap.put("monthUser",userDao.queryAdminNumberByMonth());
- return resultMap;
- }
-
- public Map<String,Object> getUserByRole() {
- Map<String,Object> resultMap = new HashMap<String,Object>();
- List<User> userList = userDao.queryByRole(0);
- resultMap.put("userList",userList);
- resultMap.put("totalUser",userDao.queryUserNumber());
- resultMap.put("weekUser",userDao.queryUserNumberByWeek());
- resultMap.put("monthUser",userDao.queryUserNumberByMonth());
- return resultMap;
- }
-
- public int deleteUser(long userId) {
- int count = userDao.deleteUser(userId);
- uploadDao.deleteUploadRowByUser(userId);
- if (count == 0) {
- return 0;
- }
- return 1;
- }
-
- public List<User> getUserBySearch(String searchTxt) {
- List<User> userList = new ArrayList<User>();
- if (searchTxt.length() < 5 ) {
- userList = userDao.queryUserByUserName(searchTxt);
- } else if (isNumeric(searchTxt)) {
- long userId = Long.parseLong(searchTxt);
- User user1 = userDao.queryById(userId);
- userList.add(user1);
- List<User> userList1 = userDao.queryUserByUserName(searchTxt);
- userList.addAll(userList1);
- }
- return userList;
- }
-
- public boolean isNumeric(String str) {
- for (int i = str.length();--i>=0;){
- if (!Character.isDigit(str.charAt(i))){
- return false;
- }
- }
- return true;
- }
-
- public List<Feedback> getFeedback() {
- List<Feedback> feedbackList = feedbackDao.queryAllNotRead();
- return feedbackList;
- }
-
- public int setOneFeedbackRead(int id) {
- int count = feedbackDao.setOneRead(id);
- return count;
- }
-
- public int setAllFeedbackRead() {
- return feedbackDao.setAllRead();
- }
- }

如果也想学习本系统,下面领取。关注并回复:129ssm
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。