基于SpringMVC的云笔记系统.docx
- 文档编号:7864813
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:20
- 大小:171.69KB
基于SpringMVC的云笔记系统.docx
《基于SpringMVC的云笔记系统.docx》由会员分享,可在线阅读,更多相关《基于SpringMVC的云笔记系统.docx(20页珍藏版)》请在冰豆网上搜索。
基于SpringMVC的云笔记系统
河南科技学院
2015届本科毕业论文(设计)
论文(设计)题目:
基于SpringMVC的云笔记系统
***********************
所在院系:
信息工程学院
所学专业:
计算机科学与技术
导师姓名:
张丽君
完成时间:
2015-05-10
摘要
本课题所实现的云笔记系统改变了传统的记录笔记的模式,采用云笔记系统,这种新式的方式使得用户在学习中更加方便快捷的记录,分享,收藏笔记。
本系统采用b/s开发模式,分为服务器端和浏览器端。
在服务器端主采用MySQL数据库使用MyBatis技术访问数据库。
使用Spring框架管理组件,整合MyBatis,处理一些通用通用的业务。
使用MVC分层思想,将代码分为控制层,业务层,持久层和视图层,实现了登陆模块,笔记本模块,和笔记模块。
登陆模块的主要包括登陆,注册,修改密码和退出登陆功能。
笔记本模块主要包含新增,修改,删除功能。
笔记模块包含查询,新增,修改,删除功能。
在浏览器端主要采用Ajax处理客户端逻辑以及发送异步请求并实现了系统界面的一些动态效果。
关键词:
Ajax,MySQL,MyBatis,SpringMVC,Spring,Java。
ABSTRACT
本课题所实现的电子点菜系统改变了传统的记录笔记的模式,采用云笔记系统,这种新式的方式使得用户在学习中更加方便快捷的记录,分享,收藏笔记。
关键词JQuery,MySQL,MyBatis,SpringMVC,Spring,Java
Thearticlenotescloudsystemchangedthepatternoftraditionalnotetaking,thecloudnotessystem,thisnewwayallowsuserstomoreeasilyandquicklyinthestudyrecord,share,usednotes.
Thesystemusestheb/sdevelopment model, dividedintoserver andbrowser. Atthe endofthemain server usingMySQLdatabase accesstothedatabaseusingMyBatistechnology. TheintegrationofMyBatis usingtheSpringframework, managementcomponent, some general business.UsingtheMVChierarchicalthinking,thecodeisdividedintocontrollayer,businesslayer,persistencelayerandviewlayer,toachievetheloginmodule,moduleofnotebook,andnotesmodule. Thelandingmodule includes login, registration, modifythepassword and exittheloginfunction. Thenotebook modulemainlyconsistsof add, modify,deletefunction. Note module containsthequery, add, modify, deletefunction. AttheendofthebrowserusesAjaxclient-sidelogicandsendsanasynchronousrequestandthesysteminterfaceofsomeofthedynamiceffect.
Keywords:
Spring Ajax, MySQL, MyBatis, SpringMVC, Spring, Java.
1.绪论
1.1项目背景及意义
因为互联网的快速发展,人们获得新知识的方法也变得多样化,在线学习应运而生,为了让使用在线学习的人能更方便的记录笔记,云笔记项目因此诞生,云笔记是用于用户在进行学习时随时记录,分享,收藏笔记。
云笔记系通过分布式解决方案使用户空间被无限放大。
系统贴近贴近用户的使用习惯,期望达到达到无处不学习无处不笔记的效果。
1.2项目现状及趋势概述
就目前来看云笔记市场呈现的特点是用户群较小但是没有什么行业竞争其目前主要用于教育市场。
但是互联网发展速度迅速,今后的生活,工作,学习也许都要和互联网打交道,但是互联网毕竟不是现实世界一些重要的信息,知识不能随时随地的记录,但是云笔记却解决了这些烦恼。
云笔记起初用于在线学习的人群记录笔记,但是我相信不远的将来云笔记必将推向大众,成为人们日常生活不可或缺的一部分。
2.1Java语言概述
Java是SUN公司开发最初命名为Oak是一种小型系统的编程语言,随着互联网发展SUN公司改造了Oak并以“Java”名称正式发布。
Java编程风格接近于C,C++语言,但不同的是Java是完全的面向对象程序设计语言,继承了C++语言面向对象技术的核心但是舍弃了指针,增加了垃圾回收机制。
JDK(JavaDevelopmentKit)是Java开发工具包,除了包含JRE(JavaRuntimeEnvironment)外还包含运行Java程序所需要的工具JDK。
所以JDK=JRE+编译、运行等开发工具。
JRE:
Java运行时环境除了包含JVM(JavaVirtualMachine)外还提供了运行Java程序所需要的环境。
JRE=JVM+Java系统类库JVM是Java虚拟机。
Java开发过程简而言之就是首先使用一个文本编辑器编写扩展名为.Java的源文件,然后用Java编译器把扩展名为.Java的源文件编译为.class,最后JVM加载.class并运行.class。
不同的平台使用不同的JVM所以,JVM屏蔽了平台之间的差异,所以实现了跨平台一次编译到处使用。
2.2b/s和c/s体系
b/s即浏览器/服务器端结构,如果说b/s就最好和c/s作比较,那具体的项目举例就是网页版的qq是b/s结构,而需要下载的qq客户端属于c/s模式。
从安全性来说,c/s模式对于每个用户都有一个客户端,而b/s模式的客户端是被所有用户公用,而且不固定,所以来说,c/s比较b/s来说安全性相对较高。
从维护成本角度来讲c/s结构中需要用户下载专有的客户端软件,而b/s模式,客户端不需要下载任何用户界面,软件系统的改进和升级越来越频繁,b/s架构的产品明显体现着更为方便的特性。
b/s架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。
无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行。
所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。
今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。
从这一方面来说节约了开发成本。
2.3JavaScript与Ajax
JavaScript是Netscape开发的一种在客户端运行的、解释性的脚本语言,最早是在HTML网页上使用,用来为网页增加动态功能。
为了统一规格,JavaScript兼容于ECMA(EuropeanComputerManufacturesAssociation)标准,因此也称为ECMAScript。
JavaScript的关键字var、if、for、switch、break、continue、while支持数据类型的自动转换和强制转换。
Ajax(AsynchronousJavaScriptandXml)是异步的JavaScript和Xml,是一种用来改善用户体验的技术,它的实质是利用浏览器提供的一个特殊对象(Ajax对象)异步的向服务器发送请求,服务器送回部分数据(一般不再需要返回完整的页面),浏览器利用这些数据更新当前页面。
整个过程,页面无需刷新,不打断用户的操作获得Ajax对象要区分浏览器。
functiongetXhr(){
varxhr=null;
if(window.XMLHttpRequest){
//非IE浏览器
xhr=newXMLHttpRequest();
}else{
//IE浏览器
xhr=newActiveXObject('MicroSoft.XMLHttp');
}
returnxhr;
}
2.4系统主要路线
在数据库方面,我所设计的云笔记系统用到的是MySQL数据库,大致包括用户表,笔记本类型表,笔记本表,笔记表,笔记状态表,分享笔记表。
对于浏览器器端的设计,主要用HTML、CSS来实现,其中对于数据库的请求和获取数据库的信息并显示,主要会用到Ajax。
服务端代码主要采用SpringMVC(ModelViewController)来实现的。
MVC一种设计思想,是根据职责不同将程序中组件分成以下三个部分:
M(Model)模型负责业务处理(数据和逻辑),V(View)视图负责与用户的交互界面(可以接收和呈现数据),C(Controller)控制器负责协调M和V工作。
MVC思想现在有很多实现,可以自己使用JSP+Servlet+JavaBean搭建,也可以使用主流框架,例如SpringWebMVC,Struts2,WebWork,JSF等。
2.5运行环境要求
2.5.1硬件环境
服务端:
有足够大的内存可以运行数据库,MyEclipse和Chrome浏览器。
2.5.2软件环境
(1)浏览器端:
Chrome浏览器。
(2)服务端:
MySQL数据库、MyEclipse。
3.1各模块关系图
此系统设计主要由以下各功能组成,包括用户的登陆、用户对笔记以及笔记本信息的管理、用户退出登录及修改密码。
系统所包含的模块如图3-1所示:
图3-1功能模块
3.2数据库设计
3.2.1数据库列表
数据库我们采用MySQL数据库,所需要建立的表有:
(1)用户表(cn_user)存储登录系统的用户信息。
其中包括主键用户ID(cn_user_id)、用户名(cn_user_name)、密码(cn_user_password)、说明(cn_user_desc)。
(2)笔记本表(cn_notebook)笔记存储在笔记本中,笔记本存储在笔记本表中。
每个用户都可以有很多不同的笔记本,分别存储不同类别的笔记。
笔记本表中包括主键笔记本ID(cn_notebook_id)、用户ID(cn_user_id)、笔记本类型ID(cn_notebook_id)、笔记本名(cn_notebook_name)、笔记本说明(cn_notebook_desc)、创建日期(cn_notebook_createtime)。
(3)笔记本类型表(cn_notebook_type)笔记本有不同的类型,这些类型存储在笔记本类型表中,目前预置的所有笔记本类型包括收藏、回收站、活动、正常。
其中包括主键笔记本类型ID(cn_notebook_type_id)、笔记本类型名(cn_notebook_type_name)、笔记本类型说明(cn_notebook_type_desc)。
(4)笔记表(cn_note_id)是用来存储用户创建的所有笔记,在保存时需要存储用户的ID还有当前笔记所在的笔记本的ID。
笔记表中包括主键笔记ID(cn_note_id)、笔记本ID(cn_notebook_id)、用户ID(cn_user_id)、笔记标题(cn_note_tatle)、笔记内容(cn_note_body)、笔记创建时间(cn_note_createtime)。
(5)分享笔记表(cn_share)用户对于自己的笔记可以进行分享,分享后的笔记存储到此分享笔记表中。
其中包括主键共享ID(cn_share_id)、共享标题(cn_share_title)、共享内容(cn_share_body)、笔记id(cn_note_id)。
3.2.2数据库连接的实现
对于数据库的连接,本系统主要用到的是Spring整合MyBatis技术,IBatis是Apache组织推出的一款数据库操作框架。
2010该框架由Apache迁移到Google,变更为MyBatis。
MyBatis也是对JDBC技术的一个封装,可以简化数据库访问代码。
封装了获取连接、执行SQL、释放连接等过程封装了实体对象和SQL参数之间的自动映射(利用#{属性名}方式替代SQL中的?
)封装了查询结果集和实体对象之间的自动映射(结果集字段和实体对象属性名称保持一致)将SQL语句定义到XML文件因此使用MyBatis操作数据库,只要引入框架,定义实体类,提供SQL语句即可。
MyBatis执行过如下:
首先加载、解析配置文件(SqlMapConfig.xml和SQL定义的SqlMap.xml),然后将SQL语句提取封装成MappedStatement然后接收SQL参数利用SqlSession执行SQL操作根据id名字调用对应的MappedStatement对象,根据规则设置SQL参数,发送到数据库执行,如果是查询最后将结果集数据映射成Map,Enity对象返回。
MyBatis基本使用方法是SqlSessionFactoryBuilder读取XML配置文件,构建SqlSessionFactory对象,SqlSessionFactory用于创建SqlSession对象,SqlSession封装了数据库增删改查方法。
使用方法是引入mybatis和驱动开发包,src添加SqlMapConfig.xml主配,添加SqlMapper.xml定义SQL语句,根据表定义实体类获取SqlSession触发SQL操作。
使用Mapper映射器通过一个接口调用SQL首先编写一个EmpMapper接口,将EmpMapper.xml定义SQL的文件中namespace指定为包名.接口名,在EmpMapper接口定义方法,方法名与XML操作的id属性一致,方法参数与XML操作的parameterType类型一致,返回值参考resultType指定的类型,单行记录查询可以用resultType指定的类型,但是多行记录查询需要使用List
最后通过session.getMapper(EmpMapper.class)动态生成一个实现类,通过该对象触发SQL操作。
Spring与MyBatis结合,主要是由Spring管理数据库访问组件Dao,数据库访问组件主要是基于MyBatis实现,在Spring环境中使用MyBatis实现数据库访问组件过程是:
首先需要引入一个Spring和MyBatis整合的开发包mybatis-spring-1.2.2.jar。
在Spring配置中定义SqlSessionFactoryBean,等价于SqlSessionFactory放入Spring容器管理。
(不需要开发者利用手工创建SqlSessionFactory对象,需要开发者定义式注入连接信息和SQL定义的XML信息)在Spring配置中定义MapperFactoryBean,可以根据指定的Mapper接口生成一个Mapper实现类接口。
需引入引入开发包:
springioc,springaop,dbcp,mybatis,驱动,mybatis-spring.jar。
添加Spring框架的配置文件主要有applicationContext.xml,根据user表编写实体类User,编写UserMapper.xml(定义SQL语句),并且编写UserMapper接口(与UserMapper.xml映射),在applicationContext.xml中配置组件SqlSessionFactoryBean,Mapper
FactoryBean。
最后测试MapperFactoryBean生成的UserMapperDao实例。
对于数据库的连接代码如下:
(1)配置jdbc.properties文件:
url=jdbc:
mysql:
//localhost:
3306/cloud_note?
useUnicode=true&characterEncoding=utf-8
driver=com.mysql.jdbc.Driver
user=root
password=1234
(2)在applicationContext.xml中配置组件MapperFactoryBean,SqlSessionFactoryBean,DataSource。
--定义数据源-->
class="mons.dbcp.BasicDataSource" destroy-method="close"> --定义sqlSessionFactory--> class="org.mybatis.spring.SqlSessionFactoryBean"> value="classpath: com/tarena/dao/*.xml"/> --扫描DAO组件--> 3.3主要开发工具 本系统的主要开发工具是MyEclipse如果想要了解MyEclipse,首先应该先了解Eclipse,Eclipse是基于Java语言开源的并且可以扩展的操作平台。 Eclipse内置了一个标准的插件库,包括JavaDevelopmentTools即JDT,Eclipse首先来说源码是开放的,程序员都可以研究使用修改它,另外,Eclipse是可以扩展的,它不仅支持Java的开发,还包括PHP、C等很多语言的开发和使用,只需要下载相应的插件即可。 而且很多平台如Linux,windows等都支持Eclipse。 MyEclipse是Eclipse的加强版,它不仅继承了Eclipse的所有功能,而且能很好的处理在JavaEE和数据库的开发,因而我们能利用JavaEE中数据库和servlet来实现我们软件中后台的一些功能。 而且MyEclipse还内嵌了Tomcat,因此我们还可以直接将后台在其上进行发布。 4.功能模块 4.1登陆模块 (1)注册功能: ①业务逻辑: 用户名是3-20位字母、数字、下划线的组合,密码长度不能小于6位,确认密码和密码一致,用户名不能重复,在点击注册时验证所有的验证通过,则创建新用户注册成功后,自动跳转到登录页面。 ②分析请求: 在注册时发起请求,先验证用户名是否重复,若不重复则创建用户,否则则返回一些错误信息。 注册界面如图4-1所示: 图4-1注册界面 ③开发步骤: 首先在DAO中创建表cn_user,创建实体类User,创建UserMapper创建UserMapper.xml。 然后在Service中创建LoginService,验证用户名是否重复,创建用户。 最后在Controller中创建LoginController,并且调用LoginService处理请求并且给页面返回一些数据,该数据在控制层统一组装,最好所有Controller的方法返回的数据都有标准的格式。 主要代码如下: UserMapper.xml: parameterType="com.tarena.entity.User"> insertintocn_uservalues( #{cn_user_id}, #{cn_user_name} #{cn_user_password}, #{cn_user_token}, #{cn_user_desc} ) LoginService: /** *创建用户 */ publicbooleancreateUser(Useruser){ //校验用户名 if(this.checkUserName(user.getCn_user_name())){ //校验通过,创建用户 this.addUser(user); //给用户初始化笔记本 this.initNoteBook(user.getCn_user_id()); returntrue; }else{ //校验失败 returnfalse; } } /** *校验用户名 */ publicbooleancheckUserName(StringuserName){ if(userName==null) thrownewBusinessException("用户名不能为空."); Useruser=userMapper.findByName(userName); if(user==null) returntrue; else returnfalse; } /** *初始化笔记本 */ publicvoidinitNoteBook(StringuserId){ if(userId==null) thrownewBusinessException("参数为空."); //查询特殊的笔记本类型 List noteBookTypeMapper.findSpecialType(); //针对每种特殊类型,创建一个默认的笔记本 for(NoteBookTypetype: noteBookTypes){ NoteBookbook=newNoteBook(); book.setCn_notebook_id(UUIDUtil.getUID()); book.setCn_user_id(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 SpringMVC 笔记 系统