开发工具:eclipse + navicat
项目源码:下载地址
Github:Github源码地址
一、根据注册过的账户登录系统,成功登录系统后选择创建笔记本
登录云笔记
登录后主界面
点击红色框 1 出的加号按钮可以添加笔记本
笔记本添加流程:用户点击加号 “+” -> 填写 笔记本名称 -> 提交数据 ajax 发送请求 -> DispatcherServlet 拦截过滤请求 -> 分配 controller AddBookController -> 执行 controller.execute() 方法 -> 返回操作结果 -> ajax 接受返回结果 -> status = 0 ,笔记本添加成功 status =1 笔记本添加失败 -> 提示用户操作结果。
提交数据
function addBook(){ //获取用户ID var userId=getCookie("userId"); //获取笔记本标题 var title=$("#input_notebook").val(); //数据格式检查 var ok=true; if(title==""){ ok=false; $("#title_span").html("标题不能为空"); } if(userId==null){//检查是否生效 ok=false; window.location.href="log_in.html"; } if(ok){ //发送ajax请求 $.ajax({ url:base_path+"/book/add.do", type:"post", data:{"userId":userId,"title":title}, dataType:"json", success:function(result){ var book=result.data; if(result.status==0){ var id=book.cn_notebook_id; var title=book.cn_notebook_name; createBookLi(id,title);//创建一个笔记本列表的li元素 alert(result.msg); } }, error:function(){ alert("创建笔记本失败"); } }); } };controller 响应请求 AddBookController.java
package com.sjh.cloud_note.controller; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.sjh.cloud_note.entity.Book; import com.sjh.cloud_note.service.BookService; import com.sjh.cloud_note.util.NoteResult; @Controller @RequestMapping("/book") public class AddBookController { @Resource private BookService bookService; @RequestMapping("/add.do") @ResponseBody public NoteResult<Book> execute(String userId,String title){ NoteResult result = bookService.AddBook(userId, title); return result; } }执行 execute ,调用 bookService.AddBook() 方法(bookService 已完成自动装配)
接口 BookService.java,loadBooks 根据用户Id 加载笔记本列表 ,AddBook 添加笔记本
package com.sjh.cloud_note.service; import java.util.List; import com.sjh.cloud_note.entity.Book; import com.sjh.cloud_note.util.NoteResult; public interface BookService { public NoteResult<List<Book>> loadBooks(String userId); public NoteResult<Book> AddBook(String userId,String title); }实现接口 BookServiceImpl.java @Service("bookService") 注解 在程序运行时自动完成注册,相当于在Spring 容器中自动添加
BookServiceImpl bean,后面再controller 中调用 bookService 时,只需要在字段之前加上 @Resource 注解,即可完成对bookService自动装配
package com.sjh.cloud_note.service; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.sjh.cloud_note.dao.BookDao; import com.sjh.cloud_note.entity.Book; import com.sjh.cloud_note.entity.User; import com.sjh.cloud_note.util.NoteResult; import com.sjh.cloud_note.util.NoteUtil; @Service("bookService") @Transactional public class BookServiceImpl implements BookService { @Resource private BookDao bookDao; public NoteResult<List<Book>> loadBooks(String userId) { NoteResult<List<Book>> result = new NoteResult<List<Book>>(); List<Book> books = bookDao.findByUserId(userId); result.setStatus(0); result.setMsg("加载笔记本成功"); result.setData(books); return result; } public NoteResult<Book> AddBook(String userId,String title) { Book book = new Book(); String bookId = NoteUtil.createId(); book.setCn_notebook_id(bookId); book.setCn_user_id(userId); book.setCn_notebook_name(title); book.setCn_notebook_type_id("1"); bookDao.save(book); NoteResult<Book> result = new NoteResult<Book>(); result.setStatus(0); result.setMsg("添加笔记本成功"); result.setData(book); return result; } }笔记本数据库访问接口 BookDao.java,方法名必须和mapper 中的对应操作 id 保持一致。否则会报异常
package com.sjh.cloud_note.dao; import java.util.List; import com.sjh.cloud_note.entity.Book; public interface BookDao { public List<Book> findByUserId(String userId); public void save(Book book); }笔记本数据库配置文件 BookMapper.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="com.sjh.cloud_note.dao.BookDao"> <select id="findByUserId" parameterType="string" resultType="com.sjh.cloud_note.entity.Book"> select * from cn_notebook where cn_user_id=#{userId} order by cn_notebook_createtime desc </select> <insert id="save" parameterType="com.sjh.cloud_note.entity.Book"> insert into cn_notebook( cn_notebook_id, cn_user_id, cn_notebook_type_id, cn_notebook_name, cn_notebook_desc, cn_notebook_createtime) values( #{cn_notebook_id}, #{cn_user_id}, #{cn_notebook_type_id}, #{cn_notebook_name}, #{cn_notebook_desc}, #{cn_notebook_createtime} ) </insert> </mapper>当添加完毕笔记本之后自动刷新界面,会自动根据用户Id 查找用户所有的笔记本。