开发工具:eclipse + navicat
项目源码:CSDN下载地址
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 查找用户所有的笔记本。