【实战】Spring+Spring MVC+Mybatis实战项目之云笔记项目

一、项目简介

         

1、项目概述

云笔记,是tmocc上的一个子项目,用于客户进行在线学习记录,分享,收藏笔记,以及参与社区活动。

2.模块划分

用户模块:登录、注册、修改密码、退出

笔记本模块:创建、删除、更新、查看

笔记模块:创建、删除、更新、查看、转义

分享/收藏模块:分享、收藏、查看、搜索

回收模块:查看、彻底删除、恢复

活动模块:查看活动、参加活动

3.设计思想

MVC设计思想

表现层:html+css+Jquery+ajax

控制层:springmvc

业务层;service组件

持久层:Dao组件

4.技术架构

(1)开发环境:windows10+tomcat+mysql

(2)采用技术:java+jquery+ajax+springmvc

IOC+AOP+mybatis

java:开发核心技术

jquery:简化前端JavaScript($对象和API)

ajax:局处理页面,提升用户体验度

springmvc:负责接收请求,调用业务组件处理,生成json响应

spring(IOC/AOP):管理相关组件

IOC:负责管理Controller/service/dao,维护它们之间的关系

AOP:面向切面编程,不修改原有的代码,给系统增加新的功能

5.整体规范

-所有的请求ajax方法访问

-前端页面采用HTML

-请求结果进行JSON相应

{status:,“msg”:,“data”:}

二、数据库构建

1.常用命令

show databases;//查看有哪些数据库

create database cloud_note;//创建数据库

drop database cloud_note;删除数据库

use 数据库名 ;连接数据库

show tables;查看有哪些表

source ;导入sql文件

2.数据表联系

三、项目流程

SSM框架:springMVC+spring+Mybatis

(一)创建云笔记项目环境

1.导包

2.添加配置文件

+

web.xml

3.划分包结构

-com.lcz.cloud_note.dao:接口层
-com.lcz.cloud_note.service:服务层
-com.lcz.cloud_note.controller:控制层
-com.lcz.cloud_note.entity:实体层
-com.lcz.cloud_note.util:工具层
-com.lcz.cloud_note.aspect:切面层

4.将html目录下的内容拷贝到webapp下

四、功能实现

(一)、登录功能

1.发送ajax请求

事件绑定
获取参数
$.ajax发送请求

2.服务器处理

请求
-->DispatcherServlet->HandlerMapping->Controller.execute()->Service->Dao->cn_user->返回数据

3.ajax回调处理

成功:edit.html
失败:提示信息,重新登录

(二)、注册功能

 

1.发送ajax请求

-发送事件:注册按钮的点击
-获取的参数:用户名   昵称 密码
-请求地址: /user/register.do

2.服务器处理

请求
-->DispatcherServlet->HandlerMapping->
Controller.execute()->
Service(addUser)->
//检查用户
user=findByNam(name)
user!=null
result
//添加用户
处理password
user.set()
save(user)
//设置result
Dao->cn_user(insert)->json响应

3.ajax回调处理

success:
注册成功
error(异常):
注册失败

知识点:

UUID:是一个生成字符串算法,用于生成数据库主键

生成主键有两种方式:在应用服务器端生成主键;在数据库端生成主键

(三)、笔记本列表显示功能

 

1.发送ajax请求

发送事件:进入到edit.html发送请
请求参数:userId
请求地址:/book/loadBooks.do

2.服务器处理

/book/loadBooks.do
-->LoadBooksController.execute
-->BookService.LoadUserBooks
1.BookService接口 loadUserBooks
2.实现类里面调用dao.findByUserId
3.实现类中构建Result结果
-->BookDao.findByUserId
1.dao接口定义findByUserId
2.配置BookMapper.xml
-->cn_notebook
-->JSON响应

3.ajax回调处理

解析JSON数据。循环生成笔记本列表项(li)

知识点:

事件绑定:

静态绑定--->   元素.click(function(){})

动态绑定--->   父元素.on("click","li",fn)

(四)、笔记列表显示

1.发送ajax请求

-发送事件:笔记本li的点击
-请求的参数:笔记本的ID
-请求地址:/note/loadnote.do

2.服务器的处理

/note/loadnote.do
->LoadNoteController.execute
->NoteService.loadBookNotes
//定义接口文件NoteService->loadBookNotes(bookId)
//实现类中重写抽象方法
noteDao.findByBookId();
//构建Result-->set方法
setData=List<Map>
->NoteDao.findByBookId(bookId)
//接口文件定义方法
//配置mapper文件
//TestNoteDao
->cn_note(select-bookId&cn_note_status_id="1")

3.ajax回调的处理

success:解析json数据。生成笔记Li,添加到笔记列表中
error:提示alert("笔记加载失败")

知识点:

Dao接口的传值特点:mybatis中Dao方法要么没有参数,要么一个参数。

//获取笔记信息

var notes=result.data;//(List集合中存储)

//清除原来的列表信息

$("#note_ul").empty();

(五)、显示笔记数据

 

1、发送ajax请求

#发送事件:笔记列表li元素的单击事件(动态绑定)
#请求参数:笔记ID(noteId)
#请求地址:/note/load.do

2.服务器处理

-Controller:LoadNoteController.execute(String noteId)
-Service:NoteService.loadNote(String noteId)
-Dao:NoteDao.findByNoteId(Strign noteId)
-cn_note(查询):
-json响应

3.ajax回调处理

-succes:
-设置笔记标题(title)
-设置笔记内容(body)
um.setContent(“str”);
um.getContent(“str”);
-error:alert(“笔记信息加载失败”)

知识点:UEdit

用js开发的开源组件

为什么?

通过js代码实现表单功能的增强

如何用?

1.引用脚本

<!-- Ueditor编辑器JS --><script type="text/javascript" charset="utf-8" src="scripts/common/ue/umeditor.config.js"></script><script type="text/javascript" charset="utf-8" src="scripts/common/ue/umeditor.min.js"></script><script type="text/javascript" src="scripts/common/ue/lang/zh-cn.js"></script>

2.实例化

//实例化Ueditor编辑器var um = UM.getEditor('myEditor');

3.通过script

<!--- 输入框 ---><script type="text/plain" id="myEditor" style="width:100%;height:400px;"></script><!--- 输入框 --->

4.设置

um.setContent(“str”);um.getContent(“str”);

六、更新笔记信息即保存笔记信息

 

1.发送ajax请求

#发送事件:“保存笔记”按钮点击事件(静态)
#请求参数:笔记ID(id)、标题(title)、内容(body)
请求地址:/note/update.do

2.服务器处理

-UpdateNoteController(id,title,body)-->
-NoteService.updateNote(Note)
-NoteDao.uodateNote(Note)
-cn_note(更新处理)

3.ajax回调处理

success:对被更新的笔记名称进行更新
<li><a class=”checked”></a></li>
var $li=$(“#note_ul a.checked”).parent

知识点:alert的使用

如何显示?

-通过load(),加载html

-显示show()背景

七、创建一个新的笔记本

 

1.ajax请求

-发送事件:对话框中的“创建”按钮的单击(动态)
-请求参数: 用户ID 笔记本名称
-请求地址:/book/add.do

2.服务器处理

-AddBookController.execute
-BookService.addBook(book)
-BookDao.save(Book book)
-cn_notebook(insert)
--json响应

3.ajax回调处理

success:
-关闭对话框
-添加一个笔记本li
-提示创建笔记本的成功
error:
提示创建笔记本失败

八、创建一个新的笔记

 

1.ajax请求

-发送事件:对话框中的“创建”按钮的单击(动态)-请求参数:笔记名称 笔记本ID 用户ID-请求地址:/note/add.do

2.服务器处理

-AddNoteController.execute-NoteService.addBook(book)-NoteDao.save(Book book)-cn_notebook(insert)--json响应

3.ajax回调处理

success:-关闭对话框(可以省略)-解析JSON数据。生成一个li元素添加到笔记列表中1.获取title2.获取noteId-提示创建笔记的成功error:提示创建笔记失败

九、显示笔记下拉菜单

 

1.通过点击“箭头”按钮显示三个菜单项

-获取div对象  slideDown();

2.、下拉菜单的分享功能

#发送请求-发送事件:点击“分享”按钮-请求参数:noteId-请求地址:/share/add.do#服务器处理-创建Share类-Controller-Service-Dao-insert-cn_share#回调处理success:提示分享成功 增加图标处理<i class=”fa fa-sitemao”>error:提示分享失败

3.、下拉菜单的删除功能

//约定1-normal 2-deletenote.setCn_note_status_id("1");//约定1-normal 2-favor 3-sharenote.setCn_note_type_id("1");

4.、下拉菜单的移动功能

十:模糊查询分享笔记

 

功能描述:用户输入搜索关键词,然后点回车,触发查询

可以多行显示,可以点击,然后显示具体信息

1.发送ajax事件

发送事件:输入关键词后,点回车$(“Input_id”).keydown(function(event){var code=event.keyCode;if(code==13){发送ajax请求}})

2.服务器处理

-Controller-Service-Dao(select)-cn_shareselect * from cn_share like %关键词%

3.ajax回调处理

success:显示搜索笔记结果列表error:搜索笔记失败

十一、修改密码及退出登录操作

十二、Spring AOP的应用

AuditBean:性能审计用来查看执行各个业务需要的时间

ExceptionBean:保存异常信息到日志中

LoggerBean:封装打桩操作逻辑

十三、源码地址

最后,给出源码地址:csdn地址点击打开链接   github地址:点击打开链接

【实战】Spring+Spring MVC+Mybatis实战项目之云笔记项目相关推荐

  1. Django小项目:云笔记项目

    云笔记项目 云笔记项目 项目准备 shell操作 settings.py 用户注册模块 用户登录模块 网站首页 笔记模型模块 列表页 注册后台 项目部署 云笔记项目 云笔记项目 - 功能拆解 用户模块 ...

  2. VUE+Spring Boot整合MyBatis实现前后端分离项目壁纸网站

    目录 前言 一.项目运行 二.环境需要 三.技术栈 四.项目说明 五.后端代码 前言 每次换桌面,壁纸总是不好找,搜索图片得不到好的索引与反馈,很难找到自己喜欢的壁纸,而壁纸网站可以免去我们去寻找壁纸 ...

  3. 【我的新书】Spring MVC+ Mybatis:快速开发与项目实战

    开心一笑 中午去ATM存钱,排队时后面的美女问我:"存钱是吗?" 我: "嗯". 美女: "我正好要取钱,反正你要存,不如把钱给我,咋俩就不用排队了& ...

  4. Spring Web MVC详解

    Spring Web MVC详解 原创 2016年03月23日 10:55:57 标签: 421 编辑 删除 2.1.Spring Web MVC是什么 Spring Web MVC是一种基于Java ...

  5. java ee核心框架实战 pdf_Java EE核心框架实战 高洪岩 中文PDF

    资源名称:Java EE核心框架实战 高洪岩 中文PDF 第1章 MyBatis 3操作数据库 第2章 MyBatis 3常用技能 第3章 Struts 2必备开发技能 第4章 Struts 2文件的 ...

  6. 微服务配置中心实战:Spring + MyBatis + Druid + Nacos

    转载自  微服务配置中心实战:Spring + MyBatis + Druid + Nacos 很多基于 Spring MVC 框架的 Web 开发中,Spring + MyBatis + Druid ...

  7. springcloud gateway ribbon使用_Github点赞接近 70k 的Spring Cloud学习教程+实战项目推荐!牛批!...

    这篇文章继续来推荐 Spring Cloud 的教程和实战项目了!想必不用不多说,大家都知道 Spring Cloud 的重要程度.几乎稍微有点规模的公司,一般都离不开要和微服务打交道.同时,Spri ...

  8. springboot做网站_Github点赞接近 100k 的Spring Boot学习教程+实战项目推荐!

    " 本文已经收录进:awesome-java (Github 上非常棒的 Java 开源项目集合) 很明显的一个现象,除了一些老项目,现在 Java 后端项目基本都是基于 Spring Bo ...

  9. Github点赞接近 70k 的Spring Cloud学习教程+实战项目推荐!牛批!

    本文已经收录进:awesome-java (Github 上非常棒的 Java 开源项目集合) 这篇 Guide 来推荐 Spring Cloud 的教程和实战项目了!想必不用不多说,大家都知道 Sp ...

最新文章

  1. 让迅雷的胃口变得更大!
  2. 题目1199:找位置
  3. 应用Mongoose开发MongoDB(2)模型(models)
  4. 绿色计算在数据中心的应用及节能效果浅析
  5. qq应用之超级店长数据分析
  6. 【深度学习】用 YOLO v5+DeepSORT,打造实时多目标跟踪模型
  7. Silverlight RIA Servcie 删除子对象实体提交错误的问题[解决]
  8. linux 机器格式化_为什么机器人应该为我们格式化代码
  9. 设置build.gradle打包时自动加时间
  10. 一张图看懂阿里企业级分布式应用服务EDAS
  11. linux mkfifo管道
  12. Netty NioEventLoop 启动过程源码分析
  13. 《非常网管:网络管理从入门到精通(修订版)》一1.4 TCP/IP
  14. BFS Codeforces Beta Round #94 (Div. 2 Only) C. Statues
  15. IDM俄国大神直装注册版INTERNET DOWNLOAD MANAGER 6.36.7
  16. MASM8.0 下载安装方法
  17. html 自动阅读,自动阅读软件脚本
  18. 提前体验让人回归Windows怀抱的Windows Terminal
  19. 关闭Typora拼写检查功能
  20. 台州银行笔试考什么_历年台州银行笔试和面试经验分享

热门文章

  1. 【图像分割】基于模糊聚类算法FCM实现图像分割matlab代码
  2. 数字黑洞java_Java中数字黑洞实现代码
  3. 兄弟Brother PT-9200DX 驱动
  4. 《Spring Cloud实战指南》快速学习路线图(2022版)
  5. C语言头文件.h互相包含所引发的一系列错误C2143之类的解决方法
  6. 服务器无响应(已断开),服务器无响应 已断开(服务器无响应)
  7. css flex所有属性总结
  8. 交互媒体专题设计------《The Wiley Handbook of Human Computer Interaction》之观后感
  9. Ubuntu Core 将支持物联网 Matter
  10. 利用OpenCV进行图像伽马校正