SpringMVC+Mybatis框架集成开发基础——项目开发流程——04

 项目开发 模块开发思路:

笔记分享、笔记收藏 模块功能

#笔记分享
cn_note,cn_share
本质:用户将笔记分享,需要向cn_share表插入一条记录。
##发送Ajax请求
-点击笔记菜单"分享"按钮,onclick
-请求参数:笔记ID
-请求地址:/share/share.do
##服务器端处理
/share/share.do
-->ShareNoteController.execute
-->ShareService.shareNote
-->ShareDao.save-->cn_share(插入)
-->返回NoteResult结构的JSON结果
status:0,msg:分享成功
##Ajax回调处理
-success函数:提示分享成功或该笔记已分享
-error函数:提示分享失败

#搜索分享笔记
用户输入关键字后,按回车发送ajax请求,去cn_share表
查询标题带有关键字的笔记,将查询结果返回给界面,
界面解析返回的JSON,生成结果列表。
##发送Ajax请求
-输入关键字按回车(键盘事件keydown)
-请求参数:关键字
-请求地址:/share/search.do
##服务器端处理
/share/search.do
-->SearchShareController.execute
-->ShareService.searchShare
-->ShareDao.findLikeTitle
-->cn_share(按标题模糊查询)
-->返回NoteResult结构的JSON结果
cn_share_title like "%关键字%"

##Ajax回调处理
-success回调函数:解析返回的JSON结果,生成搜索结果列表
      切换列表显示,显示搜索结果列表。
      pc_part_2全部列表区
      pc_part_4回收站列表区
      pc_part_6搜索列表区
      pc_part_7收藏笔记列表
      pc_part_8参加活动的笔记列表

===========================
任务一:完成笔记分享和分享笔记搜索功能
任务二:独立实现回收站操作(选做)
#分享笔记查看
主要思路:根据点击的笔记,获取分享ID,然后发送Ajax请求
去cn_share表获取分享笔记信息,最后将信息显示到预览区。
##发送Ajax请求
-搜索结果列表li单击 onclick
-请求参数:分享ID
-请求地址:/share/load.do
##服务器端处理
/share/load.do-->LoadShareController.execute
-->ShareService.loadShare
-->ShareDao.findById-->cn_share(查询)
-->返回NoteResult结构的JSON结果
##Ajax回调处理
success函数:解析JSON结果;将信息显示到预览区;隐藏编辑区

#收藏笔记
主要思路:用户点击搜索结果列表中的"收藏"按钮,获取当前
点击的分享笔记ID,然后发送Ajax请求将笔记信息写入cn_note
表,最后界面给用户提示操作结果。
##发送Ajax请求
-点击分享笔记li中的"收藏"按钮,onclick
-请求参数:分享ID,用户ID
-请求地址:/share/favor.do
##服务器端处理
/share/favor.do-->FavorShareController.execute
-->ShareService.favorShare
-->NoteDao.save-->cn_note(插入,type_id='2')
-->返回NoteResult结构的JSON结果
##Ajax回调处理
success回调函数:提示收藏成功还是失败。

(追加逻辑:自己分享的笔记不允许收藏,给出提示信息)
(追加逻辑:已收藏过的笔记不允许重复收藏,给出提示信息)
 追加一个收藏列表cn_favors
 create table cn_favors(
cn_user_id varchar(100),
cn_share_id varchar(100));

 

 项目目录结构:

 

实体映射配置:

ShareMapper.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.dk.cloudnote.dao.ShareDao">
	
	<select id="findById" parameterType="string" 
	 resultType="com.dk.cloudnote.entity.Share">
		select * from cn_share
		where cn_share_id=#{id}
	
	</select>
	
	<select id="findLikeTitle" parameterType="string"
	 resultType="com.dk.cloudnote.entity.Share">
		select cn_share_id,cn_share_title
		from cn_share
		where cn_share_title like #{title}
	
	</select>
	
	<select id="findByNoteId" parameterType="string"
	  resultType="com.dk.cloudnote.entity.Share">
	  select * from cn_share
	  where cn_note_id=#{noteId}	
	
	</select>
	
	<insert id="save" parameterType="com.dk.cloudnote.entity.Share">
		insert into cn_share
			(cn_share_id,cn_share_title,
			cn_share_body,cn_note_id)
		values(#{cn_share_id},#{cn_share_title},
			   #{cn_share_body},#{cn_note_id})
	</insert>

</mapper>

 

FavorMapper.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.dk.cloudnote.dao.FavorDao">

	<select id="findFavor" parameterType="com.dk.cloudnote.entity.Favor"
	 resultType="int">
		select count(*) from cn_favors
		where cn_user_id=#{cn_user_id}
		  and cn_share_id=#{cn_share_id}
	</select>
	
	<insert id="save" parameterType="com.dk.cloudnote.entity.Favor">
		insert into cn_favors
		 (cn_user_id,cn_share_id)
		values(#{cn_user_id},#{cn_user_id})
	
	</insert>
</mapper>

 

实体类:

Share.java

package com.dk.cloudnote.entity;

import java.io.Serializable;

public class Share implements Serializable{
	
	private String cn_share_id;
	private String cn_share_title;
	private String cn_share_body;
	private String cn_note_id;
	
	public String getCn_share_id() {
		return cn_share_id;
	}
	public void setCn_share_id(String cn_share_id) {
		this.cn_share_id = cn_share_id;
	}
	public String getCn_share_title() {
		return cn_share_title;
	}
	public void setCn_share_title(String cn_share_title) {
		this.cn_share_title = cn_share_title;
	}
	public String getCn_share_body() {
		return cn_share_body;
	}
	public void setCn_share_body(String cn_share_body) {
		this.cn_share_body = cn_share_body;
	}
	public String getCn_note_id() {
		return cn_note_id;
	}
	public void setCn_note_id(String cn_note_id) {
		this.cn_note_id = cn_note_id;
	}
}

Favor.java

package com.dk.cloudnote.entity;

import java.io.Serializable;

public class Favor implements Serializable{
	private String cn_user_id;
	private String cn_share_id;
	
	
	public String getCn_user_id() {
		return cn_user_id;
	}
	public void setCn_user_id(String cn_user_id) {
		this.cn_user_id = cn_user_id;
	}
	public String getCn_share_id() {
		return cn_share_id;
	}
	public void setCn_share_id(String cn_share_id) {
		this.cn_share_id = cn_share_id;
	}

}

映射Dao接口:

ShareDao.java

package com.dk.cloudnote.dao;

import java.util.List;

import com.dk.cloudnote.entity.Share;

public interface ShareDao {
	public Share findById(String shareId);
	public List<Share> findLikeTitle(String title);
	public Share findByNoteId(String noteId);
	public void save(Share share);

}

FavorDao.java

package com.dk.cloudnote.dao;

import com.dk.cloudnote.entity.Favor;

public interface FavorDao {
	public int findFavor(Favor favor);
	public void save(Favor favor);

}

Dao接口方法测试:参考上一节博客

 

业务层代码:

业务接口部分:

ShareService.java

package com.dk.cloudnote.service;

import com.dk.cloudnote.util.NoteResult;

public interface ShareService {
	public NoteResult favorShare(String shareId,String userId);
	public NoteResult loadShare(String shareId);
	public NoteResult searchShare(String keword);
	public NoteResult shareNote(String noteId);
}

业务实现部分:

ShareServiceImpl.java

package com.dk.cloudnote.service;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.dk.cloudnote.dao.FavorDao;
import com.dk.cloudnote.dao.NoteDao;
import com.dk.cloudnote.dao.ShareDao;
import com.dk.cloudnote.entity.Favor;
import com.dk.cloudnote.entity.Note;
import com.dk.cloudnote.entity.Share;
import com.dk.cloudnote.util.NoteResult;
import com.dk.cloudnote.util.NoteUtil;

@Service("shareService")
public class ShareServiceImpl implements ShareService{
	@Resource
	private ShareDao shareDao;
	@Resource
	private NoteDao noteDao;
	@Resource
	private FavorDao favorDao;
	
	public NoteResult searchShare(String keword) {
		String title = "%";
		if(keword !=null && !"".equals(keword)){
			title = "%"+keword+"%";
		}
		//根据笔记标题模糊查询
	    List<Share> list	= shareDao.findLikeTitle(title);
		//返回NoteResult结果
	    NoteResult result = new NoteResult();
	    result.setStatus(0);
	    result.setMsg("搜索分享笔记完毕");
	    result.setData(list);//返回笔记
		return result;
	}

	public NoteResult shareNote(String noteId) {
		NoteResult result = new NoteResult();
		//检测是否已分享过该笔记
		Share has_share = shareDao.findByNoteId(noteId);
		if(has_share != null){//分享过
			result.setStatus(1);
			result.setMsg("该笔记已分享过");
			return result;
		}
		//分享处理
		Share share = new Share();
		share.setCn_note_id(noteId);//笔记ID
		String shareId = NoteUtil.createId();
		share.setCn_share_id(shareId);//分享ID
		//获取笔记标题和内容
		Note note = noteDao.findById(noteId);
		share.setCn_share_title(note.getCn_note_title());//标题
		share.setCn_share_body(note.getCn_note_body());//内容
		shareDao.save(share);//插入分享记录
		//返回NoteResult结果
		result.setStatus(0);
		result.setMsg("分享笔记成功");
		
		return result;
	}

	public NoteResult favorShare(String shareId, String userId) {
		NoteResult result = new NoteResult();
		//检测该笔记是否已收藏过
		Favor favor = new Favor();
		favor.setCn_user_id(userId);
		favor.setCn_share_id(shareId);
		int size = favorDao.findFavor(favor);
		if(size>0){
			result.setStatus(2);
			result.setMsg("该笔记已收藏过");
			return result;
		}
		//检测是否为自己分享的笔记
		Share share = shareDao.findById(shareId);
		Note note_tmp = noteDao.findById(share.getCn_note_id());//根据noteId查note
		if(note_tmp.getCn_user_id().equals(userId)){
			//用户id相等表示为自己分享的笔记
			result.setStatus(1);
			result.setMsg("该笔记是自己分享的笔记,不允许收藏");
			return result;
		}
		
		//收藏处理
		Note note = new Note();
		String noteId = NoteUtil.createId();
		note.setCn_note_id(noteId);//笔记id
		note.setCn_user_id(userId);//用户id
		note.setCn_notebook_id("");//收藏笔记本
		note.setCn_note_status_id("1");//normal
		note.setCn_note_type_id("2");//favor收藏
		long time = System.currentTimeMillis();
		note.setCn_note_create_time(time);//创建日期
		note.setCn_note_last_modify_time(time);//修改日期
		//加载笔记标题和内容
		note.setCn_note_title(share.getCn_share_title());
		note.setCn_note_body(share.getCn_share_body());
		noteDao.save(note);//插入收藏笔记
		//添加收藏记录cn_favors
		favorDao.save(favor);
		
		//返回NoteResult
		result.setStatus(0);
		result.setMsg("收藏笔记成功");
		return result;
	}

	public NoteResult loadShare(String shareId) {
		Share share = shareDao.findById(shareId);
		NoteResult result = new NoteResult();
		result.setStatus(0);
		result.setMsg("加载分享笔记完成");
		result.setData(share);
		return result;
	}

}

业务层功能 单元测试:参考上一节博客

 

控制层功能:

FavorShareController.java

package com.dk.cloudnote.controller.share;

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.dk.cloudnote.service.ShareService;
import com.dk.cloudnote.util.NoteResult;

@Controller
@RequestMapping("/share")
public class FavorShareController {
	@Resource
	private ShareService shareSerive;
	
	@RequestMapping("/favor")
	@ResponseBody
	public NoteResult execute(String shareId,String userId){
		System.out.println("FavorShareController.....");
		NoteResult result = shareSerive.favorShare(shareId, userId);
		return result;
	}
	
}

LoadShareController.java

package com.dk.cloudnote.controller.share;

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.dk.cloudnote.service.ShareService;
import com.dk.cloudnote.util.NoteResult;

@Controller
@RequestMapping("/share")
public class LoadShareController {
	@Resource
	private ShareService shareService;
	
	@RequestMapping("/load")
	@ResponseBody
	public NoteResult execute(String shareId){
		System.out.println("LoadShareController....."+shareId);
		NoteResult result = shareService.loadShare(shareId);
		return result;
	}
}

SearchShareController.java

package com.dk.cloudnote.controller.share;

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.dk.cloudnote.service.ShareService;
import com.dk.cloudnote.util.NoteResult;

@Controller
@RequestMapping("/share")
public class SearchShareController {
	@Resource
	private ShareService shareService;
	
	@RequestMapping("/search")
	@ResponseBody
	public NoteResult execute(String keword){
		System.out.println("SearchShareController....");
		NoteResult result = shareService.searchShare(keword);
		return result;
	}

}

ShareNoteController.java

package com.dk.cloudnote.controller.share;

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.dk.cloudnote.service.ShareService;
import com.dk.cloudnote.util.NoteResult;

@Controller
@RequestMapping("/share")
public class ShareNoteController {
	@Resource
	private ShareService shareService;
	
	@RequestMapping("/share")
	@ResponseBody
	public NoteResult execute(String noteId){
		System.out.println("ShareNoteController....");
		NoteResult result = shareService.shareNote(noteId);
		return result;
	}

}

控制层测试:

浏览器录入http://localhost:8088/cloud_note_learn/share/load.do?shareId=009d6943-223e-450d-aa26-3aa25edfc8a4

页面测试结果:

其他控制层代码功能测试同上。 

前端逻辑实现:

share.js

//搜索分享笔记
function searchShareNote(event){
	//判断是否按回车
	var code = event.keyCode;//获取键的ASCII
	if(code==13){//按回车了
		//获取请求参数
		var keyword = 
			$("#search_note").val().trim();
		//发送Ajax请求
		$.ajax({
			url:"http://localhost:8088/cloud_note_learn/share/search.do",
			type:"post",
			data:{"keyword":keyword},
			dataType:"json",
			success:function(result){
				if(result.status==0){
					//显示搜索列表区
					$("#pc_part_6").show();
					$("#pc_part_2").hide();
					$("#pc_part_4").hide();
					$("#pc_part_7").hide();
					$("#pc_part_8").hide();
					//清空之前生成的列表
					$("#search_ul").empty();
					var shares = result.data;
					//循环生成列表li
					for(var i=0;i<shares.length;i++){
						var shareId=shares[i].cn_share_id;
						var shareTitle = shares[i].cn_share_title;
						//拼一个li
						var sli = "";
						sli+='<li class="online">';
						sli+='	<a>';
						sli+='		<i class="fa fa-file-text-o" title="online" rel="tooltip-bottom"></i>';
						sli+= shareTitle;
						sli+='		<button type="button" class="btn btn-default btn-xs btn_position btn_slide_down"><i class="fa fa-star"></i></button>';
						sli+='	</a>';
						sli+='</li>';
						//绑定shareId
						var $li = $(sli);
						$li.data("shareId",shareId);
						//添加到search_ul列表中
						$("#search_ul").append($li);
					}
				}
			},
			error:function(){
				alert("搜索分享笔记失败");
			}
		});
	}
};
//笔记分享操作
function sureShareNote(){
	//获取请求参数
	var $li=$("#note_ul a.checked").parent();
	var noteId = $li.data("noteId");
	//发送Ajax请求
	$.ajax({
		url:"http://localhost:8088/cloud_note_learn/share/share.do",
		type:"post",
		data:{"noteId":noteId},
		dataType:"json",
		success:function(result){
			if(result.status==0){//成功
				alert(result.msg);
			}else if(result.status==1){//分享过
				alert(result.msg);
			}
		},
		error:function(){
			alert("分享笔记失败");
		}
	});
};

//查看分享笔记内容
function loadShareContent(){
	//设置选中状态
	$("#search_ul a").removeClass("checked");
	$(this).find("a").addClass("checked");
	//获取请求参数
	var shareId=$(this).data("shareId");
	//发送Ajax请求
	$.ajax({
		url:"http://localhost:8088/cloud_note_learn/share/load.do",
		type:"post",
		data:{"shareId":shareId},
		dataType:"json",
		success:function(result){
			if(result.status==0){
				var title=result.data.cn_share_title;
				var body=result.data.cn_share_body;
				//显示到预览区
				$("#noput_note_title").html(title);
				$("#noput_note_body").html(body);
				//显示预览区,隐藏编辑区
				$("#pc_part_3").hide();
				$("#pc_part_5").show();
			}
		},
		error:function(){
			alert("加载分享笔记失败");
		}
	});
};

edit.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>我的笔记</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="x-pjax-version" content="v173">
        <link rel="apple-touch-icon-precomposed" sizes="144x144" href="ico/favico-144-precomposed.png">
        <link rel="apple-touch-icon-precomposed" sizes="114x114" href="ico/favico-114-precomposed.png">
        <link rel="apple-touch-icon-precomposed" sizes="72x72" href="ico/favico-72-precomposed.png">
        <link rel="apple-touch-icon-precomposed" href="ico/favico-57-precomposed.png">
        <link rel="shortcut icon" href="ico/favico.png">
        <link rel="shortcut icon" href="ico/favico.ico">
        <link rel="stylesheet" href="styles/icon.css"/>
        <link rel="stylesheet" href="styles/main.css"/>
		<!-- Google-Code代码高亮CSS -->
        <link rel="stylesheet" href="styles/prettify.css"/>
		<!-- Ueditor编辑器CSS -->
		<link href="styles/umeditor.min.css" type="text/css" rel="stylesheet">
<script type="text/javascript" 
		src="scripts/jquery.min.js">
</script>
<script type="text/javascript"
		src="scripts/cookie_util.js">
</script>
<script type="text/javascript"
		src="scripts/book.js">
</script>
<script type="text/javascript"
		src="scripts/note.js">
</script>
<script type="text/javascript"
		src="scripts/alert.js">
</script>
<script type="text/javascript"
		src="scripts/share.js">
</script>
<script type="text/javascript">
//获取Cookie中的用户ID
var userId = getCookie("userId");
if(userId!=null){//用户ID存在
	$(function(){
		//加载用户笔记本列表
		loadUserBooks();
		//点击笔记本加载笔记列表(动态绑定)
		//父元素.on("事件类型","子元素选择器",fn);
		$("#book_ul").on("click","li",loadBookNotes);
		//点击笔记加载笔记内容
		$("#note_ul").on("click","li",loadNoteContent);
		//点击"保存笔记"按钮
		$("#save_note").click(updateNote);
		//点击"+"按钮弹出创建笔记本对话框
		$("#add_notebook").click(alertAddBookWindow);
		//关闭对话框处理
		$("#can").on("click",".cancle,.close",closeAlertWindow);
		//创建笔记本操作
		$("#can").on("click","#sure_addbook",sureAddBook);
		//点击"+"按钮弹出创建笔记对话框
		$("#add_note").click(alertAddNoteWindow);
		//创建笔记操作
		$("#can").on("click","#sure_addnote",sureAddNote);
		//笔记菜单处理
		$("#note_ul").on("click",".btn_slide_down",showNoteMenu);
		//点击body隐藏笔记菜单
		$("body").click(function(){
			$("#note_ul .note_menu").hide();
		});
		//点击笔记菜单的x按钮,弹出确认框
		$("#note_ul").on("click",".btn_delete",alertRecycleNoteWindow);
		//单击确认框中"删除"按钮
		$("#can").on("click","#sure_recyclenote",sureRecycleNote);
		//点击笔记菜单的"转移"按钮,弹出转移对话框
		$("#note_ul").on("click",".btn_move",alertMoveNoteWindow);
		//确定转移笔记操作
		$("#can").on("click","#sure_movenote",sureMoveNote);
		//笔记分享操作
		$("#note_ul").on("click",".btn_share",sureShareNote);
		//搜索分享笔记
		$("#search_note").keydown(searchShareNote);
		//分享笔记查看
		$("#search_ul").on("click","li",loadShareContent);
		//收藏笔记
		$("#search_ul").on("click","button",function(){
			//获取请求参数
			var $li = $(this).parents("li");
			var shareId = $li.data("shareId");
			//发送Ajax请求
			$.ajax({
				url:"http://localhost:8088/cloud_note_learn/share/favor.do",
				type:"post",
				data:{"shareId":shareId,"userId":userId},
				dataType:"json",
				success:function(result){
					if(result.status==0){
						alert(result.msg);
					}else if(result.status==1){
						alert(result.msg);
					}else if(result.status==2){
						alert(result.msg);
					}
				},
				error:function(){
					alert("收藏笔记失败");
				}
			});
		});
		
	});
}else{//用户ID不存在
	window.location.href="log_in.html";
}
</script>
    </head>
    <body class="animated fadeIn">
        <header class="header">
            <div class="header-brand">
                <a data-pjax=".content-body" href="edit.html">
                    <img class="brand-logo" src="images/dummy/8986f28e.stilearn-logo.png" alt="Stilearn Admin Sample Logo">
                </a>
            </div>
            <div class="header-profile">
                <div class="profile-nav">
                    <span class="profile-username"></span>
                    <a  class="dropdown-toggle" data-toggle="dropdown">
                        <span class="fa fa-angle-down"></span>
                    </a>
                    <ul class="dropdown-menu animated flipInX pull-right" role="menu">
                        <li><a href="Change_password.html"><i class="fa fa-user"></i> 修改密码</a></li>
                        <li class="divider"></li>
                        <li><a id="logout" href="#" ><i class="fa fa-sign-out"></i> 退出登录</a></li>
                    </ul>
                </div>
            </div>
            <form class="form-inline" onsubmit="return false;">
                <button type="button" class="btn btn-default btn-expand-search"><i class="fa fa-search"></i></button>
                <div class="toggle-search">
                    <input type="text" class="form-control" placeholder="搜索笔记" id='search_note'>
                    <button type="button" class="btn btn-default btn-collapse-search"><i class="fa fa-times"></i></button>
                </div>
            </form>
            <ul class="hidden-xs header-menu pull-right">
                <li>
                    <a href="activity.html" target='_blank' title="笔记活动">活动</a>
                </li>
            </ul>
        </header>
		<div class="row" style='padding:0;' id='center'>
			<!-- alert_background-->
			<div class="opacity_bg" style='display:none'></div>
			<!-- alert_notebook -->
			<div id="can"></div>
			<div class="col-xs-2" style='padding:0;' id='pc_part_1'>
				<!-- side-right -->
				<div class="pc_top_first">
					<h3>全部笔记本</h3>
					<button type="button" class="btn btn-default btn-xs btn_plus" id='add_notebook'><i class="fa fa-plus"></i></button>
				</div>
				<aside class="side-right" id='first_side_right'>
					<div class="module" data-toggle="niceScroll">
						<div class="chat-contact">
							<div class="contact-body">
								<ul id="book_ul" class="contacts-list">
								<!-- 
									<li class="online">
										<a>
											<i class="fa fa-book" title="online" rel="tooltip-bottom">
											</i> 
											默认笔记本
										</a>
									</li>
									-->
								</ul>
							</div>
						</div>
					</div>
				</aside>
				<div class="row clear_margin">
					<div class="col-xs-4 click" id='rollback_button' title='回收站'><i class='fa fa-trash-o' style='font-size:20px;line-height:31px;'></i></div>
					<div class="col-xs-4 click" id='like_button' title='收藏笔记本'><i class='fa fa-star' style='font-size:20px;line-height:31px;'></i></div>
					<div class="col-xs-4 click" id='action_button' title='参加活动笔记'><i class='fa fa-users' style='font-size:20px;line-height:30px;'></i></div>
				</div>
			</div>
			<!-- 全部笔记本 -->
			<!-- 全部笔记 -->
			<div class="col-xs-3" style='padding:0;' id='pc_part_2'>
				<div class="pc_top_second" id='notebookId'>
					<h3>全部笔记</h3>
					<button type="button" class="btn btn-default btn-xs btn_plus" id='add_note'><i class="fa fa-plus"></i></button>
				</div>
				<aside class="side-right" id='second_side_right'>
					<div class="module" data-toggle="niceScroll">
						<div class="chat-contact">
							<div class="contact-body">
								<ul id="note_ul" class="contacts-list">
								<!-- 
									<li class="online">
										<a  class='checked'>
											<i class="fa fa-file-text-o" title="online" rel="tooltip-bottom"></i> 使用Java操作符<button type="button" class="btn btn-default btn-xs btn_position btn_slide_down"><i class="fa fa-chevron-down"></i></button>
										</a>
										<div class="note_menu" tabindex='-1'>
											<dl>
												<dt><button type="button" class="btn btn-default btn-xs btn_move" title='移动至...'><i class="fa fa-random"></i></button></dt>
												<dt><button type="button" class="btn btn-default btn-xs btn_share" title='分享'><i class="fa fa-sitemap"></i></button></dt>
												<dt><button type="button" class="btn btn-default btn-xs btn_delete" title='删除'><i class="fa fa-times"></i></button></dt>
											</dl>
										</div>
									</li>
								-->
								</ul>
							</div>
						</div>
					</div>
				</aside>
			</div>
			<!-- 全部笔记 -->
			<!-- 回收站笔记 -->
			<div class="col-xs-3" style='padding:0;display:none;' id='pc_part_4'>
				<div class="pc_top_second">
					<h3>回收站笔记</h3>
				</div>
				<aside class="side-right" id='four_side_right'>
					<div class="module" data-toggle="niceScroll">
						<div class="chat-contact">
							<div class="contact-body">
								<ul class="contacts-list">
									<li class="disable"><a ><i class="fa fa-file-text-o" title="online" rel="tooltip-bottom"></i> 虚假回收站笔记<button type="button" class="btn btn-default btn-xs btn_position btn_delete"><i class="fa fa-times"></i></button><button type="button" class="btn btn-default btn-xs btn_position_2 btn_replay"><i class="fa fa-reply"></i></button></a></li>
								</ul>
							</div>
						</div>
					</div>
				</aside>
			</div>
			<!-- 回收站笔记 -->
			<!-- 搜索笔记列表 -->
			<div class="col-xs-3" style='padding:0;display:none;' id='pc_part_6'>
				<div class="pc_top_second">
					<h3>搜索结果</h3>
				</div>
				<aside class="side-right" id='sixth_side_right'>
					<div class="module" data-toggle="niceScroll">
						<div class="chat-contact">
							<div class="contact-body">
								<ul id="search_ul" class="contacts-list">
								</ul>
							</div>
						</div>
						<div id='more_note'>更多...</div>
					</div>
				</aside>
			</div>
			<!-- 搜索笔记列表 -->
			<!-- 收藏笔记列表 -->
			<div class="col-xs-3" style='padding:0;display:none;' id='pc_part_7'>
				<div class="pc_top_second">
					<h3>已收藏笔记</h3>
				</div>
				<aside class="side-right" id='seventh_side_right'>
					<div class="module" data-toggle="niceScroll">
						<div class="chat-contact">
							<div class="contact-body">
								<ul class="contacts-list">
									<!--li class="idle"><a ><i class="fa fa-file-text-o" title="online" rel="tooltip-bottom"></i> switch多分支结构<button type="button" class="btn btn-default btn-xs btn_position btn_delete"><i class="fa fa-times"></i></button></a></li-->
								</ul>
							</div>
						</div>
					</div>
				</aside>
			</div>
			<!-- 收藏笔记列表 -->
			<!-- 参加活动的笔记列表 -->
			<div class="col-xs-3" style='padding:0;display:none;' id='pc_part_8'>
				<div class="pc_top_second">
					<h3>参加活动的笔记</h3>
				</div>
				<aside class="side-right" id='eighth_side_right'>
					<div class="module" data-toggle="niceScroll">
						<div class="chat-contact">
							<div class="contact-body">
								<ul class="contacts-list">
									<!--li class="offline"><a ><i class="fa fa-file-text-o" title="online" rel="tooltip-bottom"></i> 样式用例(点击无效)</a></li-->
								</ul>
							</div>
						</div>
					</div>
				</aside>
			</div>
			<!-- 参加活动的笔记列表 -->
			<!-- 编辑笔记 -->
			<div class="col-sm-7" id='pc_part_3'>
				<!-- side-right -->
				<div class="pc_top_third">
					<div class="row">
						<div class="col-xs-9">
							<h3>编辑笔记</h3>
						</div>
						<div class="col-xs-3">
							<button type="button" class="btn btn-block btn-sm btn-primary" id='save_note'>保存笔记</button>
						</div>
					</div>
				</div>
				<aside class="side-right" id='third_side_right'>
					<div class="module" data-toggle="niceScroll">
						<div class="chat-contact">
							<div class="contact-body clear_margin">
								<!--- 笔记标题 --->
								<div class="row" >
									<div class="col-xs-8">
										<input type="text" class="form-control" id="input_note_title" placeholder='笔记标题...'>
									</div>
								</div>
								<!--- 笔记标题 --->
								<div class="row">
									<div class="col-sm-12">
										<!--- 输入框 --->
										<script type="text/plain" id="myEditor" style="width:100%;height:400px;">
										</script>
										<!--- 输入框 --->
									</div>
								</div>
							</div>
						</div>
					</div>
				</aside>
			</div>
			<!-- 编辑笔记 -->
			<!-- 预览笔记 -->
			<div class="col-sm-7" id='pc_part_5' style='display:none;' >
				<div class="pc_top_third">
					<div class="row">
						<div class="col-xs-9">
							<h3>预览笔记</h3>
						</div>
					</div>
				</div>
				<aside class="side-right" id='fifth_side_right'>
					<div class="module" data-toggle="niceScroll">
						<div class="chat-contact">
							<div class="contact-body clear_margin">
								<h4 id="noput_note_title"></h4>
								<p id="noput_note_body">
								
								</p>
							</div>
						</div>
					</div>
				</aside>
			</div>
			<!-- 预览笔记 -->
		</div>
        <footer>
            <p>&copy; 2014 Stilearning</p>
			<div style='position:absolute;top:5PX;height:30px;right:20px;line-height:26px;border:1px solid #0E7D76;display:none;background:#fff'>
				<strong style='color:#0E7D76;margin:0 10px;'></strong>
			</div>
        </footer>
		<script type="text/javascript">
			//加载DOM之后处理页面高度
			function get_dom(e){
				return document.getElementById(e);
			}
			function set_height(){
				var pc_height=window.innerHeight;
				pc_height=pc_height-132;
				get_dom('first_side_right').style.height=(pc_height-31)+'px';
				get_dom('second_side_right').style.height=pc_height+'px';
				get_dom('four_side_right').style.height=pc_height+'px';
				get_dom('sixth_side_right').style.height=pc_height+'px';
				get_dom('seventh_side_right').style.height=pc_height+'px';
				get_dom('eighth_side_right').style.height=pc_height+'px';
				get_dom('third_side_right').style.height=(pc_height-15)+'px';
				get_dom('fifth_side_right').style.height=(pc_height-15)+'px';
			}
			function myEditorWidth(){
				var dom=get_dom('third_side_right');
				var style=dom.currentStyle||window.getComputedStyle(dom, null);
				get_dom('myEditor').style.width=style.width;
			}
			set_height();
			//改变窗口大小时调整页面尺寸
			window.onresize=function(){
				set_height();
				var width=$('#third_side_right').width()-35;
				$('.edui-container,.edui-editor-body').width(width);
				$('#myEditor').width(width-20);
			};
		</script>
        <script type="text/javascript" src="scripts/jquery.min.js"></script>

		<!-- Bootstrap框架JS -->
        <script src="scripts/bootstrap.min.js"></script>
        <script src="scripts/js-prototype.js"></script>       
        <script src="scripts/theme-setup.js"></script>
		<!-- Google-Code代码高亮JS -->
        <script class="re-execute" src="scripts/run_prettify.js"></script>
		<!-- Ueditor编辑器JS -->
		<script type="text/javascript" charset="utf-8" src="scripts/ue/umeditor.config.js"></script>
		<script type="text/javascript" charset="utf-8" src="scripts/ue/umeditor.min.js"></script>
		<script type="text/javascript" src="scripts/ue/lang/zh-cn.js"></script>
		
		<script type="text/javascript">
			//重写JS原生alert函数
				window.alert=function(e){
					$('#can').load('./alert/alert_error.html',function(){
						$('#error_info').text(' '+e);
						$('.opacity_bg').show();
					});
				}
			//实例化Ueditor编辑器
			var um = UM.getEditor('myEditor');
		</script>
		</body>		
</html>

收藏功能的逻辑代码:

使用Tomcat 加载项目工程后 进行测试。

浏览器录入:http://localhost:8088/cloud_note_learn/log_in.html  登录系统后测试

相关测试截图:

 分享笔记搜索:

收藏分享的笔记 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值