——————————DescriptionStart——————————
运行环境
Java≥8、MySQL≥5.7、Tomcat≥8
开发工具
eclipse/idea/myeclipse/sts等均可配置运行
适用
课程设计,大作业,毕业设计,项目练习,学习演示等
功能说明






基于javaweb的SSM+Maven电子书网络图书在线小说阅读管理系统(java+ssm+jsp+javascript+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+CSS+JavaScript
使用说明
- 使用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 登录
——————————CodeStart——————————
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| }
@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")
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| bookTypes = bookService.getTypes(); model.addAttribute("bookTypes",bookTypes); List<BookType> bookLargeTypes; bookLargeTypes = bookService.getLargerTypes(); model.addAttribute("bookLargeTypes",bookLargeTypes); return "backstage/bookManage"; }
@InitBinder protected void initBinder(HttpServletRequest request, ServletRequestDataBinder binder) throws Exception { DateFormat df = new SimpleDateFormat("YYYY-MM-DD hh:mm:ss"); CustomDateEditor editor = new CustomDateEditor(df, true); binder.registerCustomEditor(Date.class, editor); }
@RequestMapping(value = "/editBookType",method=RequestMethod.POST) public String editBookType(Model model,HttpSession session,BookType bookType) { try { bookType.setSmall_type_name(new String(bookType.getSmall_type_name().getBytes("UTF-8"), "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } bookTypeDao.updateBookType(bookType); List<doBookHelper> bookList; bookList = backStageService.getUploadBooks(); model.addAttribute("bookList",bookList); 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);
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| resultMap.put("isRegistered", count); return resultMap; }
@RequestMapping(value = "register",method = RequestMethod.POST) @ResponseBody public Map<String,Object> register(@RequestBody User user) { Map<String, Object> resultMap = new HashMap<String, Object>(); user.setRole(0); userService.addUser(user); logger.info("you have registered!"); return resultMap; } } package com.lianshuwang.controller;
public class TestInterceptor implements HandlerInterceptor{
@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); return true; }
@Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); }
@Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| package com.lianshuwang.controller;
@Controller public class RegisterController {
@Autowired private UserService userService;
private static final Log logger = LogFactory.getLog(RegisterController.class);
@RequestMapping(value = "userCodeCheck") @ResponseBody public Map<String,Integer> checkUserCode(String userCode) { Map<String, Integer> resultMap = new HashMap<String, Integer>(); int count = userService.checkUserCode(userCode); resultMap.put("isRegistered", count); return resultMap; }
@RequestMapping(value = "register",method = RequestMethod.POST) @ResponseBody public Map<String,Object> register(@RequestBody User user) { Map<String, Object> resultMap = new HashMap<String, Object>(); user.setRole(0); userService.addUser(user); logger.info("you have registered!");
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| throws Exception { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); return true; }
@Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); }
@Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); }
} package com.lianshuwang.controller;
@Controller public class GonggaoController { @Autowired GonggaoService gonggaoService;
@RequestMapping(value = "/gonggaoDetail") String gonggaoDetail(int id,Model model,HttpSession session) { Gonggao gonggao = gonggaoService.getGonggao(id); SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd");
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| */ @Controller public class UploadController {
@Autowired private BookService bookService; @Autowired private UserService userService;
private static final Log logger = LogFactory.getLog(UploadController.class);
@RequestMapping(value = "getUploadPage") public String getUploadPage(HttpSession session) { UserHelper userHelper = (UserHelper) session.getAttribute("userHelper"); if (null == userHelper) { return "redirect:index"; } logger.info("you are visiting uploading page!"); return "upload"; }
@RequestMapping(value = "doUpload", method = RequestMethod.POST) public String doUpload(@ModelAttribute BookHelper bookHelper, Model model, HttpSession session) throws IllegalStateException, IOException, ParseException { logger.info("you are uploading a book! "); logger.info("This book is " + bookHelper.getTitle() + "!"); String fileName = bookHelper.getBookFile().getOriginalFilename(); String bookCover = bookHelper.getBookCover().getOriginalFilename(); MultipartFile bookFile = bookHelper.getBookFile(); MultipartFile coverFile = bookHelper.getBookCover(); if (bookFile.isEmpty()) { logger.info("Uploading failed! The book you are uploading is empty!"); return "upload_failed"; } else if (coverFile.isEmpty()) { logger.info("Uploading failed! The book cover you are uploading is empty!"); return "upload_failed"; } else { String typeId = "" + bookHelper.getLargeType() + bookHelper.getSmallType(); int type_id = Integer.parseInt(typeId); String format = fileName.substring(fileName.lastIndexOf('.') + 1); List<String> typeNames; typeNames = bookService.getTypeNames(type_id); String filePath_pre = (String) PropertyConfigurer.getProperty("book_path"); String file_dir_pre = Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(0, Thread.currentThread().getContextClassLoader().getResource("").getPath().length() - 16) + filePath_pre;
|
——————————PayStart——————————
项目链接:
https://javayms.github.io?id=441122512008200nb
https://javayms.pages.dev?id=441122512008200nb