当前位置: 首页 > 编程日记 > 正文

Java项目:在线小说阅读系统(读者+作者+管理员)(java+SSM+jsp+mysql+maven)

源码获取:博客首页 "资源" 里下载!

一、项目简述

功能包括: 1:用户及主要操作功能 游客可以浏览网站的主页,登陆注册,小说湿度,下单购 买,订单查询,个人信息查询,留言评论。 2:作者模块 作者登录注册,小说发表,小说维护等等。 3:作者模块 管理员登录,读者管理,小说管理,评论管理,充值订单 管理,订阅订单管理,折扣活动管理等等

二、项目运行

环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持)

项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。

登录控制层:

/*** @author:yy*/
@Controller
public class LoginController {@Autowiredprivate AdminService adminService;@Autowiredprivate BookService bookService;@Autowiredprivate MessageService messageService;/*** 登陆页面* @return*/@RequestMapping("/loginPage")public String loginPage(){return "login";}@RequestMapping(value = "/novelPage",method = RequestMethod.GET)public String novelPage(Integer bookId, Model model){Book book = bookService.findById(bookId);List<Message> messageList = messageService.findByBookId(bookId);model.addAttribute("book",book);model.addAttribute("messageList",messageList);return "novel";}@RequestMapping(value = "/shiduPage",method = RequestMethod.GET)public String shiduPage(Integer bookId,Integer page,Model model){Book book = bookService.findById(bookId);Chapter chapter = book.getChapterList().get(page-1);int totalPage= book.getChapterList().size();List<Chapter> chapterList = new ArrayList<>();chapterList.add(chapter);book.setChapterList(chapterList);model.addAttribute("book",book);model.addAttribute("page",page);model.addAttribute("totalPage",totalPage);return "shidu";}/*** 登陆操作* @return*/@RequestMapping("/login")@ResponseBody// 该方法返回的是json字符串public ResultData login(Admin admin,HttpServletRequest request){// 登陆操作ResultData resultData = adminService.login(admin);// 判断登陆成功,将用户数据保存到 session中// 如何获取session对象?if(resultData.getCode() == 200){HttpSession session = request.getSession();session.setAttribute("admin",resultData.getData());}return resultData;}@RequestMapping("/rloginPage")public String rloginPage(){return "front/register";}/*** 退出登陆的方法* @return*/@RequestMapping("/logout")public String logout(HttpServletRequest request){// 只需要去将保存到session的数据干掉即可request.getSession().setAttribute("admin",null);// 重定向和转发的区别?// 重定向: 1. 客户端行为 2. 两次请求 3. 不能携带前一次请求的数据// 转发: 1. 服务器端行为 2. 一次请求 3. 能够携带前一次请求的数据return "redirect:/loginPage";}
}

历史控制层:

@Controller
public class HistoryController {@Autowiredprivate HistoryService historyService;//列表@RequestMapping("/history/list")public String list(Model model,@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "3") Integer pageSize) {PageInfo<History> pageInfo=historyService.list(page,pageSize);model.addAttribute("list",pageInfo.getList());model.addAttribute("pageInfo",pageInfo);return "history/history-list";}//添加@RequestMapping("/history/addPage")public String addPage(){return "history/history-add";}//    添加@RequestMapping("/history/add")@ResponseBodypublic ResultData add(History history){return historyService.add(history);}//    search@RequestMapping("/history/search")public String searchList(Model model,@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "3") Integer pageSize,String keyword) {PageInfo<History> pageInfo=historyService.searchList(page,pageSize,keyword);model.addAttribute("list",pageInfo.getList());model.addAttribute("pageInfo",pageInfo);return  "history/history-list";}//      批量删除@RequestMapping("/history/deleteAll")@ResponseBodypublic ResultData deleteAll(@RequestParam(name="ids") String ids){//将ids转为数组String[] idArr = ids.split(",");//将字符串数组转为int数组return historyService.batchDelete(idArr);}}

订单控制层:

@Controller
public class BookOrderController {@Autowiredprivate BookOrderService bookOrderService;@Autowiredprivate BookService bookService;@RequestMapping("/bookorder/bookorderlist")public String bookorderlist(Model model,@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "3") Integer pageSize) {PageInfo<BookOrder> pageInfo = bookOrderService.list(page, pageSize);//将数据转发到页面model.addAttribute("list", pageInfo.getList());model.addAttribute("pageInfo", pageInfo);return "bookorder/bookorder-list";}@RequestMapping("/bookorder/orderSearch")public String searchList(Model model,@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "3") Integer pageSize,String keyword) {PageInfo<BookOrder> pageInfo = bookOrderService.searchList(page,pageSize,keyword);//将数据转发到页面model.addAttribute("list", pageInfo.getList());model.addAttribute("pageInfo", pageInfo);return "bookorder/bookorder-list";}@RequestMapping("/bookorder/bookorderadd")public String bookorderadd() {return "bookorder/bookorder-add";}@RequestMapping(value = "/bookorder/add",method = RequestMethod.POST)@ResponseBodypublic ResultData add(BookOrder bookOrder, HttpSession session) {Reader reader = (Reader)session.getAttribute("reader");if(reader==null){return  new ResultData(2001,"用户未登陆",null);}int readerId = reader.getReaderId();bookOrder.setUserId(1);bookOrder.setDiscountId(1);bookOrder.setOrderDate(new Timestamp(System.currentTimeMillis()));bookOrder.setOrderStatus(1);bookOrder.setPayStatus(1);ResultData resultData = bookOrderService.add(bookOrder);return resultData;}@RequestMapping("/bookorder/editStatus")@ResponseBodypublic ResultData editStatus(Integer id, Integer status) {return bookOrderService.updateStatus(id,status);}@RequestMapping("/bookorder/deleteAll")@ResponseBodypublic ResultData deleteAll(@RequestParam(name = "ids") String ids){// 将ids转换成数组String[] idArr = ids.split(",");return bookOrderService.batchDelete(idArr);}@RequestMapping("/bookorder/delete")@ResponseBodypublic  ResultData delete(Integer orderid,Integer orderStatus){return  bookOrderService.delete(orderid,orderStatus);}@RequestMapping("/bookOrder/toOrder")public  String delete(Integer bookId,Model model){Book book = bookService.findById(bookId);model.addAttribute("book",book);return  "front/order";}@RequestMapping("/bookOrder/toOrderCenter")public  String toOrderCenter(HttpSession session,Model model){/*Reader reader = (Reader)session.getAttribute("reader");if(reader==null){return  new ResultData(2001,"用户未登陆",null);}int readerId = reader.getReaderId();*/int readerId = 1;List<BookOrder> bookOrderList = bookOrderService.getAll(readerId);model.addAttribute("bookOrderList",bookOrderList);return  "front/orderCenter";}}

读者控制层:

@Controller
public class ReaderController {@Autowiredprivate ReaderService readerService;@RequestMapping("/duzhe")public String duzhe(){return "loginreader";}@RequestMapping("/book/getByType?bookType=1")public String xiangqing(){return "front/personal";}/*** 登陆操作* @return*/@RequestMapping("/loginreader")@ResponseBodypublic ResultData login1(Reader reader,HttpServletRequest request){// 登陆操作ResultData resultData = readerService.login1(reader);// 判断登陆成功,将用户数据保存到 session中// 如何获取session对象?if(resultData.getCode() == 200){HttpSession session = request.getSession();session.setAttribute("reader",resultData.getData());}return resultData;}@RequestMapping("/loginOut")@ResponseBodypublic String loginOut(HttpServletRequest request){// 只需要去将保存到session的数据干掉即可request.getSession().setAttribute("reader",null);// 重定向和转发的区别?// 重定向: 1. 客户端行为 2. 两次请求 3. 不能携带前一次请求的数据// 转发: 1. 服务器端行为 2. 一次请求 3. 能够携带前一次请求的数据return "redirect:/loginPage";}//    @RequestMapping("/login")
//    @ResponseBody// 该方法返回的是json字符串
//    public ResultData login(Admin admin,HttpServletRequest request){
//        // 登陆操作
//        ResultData resultData = adminService.login(admin);
//        // 判断登陆成功,将用户数据保存到 session中
//        // 如何获取session对象?
//        if(resultData.getCode() == 200){
//            HttpSession session = request.getSession();
//            session.setAttribute("admin",resultData.getData());
//        }
//
//        return resultData;
//    }
////读者列表@RequestMapping("/reader/list")public String list(Model model,@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "5") Integer pageSize){PageInfo<Reader> pageInfo = readerService.list(page,pageSize);model.addAttribute("list",pageInfo.getList());model.addAttribute("pageInfo",pageInfo);return "reader/reader-list";}//搜索读者显示列表@RequestMapping("/reader/search")public String searchList(Model model,@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "5") Integer pageSize,String keyword){PageInfo<Reader> pageInfo = readerService.searchList(page, pageSize, keyword);model.addAttribute("list",pageInfo.getList());model.addAttribute("pageInfo",pageInfo);return "reader/reader-list";}//读者删除列表@RequestMapping("/reader/deleteList")public String deleteList(Model model,@RequestParam(defaultValue = "1") Integer page,@RequestParam(defaultValue = "5") Integer pageSize){PageInfo<Reader> pageInfo = readerService.DeleteList(page,pageSize);model.addAttribute("list",pageInfo.getList());model.addAttribute("pageInfo",pageInfo);return "reader/reader-del";}//添加读者@RequestMapping("/reader/addPage")public String addPage(){return "front/register";}//    添加读者的方法@RequestMapping("/reader/add")@ResponseBodypublic ResultData add(Reader reader){return readerService.add(reader);}/*** 编辑读者状态信息* @param readerId : 当前读者Id* @param readerStatus: 读者当前状态* @return*/@RequestMapping("/reader/editStatus")@ResponseBodypublic ResultData editStatus(Integer readerId, Integer readerStatus){return readerService.updateStatus(readerId, readerStatus);}/*** 编辑读者* @param* @param* @return*/@RequestMapping("/reader/editPage")public String editPage(Model model, Integer readerId){Reader dbreadder = readerService.findById(readerId);model.addAttribute("reader",dbreadder);return "reader/reader-edit";}/*** 更新读者基本信息的方法* @param reader* @return*/@RequestMapping("/reader/edit")@ResponseBodypublic ResultData edit(Reader reader){return readerService.edit(reader);}/*** 批量删除* @param ids* @return*/@RequestMapping("/reader/deleteAll")@ResponseBodypublic ResultData deleteAll(@RequestParam(name = "ids") String ids){
//        将ids转换成数组String[] idArr=ids.split(",");return readerService.batchDelete(idArr);};/*** 批量恢复* @param ids* @return*/@RequestMapping("/reader/huifuAll")@ResponseBodypublic ResultData huifuDelete(@RequestParam(name = "ids") String ids){
//        将ids转换成数组String[] idArr=ids.split(",");return readerService.huifuDelete(idArr);};@RequestMapping("/reader/delete")@ResponseBodypublic ResultData deleteReader(Integer readerId, Integer readerStatus){return readerService.deletereader(readerId,readerStatus);}@RequestMapping("/reader/toCenter")public String toCenter(HttpSession session, Model model){
//         Reader reader = (Reader)session.getAttribute("reader");
//        if(reader==null){
//            return  "login";
//        }Reader reader = readerService.findById(1 );model.addAttribute("reader",reader);return "front/center";}}

 源码获取:博客首页 "资源" 里下载!

相关文章:

游戏中的脚本语言

本文最初发表于《游戏创造》(http://www.chinagcn.com)2007年8月刊。版权所有&#xff0c;侵权必究。如蒙转载&#xff0c;必须保留本声明&#xff0c;和作者署名&#xff1b;不得用于商业用途&#xff0c;必须保证全文完整。网络版首次发表于恋花蝶的博客(http://blog.csdn.ne…

mvn项目中的pom文件提示Error parsing lifecycle processing instructions解决

清空.m2/repository下的所有依赖文件&#xff0c;重新下载即可解决该问题。 如果本地用户下没有.m2/repository 目录&#xff0c;找到如下mvn 指定的repository&#xff0c;进去之后清空所有文件。 转载于:https://www.cnblogs.com/Hackerman/p/10736498.html

blktrace 工具集使用 及其实现原理

文章目录工具使用原理分析内核I/O栈blktrace 代码做的事情内核调用 ioctl 做的事情BLKTRACESETUPBLKTRACESTOPBLKTRACETEARDOWN内核 调用blk_register_tracepoints 之后做的事情参考最近使用blktrace 工具集来分析I/O 在磁盘上的一些瓶颈问题&#xff0c;特此做一个简单的记录。…

Java项目:教材管理系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能包括&#xff1a; 管理员可以增删改查教材、教材商、入库教材、用户(用 户包括学生和教师)可以对教材商、教材进行。xcel的导入 导出操作。教U阿以领取入库的教材&#xff0c;可以退还教材…

mysql更改数据文件目录及my.ini位置| MySQL命令详解

需求&#xff1a;更改mysql数据数据文件目录及my.ini位置。 步骤&#xff1a; 1、查找my.ini位置&#xff0c;可通过windows服务所对应mysql启动项&#xff0c;查看其对应属性->可执行文件路径&#xff0c;获取my.ini路径。 "D:\MySQL\MySQL Server 5.5\bin\mysqld&quo…

私有云管理-Windows Azure Pack

今天是2014年的第一天&#xff0c;今年的第一篇博客关于私有云&#xff0c;而我在2014年的主要目标也是针对私有云。随着Windows Azure在中国的落地&#xff0c;大家逐渐的熟悉了在Windows Azure中的云体验。而微软针对私有云、混合云推出了一个管理自助门户&#xff0c;Window…

面向对象(类的概念,属性,方法,属性的声明,面向对象编程思维

1 面向对象 1.1 你是如何认识新事物的&#xff1f; 从过往的事物中总结事物的特点(特征)&#xff0c;并比对新事物&#xff0c;把新事物进行归类。 1.2 类(Class)的概念(A) 类是对一组具有相同特征和行为的对象的抽象描述。 理解: [1] 类包含了两个要素:特性和行为 > 同一类…

cannot find main module 解决办法

做6.824 实验的过程中想要跑测试&#xff0c;发现go test -run 2A时 出现cannot find main module问题&#xff0c;测试跑不起来。 原因 这个原因是从GO1.11 版本开始引入了go.mod文件来对项目中的go源码的编译相关的内容进行管理&#xff0c;经常使用GO的同学可能深受go get…

Java项目:网上选课系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能&#xff1a; 系统分为三个角色。最高权限管理员&#xff0c;学生&#xff0c;教师&#xff0c;包括 学生管理&#xff0c;教师管理&#xff0c;课程管理&#xff0c;选课&#xff0c;退课…

C#中类的继承 override virtual new的作用以及代码分析

继承中override virtual new的作用 virtual 父类中需要注明允许重写的方法&#xff1b; override 子类中必须显示声明该方法是重写的父类中的方法&#xff1b; new 子类中忽略父类的已存在的方法&#xff0c;“重写该方法“&#xff1b; C#中不支…

spring手动代码控制事务

为什么80%的码农都做不了架构师&#xff1f;>>> DataSourceTransactionManager tran new DataSourceTransactionManager(vjdbcTemplate.getDataSource());DefaultTransactionDefinition def new DefaultTransactionDefinition();//事务定义类def.setPropagationB…

tar命令-压缩,解压缩文件

tar&#xff1a; -c: 建立压缩档案 -x&#xff1a;解压 -t&#xff1a;查看内容 -r&#xff1a;向压缩归档文件末尾追加文件 -u&#xff1a;更新原压缩包中的文件 上面五个参数是独立的&#xff0c;压缩解压都要用到其中一个&#xff0c;可以和下面的命令连用但只能用其中一个。…

MIT 6.824 Lab2A (raft) -- Leader Election

文章目录实验要求Leader Election流程 及详细实现介绍基本角色关键超时变量关键的两个RPC实现RequestVote RPCAppendEntries RPCGo并发编程实现leader election调度本节记录的是完成MIT6.824 raft lab的leader Election部分实验。代码: https://github.com/BaronStack/MIT-6.82…

Java项目:在线考试系统(java+springboot+vue+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 本系统主要实现的功能有&#xff1a; 学生以及老师的注册登录&#xff0c;在线考试&#xff0c;错题查询&#xff0c;学生管理&#xff0c;问题管理&#xff0c;错题管理&#xff0c;错题查询…

写给自己的web开发资源

web开发给我的感觉就是乱七八糟&#xff0c;而且要学习感觉总是会有东西要学习&#xff0c;很乱很杂我也没空搞&#xff0c;&#xff08;其实学习这个的方法就是去用它&#xff0c;什么你直接用&#xff1f;学过js么学过jquery么&#xff1f;哈哈&#xff0c;我没有系统的看完过…

虚拟机VMWare“提示:软件虚拟化与此平台上的长模式不兼容”的解决方法

虚拟机VMWare“提示&#xff1a;软件虚拟化与此平台上的长模式不兼容”不少童鞋反映&#xff0c;在使用Windows7 64位操作系统时&#xff0c;无法运行VMWare或MS Virtual server等软件虚拟操作系统。提示为“提示&#xff1a;软件虚拟化与此平台上的长模式不兼容. 禁用长模式. …

如何在Vue项目中使用vw实现移动端适配(转)

有关于移动端的适配布局一直以来都是众说纷纭&#xff0c;对应的解决方案也是有很多种。在《使用Flexible实现手淘H5页面的终端适配》提出了Flexible的布局方案&#xff0c;随着viewport单位越来越受到众多浏览器的支持&#xff0c;因此在《再聊移动端页面的适配》一文中提出了…

Jsoncpp 在C++开发中的一些使用记录

jsoncpp 是一个C 语言实现的json库&#xff0c;非常方便得支持C得各种数据类型到json 以及 json到各种数据类型的转化。 一个json 类型的数据如下&#xff1a; {"code" : 10.01,"files" : "","msg" : "","uploadid&q…

Java项目:图书管理系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述 功能包括(管理员和学生角色)&#xff1a; 管理员和学生登录&#xff0c;图书管理&#xff0c;图书添加删除修改&#xff0c;图书 借阅&#xff0c;图书归还&#xff0c;图书查看&#xff0c;学…

使用 Flash Builder 的 Apple iOS 开发过程

使用 Flash Builder 的 Apple iOS 开发过程 iOS 开发和部署过程概述 构建、调试或部署 iOS 应用程序前的准备工作 在测试、调试或安装 iOS 应用程序时选择的文件 将应用程序部署到 Apple App Store 时选择的文件 在使用 Flash Builder 开发 iOS 应用程序之前&#xff0c;必须…

grep之字符串搜索算法Boyer-Moore由浅入深(比KMP快3-5倍)

2019独角兽企业重金招聘Python工程师标准>>> 1. 简单介绍 在用于查找子字符串的算法当中&#xff0c;BM&#xff08;Boyer-Moore&#xff09;算法是目前被认为最高效的字符串搜索算法&#xff0c;它由Bob Boyer和J Strother Moore设计于1977年。 一般情况下&#xf…

多线程threading

threading用于提供线程相关的操作&#xff0c;线程是应用程序中工作的最小单元。python当前版本的多线程库没有实现优先级、线程组&#xff0c;线程也不能被停止、暂停、恢复、中断。 1. threading模块提供的类&#xff1a; Thread, Lock, Rlock, Condition, [Bounded]Sem…

一个简单的程序来使用WiredTiger 存储引擎

前言 WiredTiger 自 mongodb3.0 集成进来之后为mongodb拉回了大量的口碑&#xff0c;从而在mongodb-3.2 版本直接代替了in-memory存储引擎&#xff0c;作为了mongodb的默认存储引擎。其 通过支持Append-only btree lsm-tree 以及 针对磁盘/内存数据结构上的多核和无锁优化&am…

Java项目:网上商城系统(java+SSM+jsp+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 一、项目简述功能 javaweb 网上商城系统&#xff0c;前台&#xff0b;后台管理&#xff0c;用户注册&#xff0c;登录&#xff0c;上哦展示&#xff0c;分组展示&#xff0c;搜索&#xff0c;收货地址管理&…

Linux 启动详解之init

1.init初探 init是Linux系统操作中不可缺少的程序之一。init进程&#xff0c;它是一个由内核启动的用户级进程&#xff0c;然后由它来启动后面的任务&#xff0c;包括多用户环境&#xff0c;网络等。 内核会在过去曾使用过init的几个地方查找它&#xff0c;它的正确位置&#x…

mysql 相关命令

mysqladmin versionmysqladmin statusmysqlshow -u帐号 -p密码 mysqlshow -u帐号 -p密码 库名mysql -u帐号 -p密码 -e SELECT Host,Db,User From db mysqlmysqldump --quick mysql | gzip > /root/mysql.gzmysqladmin create dbtestgunzip < /root/mysql.gz | mysql…

maven 添加数据库驱动

1.电脑上需要安装 apache maven2.下载oracle的jar包 例如我下载的是ojdbc7-12.jar3.cmd执行命令 mvn install:install-file -DgroupIdcom.oracle -DartifactIdojdbc7 -Dversion12 -Dpackagingjar -Dfiled:\jar\ojdbc7-12.jar-Dfile jar包所存放的位置4.pom文件添加&#xff1…

Rocksdb 的 BlobDB key-value 分离存储插件

前言 还是回到传统的 LSM-tree 中&#xff0c;我们key-value 写入时以append形态存放到一个data-block中&#xff0c;多个data-blockmetablock 之类的数据组织成一个sst。当我们读数据以及compaction的时候读到key 之后则很方便得读取到对应的value&#xff0c;一次I/O能够将k…

Java项目:(前端vue后台java微服务)在线考试系统(java+vue+springboot+mysql+maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 考试流程&#xff1a; 用户前台注册成为学生 管理员后台添加老师&#xff0c;系统将该用户角色上升为老师 老师登录&#xff0c;添加考试,添加题目&#xff0c;发布考试 考生登录前台参加考试&#xff0c…

C++实现stack【栈】

要求&#xff1a; //****file: stack.h/*对stack进行初始化检查stack为空&#xff0c;或已满将整数压入到stack中从stack里弹出整数 不移除任何袁术&#xff0c;讲过stack的内容输出到标准输出Stack类的私有成员如下&#xff1a;一个用于打印错误信息的私有哦成员函数三个私有数…