下来是创建笔记本,创建笔记,这个没什么难点和前面是一样的。

创建笔记本

 首先点击“+”弹出添加笔记的对话框,然后点击确定按钮创建笔记本。

	//点击"+"弹出添加笔记本对话框
$("#add_notebook").click(alertAddBookWindow); //弹出创建笔记本对话框
function alertAddBookWindow(){
//弹出添加笔记本对话框
$("#can").load("alert/alert_notebook.html");
//显示对话框灰色背景(使用class="opacity_bg"选择)
$(".opacity_bg").show();
};

接下来创建笔记本

//创建笔记本
$("#can").on("click","#book_addsure",sureAddBook);

发送Ajax请求

  • 发送事件:对话框中的"创建"按钮的单击
  • 请求参数:笔记本名称,用户ID
  • 请求地址:/book/add.do

服务器端处理

/book/add.do

-->AddBookController.execute

-->BookService.addBook

-->BookDao.save

-->cn_notebook(insert)

-->返回JSON结果

Ajax回调处理

  • success:
  • a.关闭对话框;
  • b.添加一个笔记本li
  • c.提示创建笔记本成功
  • error:提示创建笔记本失败

  此时,保存成功后alert提示框关闭不了,这是因为这里的alert是经过处理过的,要想关闭就要对它进行处理

aler提示框处理

  添加关闭提示框的代码

 //关闭对话框,对所有的对话框都有用
$("#can").on("click",".cancle,.close",closeAlertWindow);

代码为:

//关闭对话框
function closeAlertWindow(){
$("#can").html("");//清空对话框内容
$(".opacity_bg").hide();//隐藏背景色
};

如果要修改alert提示框的样式可以用

  • window.alert=function(e){};

创建笔记

  创建笔记和创建笔记本几乎是一样的,都是点击“+”弹出窗口,然后点击确定触发创建笔记的事件。

//弹出创建笔记对话框
function alertAddNoteWindow(){
//判断是否有笔记本选中
var $li = $("#book_ul a.checked").parent();
if($li.length==0){
alert("请选择笔记本");
}else{//弹出对话框
$("#can").load("alert/alert_note.html");
$(".opacity_bg").show();
} };

发送Ajax请求

  • 发送事件:对话框中"创建"按钮的单击
  • 请求参数:笔记名称,选中的笔记本ID,

    用户ID
  • 请求地址:/note/add.do

服务器端处理

/note/add.do

-->AddNoteController.execute

-->NoteService.addNote

-->NoteDao.save

-->cn_note(insert操作)

-->返回JSON结果

Ajax回调处理

  • success:
  • a.关闭对话框
  • b.解析返回的JSON结果,生成一个笔记li元素添加到列表中
  • c.提示创建笔记成功
  • error:提示创建笔记失败

笔记删除

功能描述:

单击笔记菜单的"X"按钮时,弹出删除对话框,点击对话框中的"删除"按钮,执行删除操作。

发送Ajax请求

  • 发送事件:对话框中"删除"按钮的单击
  • 请求参数:选中li的笔记ID
  • 请求地址:/note/delete.do

服务器端处理

/note/delete.do

-->DeleteNoteController.execute

-->NoteService.deleteNote

-->NoteDao.updateStatus

-->cn_note(按笔记ID将cn_note_status_id更新为"2")

-->返回JSON结果

Ajax回调处理

  • success:a.移除列表中删除的笔记li元素

        b.提示笔记删除成功
  • error:提示笔记删除失败

笔记转移

功能描述:

单击笔记菜单的"转移至.."按钮,弹出笔记转移对话框,在对话框下拉列表中,选择要转入的笔记本项,点击确定转移按钮执行转移操作。

发送Ajax请求

  • 发送事件:对话框中"确定"按钮的单击
  • 请求参数:选中项的笔记ID,要转入的笔记本ID

    (格式检查:a.要转入笔记本是否和原笔记本相同;)
  • 请求地址:/note/move.do

服务器端处理

/note/move.do

-->MoveNoteController.execute

-->NoteService.moveNote

-->NoteDao.updateBookId

-->cn_note(按笔记ID将cn_notebook_id更新)

-->返回JSON结果

Ajax回调处理

  • success:a.移除笔记列表li元素;

        b.提示笔记转移成功
  • error:提示笔记转移失败

笔记分享

功能描述:

用户点击笔记菜单中"分享"按钮,执行分享操作。

本质:对cn_share(分享笔记表)进行insert

发送Ajax请求

  • 发送事件:菜单中的"分享"按钮的单击
  • 请求参数:笔记ID
  • 请求地址:/share/add.do

服务器端处理

/share/add.do

-->ShareNoteController.execute

-->ShareService.shareNote

-->ShareDao.save-->cn_share(insert)

-->返回JSON结果

Ajax回调处理

success:提示用户分享成功;

扩展:添加图标,就是在加载笔记时加判断,当笔记的type标志位为3时加分享图标

分享笔记搜索

功能描述:

用户在搜索输入框输入"关键词",按回车触发搜索操作。

本质:对cn_share表进行cn_share_title

模糊查询

	select * from cn_share
where cn_share_title like '%java%';

发送Ajax请求

  • 发送事件:输入框中按回车键
  • 请求参数:输入框中的内容(关键词)
  • 请求地址:/share/search.do

服务器端处理

/share/search.do

-->ShareSearchController.execute

-->ShareService.searchNote

-->ShareDao.findLikeTitle

-->cn_share(模糊搜索)

-->返回JSON结果

Ajax回调处理

  • success:a.解析JSON结果生成搜索结果列表

        b.将搜索结果列表显示;其他列表隐藏(pc_part_6显示)
pc_part_2 全部笔记列表
pc_part_4 回收站笔记列表
pc_part_6 搜索结果列表
pc_part_7 收藏笔记列表
pc_part_8 参加活动的笔记列表
  • error:提示搜索失败

知识点

按回车键触发js事件

	$("#search_note").keydown(function(event){
var code = event.keyCode;//获取键盘的code码
if(code==13){
//回车键,获取关键词,发送Ajax请求
}
});

搜索分享笔记的查看

功能描述:

用户单击搜索结果列表中的li,发送Ajax请求去cn_share获取分享笔记信息,显示到预览笔记区域。(pc_part_5显示,pc_part_3隐藏)

发送Ajax请求

  • 发送事件:搜索结果列表的li元素
  • 请求参数:分享ID shareId
  • 请求地址:/share/load.do

服务器端处理

/share/load.do

-->LoadShareController.execute

-->ShareService.loadShare

-->ShareDao.findById-->cn_share

-->返回JSON结果(Share对象)

Ajax回调处理

  • success:解析JSON结果中的Share内容,显示到预览笔记区域.

搜索分享笔记(分页处理)

/share/search.do(传递查询关键字和第几页)

-->Controller(接收请求和参数)

-->Service(接收参数,处理参数)

关键字前后追加%;根据第几页计算抓取起点

-->Dao (SQL: limit 起点,5)

-->返回指定第几页的记录结果

分页查询

	select * from cn_share limit n,m;
n:抓取记录的起点,从0开始算(0表示第1条)
m:抓取记录的最大数

  这些就是这个项目的主要功能,做到这里差不多主要部分就算完了。大家可以把登录的页面的登录设置为按回车进行登录,注册也一样,删除的回收站,笔记本收藏,分享也都可以做下。

java版云笔记(五)的更多相关文章

  1. java版云笔记(九)之动态sql

    SQL 首先,所谓SQL的动态和静态,是指SQL语句在何时被编译和执行,二者都是用在SQL嵌入式编程中的,这里所说的嵌入式是指将SQL语句嵌入在高级语言中,而不是针对于单片机的那种嵌入式编程. 静态S ...

  2. java版云笔记(七)之事务管理

    事务管理 事务:程序为了保证业务处理的完整性,执行的一条或多条SQL语句. 事务管理:对事务中的SQL语句进行提交或者回滚. 事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的 ...

  3. java版云笔记(二)

    云笔记 基本的环境搭建好了,今天做些什么呢,第一是链接数据库(即搭建Spring-Batistas环境),第二是登录预注册. 注:这个项目的sql文件,需求文档,需要的html文件,jar包都可以去下 ...

  4. java版云笔记(一)

    云笔记项目 这个项目的sql文件,需求文档,需要的html文件,jar包都可以去下载,下载地址为:http://download.csdn.net/download/liveor_die/998584 ...

  5. java版云笔记(八)之关联映射

    Mybatis关联映射 通过数据库对象之间的关联关系,反映到到实体对象之间的引用. 加载多个表中的关联数据,封装到我们的实体对象中. 当业务对数据库进行关联查询. 关联 <association ...

  6. java版云笔记(六)之AOP

    今天主要是利用aop技术追加service的响应时间的计算和异常的日志记录. AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object O ...

  7. java版云笔记(四)

    页面的笔记本加载完成了,接下来就是点击笔记本显示将笔记显示,同时把笔记在右边的编辑器中,同时把编辑后的笔记更新. 注:这个项目的sql文件,需求文档,需要的html文件,jar包都可以去下载,下载地址 ...

  8. java版云笔记(三)

    登录与注册写好了下来就是主页,今天写的是主页加载时笔记本列表的显示,ajax是固定的就不重点说了.主要说一下jQuery.data() 函数和jQuery.on() 函数. 注:这个项目的sql文件, ...

  9. 第五篇 :微信公众平台开发实战Java版之如何获取公众号的access_token以及缓存access_token

    一.access_token简介 为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台 开放了许多接口,包括自定义菜单接口.客服接口.获取用户信息接口.用户分组接口.群发接口等, 开 ...

随机推荐

  1. 卷积 & 杜教筛

    目录 卷积 杜教筛 前言:发现最近都没怎么写博客,,,赶紧发篇以前记的笔记凑凑数 卷积 卷积定义: 如果有数论函数\(f, g\), 那么它们卷积的第\(n\)项为\((f * g) (n)\),设这 ...

  2. BZOJ2733 永无乡 【splay启发式合并】

    2733: [HNOI2012]永无乡 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 4190  Solved: 2226 [Submit][Sta ...

  3. NOIP2017 宝藏 题解报告【状压dp】

    题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的 m 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中的宝藏.但是 ...

  4. 后渗透提权辅助工具BeRoot详解

    0x00 工具介绍 前言 BeRoot是一个后期开发工具,用于检查常见的Windows的配置错误,以方便找到提高我们提权的方法.其二进制编译地址为: https://github.com/Alessa ...

  5. Linux内核分析5

    周子轩 原创作品转载请注明出处 <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.学习总结 通过gdb ...

  6. [POI2005]Bank notes

    link 试题分析 我们发现此题是一个十分简单的多重背包.但是按照朴素写法会超时.所以要去考虑优化. 我们发现我们若$W=7$,可以拆成$1+2+4$,不用每次$1+1+1+1+1+1+1$,从$N$ ...

  7. Dell 戴尔预装Windows8改成Windows7

    UEFI模式启动: 添加启动方式,正确路径为: 另外: Ubuntu启动gpt由gpt10变为gpt9 dd

  8. 运行python时提示:ImportError: No module named plyvel ,ImportError No module named irc 解决过程:

    (当前python版本:2.7) 1.在git下载electrum-server: cd / git clone https://github.com/spesmilo/electrum-server ...

  9. synchronized 加锁Integer对象(数据重复)详解

    场景描述:多线程输出1到100,对静态Integer对象加锁,synchronized代码块中操作Integer对象,发生线程安全问题(数据重复) 代码: public class MyRunnabl ...

  10. C#获取用户基本信息一(关注了公众号的用户)

    一.获取Code  假设我们需要网页授权的页面的地址为redirect_uri 需要获取Code的话我们第一步是跳转到授权地址,我们第一步便是获取拼接授权地址 --采用snsapi_base方式 pu ...