

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、二01届本科毕业论文(设计)论文(设计)题目基于SpringMVC的云笔记系统学生姓名:杨冬所在院系:信息工程学院所学专业:计算机科学与技术导师姓名:张丽君完成时间:2015-05-10i摘要本课题所实现的云笔记系统改变了传统的记录笔记的模式,采用云笔记系统,这种新式的方式使得用户在学习中更加方便快捷的记录,分享,收藏笔记。本系统采用b/s开发模式,分为服务器端和浏览器端。在服务器端主采用MySQL数据库使用MyBatis技术访问数据库。使用Spring框架管理组件,整合MyBatis,处理一些通用通用的业务。使用MVC分层思想,将代码分为控制层,业务层,持久层和视图层,实现了登陆模块,笔记本
2、模块,和笔记模块。登陆模块的主要包括登陆,注册,修改密码和退出登陆功能。笔记本模块主要包含新增,修改,删除功能。笔记模块包含查询,新增,修改,删除功能。在浏览器端主要采用Ajax处理客户端逻辑以及发送异步请求并实现了系统界面的一些动态效果。关键词:Ajax,MySQL,MyBatis,SpringMVC,Spring,Java。ABSTRACTThearticlenotescloudsystemchangedthepatternoftraditionalnotetaking,thecloudnotessystem,thisnewwayallowsuserstomoreeasilyandquic
3、klyinthestudyrecord,share,usednotes.Thesystemusestheb/sdevelopmentmodel,dividedintoserverandbrowser.AttheendofthemainserverusingMySQLdatabaseaccesstothedatabaseusingMyBatistechnology.TheintegrationofMyBatisusingtheSpringframework,managementcomponent,somegeneralbusiness.UsingtheMVChierarchicalthinkin
4、g,thecodeisdividedintocontrollayer,businesslayer,persistencelayerandviewlayer,toachievetheloginmodule,moduleofnotebook,andnotesmodule.Thelandingmoduleincludeslogin,registration,modifythepasswordandexittheloginfunction.Thenotebookmodulemainlyconsistsofadd,modify,deletefunction.Notemodulecontainsthequ
5、ery,add,modify,deletefunction.AttheendofthebrowserusesAjaxclient-sidelogicandsendsanasynchronousrequestandthesysteminterfaceofsomeofthedynamiceffect.Keywords:SpringAjax,MySQL,MyBatis,SpringMVC,Spring,Java.目录1. 绪论41.1项目背景及意义41.2项目现状及趋势概述52. 系统理论和技术路线52.1 Java语言概述52.2 b/s和c/s体系52.3 JavaScript与Ajax62.4
6、系统主要路线72.5运行环境要求72.5.1硬件环境72.5.2软件环境73. 系统需求分析83.1各模块关系图83.2数据库设计83.2.1数据库列表83.2.2数据库连接的实现93.3主要开发工具124. 功能模块124.1登陆模块124.2笔记本模块224.3笔记模块255. 结论27谢词27参考文献271. 绪论11项目背景及意义因为互联网的快速发展,人们获得新知识的方法也变得多样化,在线学习应运而生,为了让使用在线学习的人能更方便的记录笔记,云笔记项目因此诞生,云笔记是用于用户在进行学习时随时记录,分享,收藏笔记。云笔记系通过分布式解决方案使用户空间被无限放大。系统贴近贴近用户的使用
7、习惯,期望达到达到无处不学习无处不笔记的效果。1.2项目现状及趋势概述就目前来看云笔记市场呈现的特点是用户群较小但是没有什么行业竞争其目前主要用于教育市场。但是互联网发展速度迅速,今后的生活,工作,学习也许都要和互联网打交道,但是互联网毕竟不是现实世界一些重要的信息,知识不能随时随地的记录,但是云笔记却解决了这些烦恼。云笔记起初用于在线学习的人群记录笔记,但是我相信不远的将来云笔记必将推向大众,成为人们日常生活不可或缺的一部分。2. 系统理论和技术路线2.1 Java语言概述Java是SUN公司开发最初命名为Oak是一种小型系统的编程语言,随着互联网发展SUN公司改造了Oak并以“Java”名
8、称正式发布。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开发过程简而言之就是首先使用一个文本
9、编辑器编写扩展名为.Java的源文件,然后用Java编译器把扩展名为.Java的源文件编译为.class,最后JVM加载.class并运行.class。不同的平台使用不同的JVM所以,JVM屏蔽了平台之间的差异,所以实现了跨平台一次编译到处使用。2.2 b/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结构中需
10、要用户下载专有的客户端软件,而b/s模式,客户端不需要下载任何用户界面,软件系统的改进和升级越来越频繁,b/s架构的产品明显体现着更为方便的特性。b/s架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。从这一方面来说节约了开发成本。2.3 JavaScript与AjaxJavaS
11、cript是Netscape开发的一种在客户端运行的、解释性的脚本语言,最早是在HTML网页上使用,用来为网页增加动态功能。为了统一规格,JavaScript兼容于ECMA(EuropeanComputerManufacturesAssociation)标准,因此也称为ECMAScript。JavaScript的关键字var、if、for、switch、break、continue、while支持数据类型的自动转换和强制转换。Ajax(AsynchronousJavaScriptandXml)是异步的JavaScript和Xml,是一种用来改善用户体验的技术,它的实质是利用浏览器提供的一个特殊
12、对象(Ajax对象)异步的向服务器发送请求,服务器送回部分数据(一般不再需要返回完整的页面),浏览器利用这些数据更新当前页面。整个过程,页面无需刷新,不打断用户的操作获得Ajax对象要区分浏览器。functiongetXhr()varxhr=null;if(window.XMLHttpRequest)/非IE浏览器xhr=newXMLHttpRequestO;else/IE浏览器xhr=newActiveXObject('MicroSoft.XMLHttp');returnxhr;2.4系统主要路线在数据库方面,我所设计的云笔记系统用到的是MySQL数据库,大致包括用户表,笔记
13、本类型表,笔记本表,笔记表,笔记状态表,分享笔记表。对于浏览器器端的设计,主要用HTML、CSS来实现,其中对于数据库的请求和获取数据库的信息并显示,主要会用到Ajax。服务端代码主要采用SpringMVC(ModelViewController)来实现的。MVC一种设计思想,是根据职责不同将程序中组件分成以下三个部分:M(Model)模型负责业务处理(数据和逻辑),V(View)视图负责与用户的交互界面(可以接收和呈现数据),C(Controller)控制器负责协调M和V工作。MVC思想现在有很多实现,可以自己使用JSP+Servlet+JavaBean搭建,也可以使用主流框架,例如Spri
14、ngWebMVC,Struts2,WebWork,JSF等。2.5运行环境要求2.5.1硬件环境服务端:有足够大的内存可以运行数据库,MyEclipse和Chrome浏览器。2.5.2软件环境(1) 浏览器端:Chrome浏览器。(2) 服务端:MySQL数据库、MyEclipse。3. 系统需求分析31各模块关系图此系统设计主要由以下各功能组成,包括用户的登陆、用户对笔记以及笔记本信息的管理、用户退出登录及修改密码。系统所包含的模块如图3-1所示:登录模块笙记本模块笔记模块-,查询笙记本创建笙记本总改笔记本別除笔记本分享笔记创建笔记查询笔记删除笔记功能模块图3-13.2数据库设计321数据库
15、列表数据库我们采用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)、笔
16、记本说明(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。笔记表中包括主键笔记I
17、D(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)o322数据库连接的实现对于数据库的连接,本系统主要用到的是Spring整合MyBatis技术,I
18、Batis是Apache组织推出的一款数据库操作框架。2010该框架由Apache迁移到Google,变更为MyBatis。MyBatis也是对JDBC技术的一个封装,可以简化数据库访问代码。封装了获取连接、执行SQL、释放连接等过程封装了实体对象和SQL参数之间的自动映射(利用#属性名方式替代SQL中的?)封装了查询结果集和实体对象之间的自动映射(结果集字段和实体对象属性名称保持一致)将SQL语句定义到XML文件因此使用MyBatis操作数据库,只要引入框架,定义实体类,提供SQL语句即可。MyBatis执行过如下:首先加载、解析配置文件(SqlMapConfig.xml和SQL定义的Sql
19、Map.xml),然后将SQL语句提取封装成MappedStatement然后接收SQL参数利用SqlSession执行SQL操作根据id名字调用对应的MappedStatement对象,根据规则设置SQL参数,发送到数据库执行,如果是查询最后将结果集数据映射成Map,Enity对象返回。MyBatis基本使用方法是SqlSessionFactoryBuilder读取XML配置文件,构建SqlSessionFactory对象,SqlSessionFactory用于创建SqlSession对象,SqlSession封装了数据库增删改查方法。使用方法是引入mybatis和驱动开发包,src添加Sq
20、lMapConfig.xml主配,添加SqlMapper.xml定义SQL语句,根据表定义实体类获取SqlSession触发SQL操作。使用Mapper映射器通过一个接口调用SQL首先编写一个EmpMapper接口,将EmpMapper.xml定义SQL的文件中namespace指定为包名.接口名,在EmpMapper接口定义方法,方法名与XML操作的id属性一致,方法参数与XML操作的parameterType类型一致,返回值参考resultType指定的类型,单行记录查询可以用resultType指定的类型,但是多行记录查询需要使用List<resultType指定的类型>。最
21、后通过session.getMapper(EmpMapper.class)动态生成一个实现类,通过该对象触发SQL操作。Spring与MyBatis结合,主要是由Spring管理数据库访问组件Dao,数据库访问组件主要是基于MyBatis实现,在Spring环境中使用MyBatis实现数据库访问组件过程是:首先需要引入一个Spring和MyBatis整合的开发包mybatis-spring-1.2.2.jar。在Spring配置中定义SqlSessionFactoryBean,等价于SqlSessionFactory放入Spring容器管理。(不需要开发者利用手工创建SqlSessionFac
22、tory对象,需要开发者定义式注入连接信息和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.x
23、ml中配置组件SqlSessionFactoryBean,MapperFactoryBean。最后测试MapperFactoryBean生成的UserMapperDao实例。对于数据库的连接代码如下:(1)配置perties文件:url=jdbc:mysql:/localhost:3306/cloud_note?useUnicode=true&characterEncoding=utf-8driver=com.mysql.jdbc.Driveruser=rootpassword=1234(2)在applicationContext.xml中配置组件MapperFacto
24、ryBean,SqlSessionFactoryBean,DataSource。<!-定义数据源-><beanid="ds"class="mons.dbcp.BasicDataSource"destroy-method="close">propertyname="url"value="#jdbc.url"/>propertyname="driverClassName"value="#jdbc.driver"/>prope
25、rtyname="username"value="#jdbc.user"/>propertyname="password"value="#jdbc.password"/></bean><!-定义sqlSessionFactory><beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><propertyname="da
26、taSource"ref="ds"/><propertyname="mapperLocations"value="classpath:com/tarena/dao/*.xml"/></bean><!扫描DAO组件-><beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer"><propertyname="basePackage"value="com.t
27、arena.dao"/></bean>3.3主要开发工具本系统的主要开发工具是MyEclipse如果想要了解MyEclipse,首先应该先了解Eclipse,Eclipse是基于Java语言开源的并且可以扩展的操作平台。Eclipse内置了一个标准的插件库,包括JavaDevelopmentTools即JDT,Eclipse首先来说源码是开放的,程序员都可以研究使用修改它,另外,Eclipse是可以扩展的,它不仅支持Java的开发,还包括PHP、C等很多语言的开发和使用,只需要下载相应的插件即可。而且很多平台如Linux,windows等都支持Eclipse。MyE
28、clipse是Eclipse的加强版,它不仅继承了Eclipse的所有功能,而且能很好的处理在JavaEE和数据库的开发,因而我们能利用JavaEE中数据库和servlet来实现我们软件中后台的一些功能。而且MyEclipse还内嵌了Tomcat,因此我们还可以直接将后台在其上进行发布。4功能模块4.1登陆模块(1) 注册功能: 业务逻辑:用户名是3-20位字母、数字、下划线的组合,密码长度不能小于6位,确认密码和密码一致,用户名不能重复,在点击注册时验证所有的验证通过,则创建新用户注册成功后,自动跳转到登录页面。 分析请求:在注册时发起请求,先验证用户名是否重复,若不重复则创建用户,否则则返
29、回一些错误信息。注册界面如图4-1所示:图4-1注册界面 开发步骤:首先在DAO中创建表cn_user,创建实体类User,创建UserMapper创建UserMapper.xml。然后在Service中创建LoginService,验证用户名是否重复,创建用户。最后在Controller中创建LoginController,并且调用LoginService处理请求并且给页面返回一些数据,该数据在控制层统一组装,最好所有Controller的方法返回的数据都有标准的格式。主要代码如下:UserMapper.xml:<insertid="save"parameterTy
30、pe="com.tarena.entity.User">insertintocn_uservalues(#cn_user_id,#cn_user_name#cn_user_password,#cn_user_token,#cn_user_desc)</insert>LoginService:/*创建用户*/publicbooleancreateUser(Useruser)/校验用户名if(this.checkUserName(user.getCn_user_name()/校验通过,创建用户this.addUser(user);/给用户初始化笔记本this.
31、initNoteBook(user.getCn_user_id();returntrue;else/校验失败returnfalse;/*校验用户名*/publicbooleancheckUserName(StringuserName)if(userName=null)thrownewBusinessException("用户名不能为空.");Useruser=userMapper.findByName(userName);if(user=null)returntrue;elsereturnfalse;/*初始化笔记本*/publicvoidinitNoteBook(Stri
32、nguserId)if(userld=null)thrownewBusinessException("参数为空.");/查询特殊的笔记本类型List<NoteBookType>noteBookTypes=noteBookTypeMapper.findSpecialTypeO;/针对每种特殊类型,创建一个默认的笔记本for(NoteBookTypetype:noteBookTypes)NoteBookbook=newNoteBook();book.setCn_notebook_id(UUIDUtil.getUID();book.setCn_user_id(user
33、Id);book.setCn_notebook_type_id(type.getCn_notebook_type_id();book.setCn_notebook_name(type.getCn_notebook_type_name();book.setCn_notebook_createtime(newTimestamp(System.currentTimeMillisO);noteBookMapper.save(book);LoginController:/注册用户publicResultregister(Useruser)booleanb=userService.createUser(u
34、ser);returnnewResult(b);(2) 登录功能: 业务介绍:点击登录按钮时,需要进行客户端验证,验证用户名、密码不能为空,发送异步请求,访问服务端组件,在服务端对用户名、密码进行验证判断其是否正确,如果验证通过,则登录成功,将用户信息存入session。如果验证不通过,则登录失败,给页面返回一些错误信息,并提示给用户。 分析请求:包含一次请求,即登录时进行验证,请求过程与注册过程一致。登录界面如图4-2所示:图4-2登录界面 开发步骤:首先在DAO中的UserMapper创建findByName方法,然后在Service的LoginService里增加验证用户名和密码的方法,
35、该方法的逻辑为:根据用户名查询用户,判断查询结果是否为null,如果查询结果为null说明用户名不存在返回错误信息,如果查询结果不为null,继续判断密码是否正确,密码正确则登录成功,密码错误则返回错误信息。最后我们在Controller中的LoginController中调用LoginService对用户名、密码进行验证,如果验证成功,将用户信息存入session。主要代码如下:UserMapper.xml:<selectid="findByName"parameterType="string"/*resultType是指返回值类型*/resul
36、tType="com.tarena.entity.User">select*fromcn_userwherecn_user_name=#userName</select>LoginService:/*校验用户名及密码*/publicMap<String,Object>checkUser(StringuserName,Stringpwd)Map<String,Object>map=newHashMap<String,Object>();if(userName=null)thrownewBusinessException(&
37、quot;用户名为空.");if(pwd=null)thrownewBusinessException("密码为空.");Useruser=userMapper.findByName(userName);if(user=null)map.put("flag",SystemConstant.LOGIN_PASSWORD_ERROR);map.put("msg","用户名错误.");elseif(!user.getCn_user_password().equals(Md5Util.md5(pwd)map.pu
38、t("flag",SystemConstant.LOGIN_PASSWORD_ERROR);map.put("msg","密码错误.");elsemap.put("flag",SystemConstant.LOGIN_SUCCESS);map.put("msg","登录成功.");returnmap;LoginController:RequestMapping("/login.do")ResponseBodypublicResultlogin(String
39、userName,Stringpassword,HttpSessionsession)Map<String,Objectdata=userService.checkUser(userName,password);if("0".equals(data.get("flag").toString()/登录成功Useruser=userService.findUser(userName);data.put("user",user);session.setAttribute("user",user);returnnew
40、Result(data);(3) 退出登录: 业务逻辑:注销当前用户的session将页面跳转到登录页。 开发步骤:Controller:在LoginController中增加一个退出登录的方法在该方法中将session注销。主要代码如下:LoginController:RequestMapping("/login.do")ResponseBodypublicResultlogin(StringuserName,Stringpassword,HttpSessionsession)Map<String,Object>data=userService.checkUs
41、er(userName,password);if("0".equals(data.get("flag").toString()/登录成功Useruser=userService.findUser(userName);data.put("user",user);session.setAttribute("user",user);returnnewResult(data);(4) 修改密码:业务逻辑:原密码长度不能小于6位新密码长度不能小于6位确认新密码与新密码一致,发送异步请求访问服务端验证原密码是否正确如果原密码输
42、入正确则修改密码,在回调函数中将页面跳转至登录页。修改密码退出登录界面如图4-3所示:活动Q|&储改密码»退出登录图4-3修改密码退出登录开发步骤:首先在DAO中的UserMapper中增加修改密码的方法,然后在Service中增加修改密码的业务需要先校验原密码再修改密码。最后在Controller中增加修改密码的方法该方法要接收页面传入的原密码和新密码,调用Service进行修改密码。主要代码如下:UserMapper.xml:<updateid="update"parameterType="com.tarena.entity.User&
43、quot;>updatecn_usersetcn_user_name=#cn_user_name,cn_user_password=#cn_user_password,cn_user_token=#cn_user_token,cn_user_desc=#cn_user_descwherecn_user_id=#cn_user_id</update>LoginService:/*修改用户*/publicvoidupdate(Useruser)userMapper.update(user);LoginController:RequestMapping("/changeP
44、assword.do")ResponseBodypublicResultchangePassword(StringlastPassword,StringnewPassword,HttpSessionsession)Useruser=(User)session.getAttribute("user");if(user.getCn_user_password().equals(Md5Util.md5(lastPassword)user.setCn_user_password(Md5Util.md5(newPassword);userService.update(use
45、r);returnnewResult("修改成功.");elsereturnnewResult("原密码输入有误.");4.2笔记本模块(1)查询普通笔记本:业务逻辑:发出异步请求查询出当前用户所有的普通笔记本。开发步骤:首先在DAO代码中增加根据用户ID查询普通笔记本的方法。然后在Service中增加查询普通笔记本的方法。最后在Controller中增加方法处理查询普通笔记本的请求。主要代码如下:NoteBookMapper.xml:<selectid="findNormalNoteBook"parameterType=&qu
46、ot;string"resultType="com.tarena.entity.NoteBook">select*fromcn_notebookwherecn_user_id=#userldandcn_notebook_type_idin(selectcn_notebook_type_idfromcn_notebook_typewherecn_notebook_type_codein('normal')orderbycn_notebook_createtimedesc</select>NoteBookService:/*查询用户所
47、有的普通笔记本*/publicList<NoteBook>findNormalNoteBook(StringuserId)if(userld=null)thrownewBusinessException("参数为空.");returnnoteBookMapper.findNormalNoteBook(userld);NoteBookController:RequestMapping("/findNormal.do")ResponseBodypublicResultfindNormal(HttpSessionsession)Useruser=(
48、User)session.getAttribute("user");List<NoteBook>list=noteBookService.findNormalNoteBook(user.getCn_user_id();returnnewResult(list);(2)查询特殊笔记本: 业务逻辑:在后续的业务中,我们需要点击默认笔记本、回收站、收藏夹、活动列表这些按钮,然后将点击的笔记本下的笔记查询出来。查询时需要取得该笔记本的ID。 开发步骤:首先在DAO中增加一个方法,查询出指定用户的所有特殊笔记本。然后在Service中增加查询特殊笔记本的方法。最后在Con
49、troller中增加处理查询特殊笔记本请求的方法。主要代码展示如下:NoteBookMapper.xml:<selectid="findSpecialNoteBook"parameterType="string"resultType="com.tarena.entity.NoteBook">selectb.*,_notebook_type_codefromcn_notebookbinnerjoincn_notebook_typet_notebook_type_id=_notebook_type_id_user_id=#us
50、erId_notebook_type_codein('favorites','recycle','action','push')</select>NoteBookService:publicMap<String,NoteBook>findSpecialNoteBook(Stringuserid)if(userId=null)thrownewBusinessException("参数为空.");Map<String,NoteBook>result=newHashMap<S
51、tring,NoteBook>();List<NoteBook>list=noteBookMapper.findSpecialNoteBook(userld);for(NoteBooknb:list)result.put(nb.getCn_notebook_type_code(),nb);returnresult;NoteBookController:RequestMapping("/findSpecial.do")ResponseBodypublicResultfindSpecial(HttpSessionsession)Useruser=(User)session.getAttribute("user");Map<String,NoteBook>map=noteBookService.findSpecialNoteBook(user.getCn_user_id();return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB23-T2849-2021-公共视频监控系统监控杆体施工规范-黑龙江省
- 服装瑕疵检查方案(3篇)
- 商贸公司启动方案(3篇)
- 舞蹈培训招生方案(3篇)
- 学校学生定位管理制度
- 公司理赔指标管理制度
- 工程检测中心管理制度
- 跨境运输督查方案(3篇)
- 总经理绩效方案(3篇)
- DB62T 4329-2021 油菜品种 陇油15号
- 4.1.1喀斯特地貌课件高中地理人教版(2019)必修一
- 微信解除保全申请书
- 中国电子鼻行业发展环境、市场运行格局及投资前景研究报告(2025版)
- 《资本论解读》课件
- 《上一堂朴素的语文课》读书交流
- 《声学构造》课件
- JJF(黔) 86-2024 液体流量计在线校准规范
- 部编版语文小升初复习之拼音百题训练(一)
- 《中华优传统文化》课程标准
- 建设法规考试题及答案期末考试
- 【MOOC】水墨构成-哈尔滨师范大学 中国大学慕课MOOC答案
评论
0/150
提交评论