当前位置:文档之家› 基于SpringMVC的云笔记系统

基于SpringMVC的云笔记系统

基于SpringMVC的云笔记系统
基于SpringMVC的云笔记系统

河南科技学院

2015 届本科毕业论文(设计)

论文(设计)题目:基于SpringMVC的云笔记系统

学生姓名:杨冬

所在院系:信息工程学院

所学专业:计算机科学与技术

导师姓名:张丽君

完成时间:2015-05-10

摘要

本课题所实现的云笔记系统改变了传统的记录笔记的模式,采用云笔记系统,这种新式的方式使得用户在学习中更加方便快捷的记录,分享,收藏笔记。

本系统采用b/s开发模式,分为服务器端和浏览器端。在服务器端主采用MySQL数据库使用MyBatis技术访问数据库。使用Spring框架管理组件,整合MyBatis,处理一些通用通用的业务。使用MVC分层思想,将代码分为控制层,业务层,持久层和视图层,实现了登陆模块,笔记本模块,和笔记模块。登陆模块的主要包括登陆,注册,修改密码和退出登陆功能。笔记本模块主要包含新增,修改,删除功能。笔记模块包含查询,新增,修改,删除功能。在浏览器端主要采用Ajax处理客户端逻辑以及发送异步请求并实现了系统界面的一些动态效果。

关键词:Ajax,MySQL,MyBatis,SpringMVC,Spring,Java。

ABSTRACT

The article notes cloud system changed the pattern of traditional note taking, the cloud notes system, this new way allows users to more easily and quickly in the study record, share, used notes.

The system uses the b/s development model, divided into

server and browser. At the end of the main server using MySQL database access tothe database using MyBatis technology. The integration of MyBatis using the Spring framework, management component, some general https://www.doczj.com/doc/b39362466.html,ing the MVC hierarchical thinking, the code is divided into control layer, business layer, persistence layer and view layer, to achieve the login module, module of notebook, and notes module. The landing module includes login, registration, modify the password and exit thelogin function. The notebook module mainly consists of add, modify,delete function. Note module contains the query, add, modify, delete function. At the end of the browser uses Ajax client-side logic and sends an asynchronous request and the system interface of some of the dynamic effect.

Keywords: Spring Ajax, MySQL, MyBatis, SpringMVC, Spring, Java.

目录

1. 绪论 (4)

1.1项目背景及意义 (4)

1.2项目现状及趋势概述 (5)

2. 系统理论和技术路线 (5)

2.1 Java语言概述 (5)

2.2 b/s和c/s体系 (5)

2.3 JavaScript与Ajax (6)

2.4系统主要路线 (7)

2.5 运行环境要求 (7)

2.5.1 硬件环境 (7)

2.5.2 软件环境 (7)

3. 系统需求分析 (8)

3.1各模块关系图 (8)

3.2数据库设计 (8)

3.2.1 数据库列表 (8)

3.2.2数据库连接的实现 (9)

3.3 主要开发工具 (12)

4.功能模块 (12)

4.1登陆模块 (12)

4.2笔记本模块 (22)

4.3笔记模块 (25)

5.结论 (27)

谢词 (27)

参考文献 (27)

1.绪论

1.1项目背景及意义

因为互联网的快速发展,人们获得新知识的方法也变得多样化,在线学习应

运而生,为了让使用在线学习的人能更方便的记录笔记,云笔记项目因此诞生,云笔记是用于用户在进行学习时随时记录,分享,收藏笔记。云笔记系通过分布式解决方案使用户空间被无限放大。系统贴近贴近用户的使用习惯,期望达到达到无处不学习无处不笔记的效果。

1.2项目现状及趋势概述

就目前来看云笔记市场呈现的特点是用户群较小但是没有什么行业竞争其目前主要用于教育市场。但是互联网发展速度迅速,今后的生活,工作,学习也许都要和互联网打交道,但是互联网毕竟不是现实世界一些重要的信息,知识不能随时随地的记录,但是云笔记却解决了这些烦恼。云笔记起初用于在线学习的人群记录笔记,但是我相信不远的将来云笔记必将推向大众,成为人们日常生活不可或缺的一部分。

2. 系统理论和技术路线

2.1 Java语言概述

Java是SUN公司开发最初命名为Oak是一种小型系统的编程语言,随着互联网发展SUN公司改造了Oak并以“Java”名称正式发布。Java编程风格接近于C,C++语言,但不同的是Java是完全的面向对象程序设计语言,继承了C++语言面向对象技术的核心但是舍弃了指针,增加了垃圾回收机制。

JDK(Java Development Kit)是Java开发工具包,除了包含JRE(Java Runtime Environment)外还包含运行Java程序所需要的工具JDK。所以

JDK=JRE+编译、运行等开发工具。JRE:Java运行时环境除了包含JVM(Java Virtual Machine)外还提供了运行Java程序所需要的环境。JRE=JVM+Java系统类库 JVM是Java虚拟机。

Java开发过程简而言之就是首先使用一个文本编辑器编写扩展名为.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结构中需要用户下载专有的客户端软件,而b/s

模式,客户端不需要下载任何用户界面,软件系统的改进和升级越来越频繁,b/s 架构的产品明显体现着更为方便的特性。b/s架构的软件只需要管理服务器就行了,所有的客户端只是浏览器,根本不需要做任何的维护。无论用户的规模有多大,有多少分支机构都不会增加任何维护升级的工作量,所有的操作只需要针对服务器进行。所以客户机越来越“瘦”,而服务器越来越“胖”是将来信息化发展的主流方向。今后,软件升级和维护会越来越容易,而使用起来会越来越简单,这对用户人力、物力、时间、费用的节省是显而易见的,惊人的。从这一方面来说节约了开发成本。

2.3 JavaScript与Ajax

JavaScript是Netscape开发的一种在客户端运行的、解释性的脚本语言,最早是在HTML网页上使用,用来为网页增加动态功能。为了统一规格,JavaScript兼容于ECMA(European Computer Manufactures Association)标准,因此也称为ECMAScript。JavaScript的关键字var、if、for、switch、break、continue、while支持数据类型的自动转换和强制转换。

Ajax (Asynchronous JavaScript and Xml)是异步的JavaScript和Xml,是一种用来改善用户体验的技术,它的实质是利用浏览器提供的一个特殊对象(Ajax对象)异步的向服务器发送请求,服务器送回部分数据(一般不再需要返回完整的页面),浏览器利用这些数据更新当前页面。整个过程,页面无需刷新,不打断用户的操作获得Ajax对象要区分浏览器。

function getXhr(){

var xhr = null;

if(window.XMLHttpRequest){

//非IE浏览器

xhr = new XMLHttpRequest();

}else{

//IE浏览器

xhr = new ActiveXObject('MicroSoft.XMLHttp');

}

return xhr;

}

2.4系统主要路线

在数据库方面,我所设计的云笔记系统用到的是MySQL数据库,大致包括用户表,笔记本类型表,笔记本表,笔记表,笔记状态表,分享笔记表。对于浏览器器端的设计,主要用HTML、CSS来实现,其中对于数据库的请求和获取数据库的信息并显示,主要会用到Ajax。服务端代码主要采用Spring MVC(Model View Controller)来实现的。MVC一种设计思想,是根据职责不同将程序中组件分成以下三个部分:M(Model) 模型负责业务处理(数据和逻辑),V(View) 视图负责与用户的交互界面(可以接收和呈现数据),C(Controller) 控制器负责协调M和V工作。

MVC思想现在有很多实现,可以自己使用JSP+Servlet+JavaBean搭建,也可以使用主流框架,例如Spring Web MVC,Struts2,WebWork,JSF等。

2.5 运行环境要求

2.5.1 硬件环境

服务端:有足够大的内存可以运行数据库,MyEclipse和Chrome浏览器。

2.5.2 软件环境

(1)浏览器端:Chrome浏览器。

(2)服务端:MySQL数据库、MyEclipse 。

3. 系统需求分析

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实现类接口。需引入引入开发包:spring ioc,spring aop,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&charac terEncoding=utf-8

driver=com.mysql.jdbc.Driver

user=root

password=1234

(2)在applicationContext.xml中配臵组件MapperFactoryBean,SqlSessionFactoryBean,DataSource。

class="https://www.doczj.com/doc/b39362466.html,mons.dbcp.BasicDataSource"

destroy-method="close">

class="org.mybatis.spring.SqlSessionFactoryBean">

value="classpath:com/tarena/dao/*.xml"/>

class="org.mybatis.spring.mapper.MapperScannerConfigurer">

3.3 主要开发工具

本系统的主要开发工具是MyEclipse如果想要了解MyEclipse,首先应该先了解Eclipse,Eclipse是基于Java语言开源的并且可以扩展的操作平台。Eclipse内臵了一个标准的插件库,包括Java Development Tools 即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="https://www.doczj.com/doc/b39362466.html,er">

insert into cn_user values(

#{cn_user_id},

#{cn_user_name}

#{cn_user_password},

#{cn_user_token},

#{cn_user_desc}

)

LoginService:

/**

*创建用户

*/

public boolean createUser(User user) {

//校验用户名

if(this.checkUserName(user.getCn_user_name())) { //校验通过,创建用户

this.addUser(user);

//给用户初始化笔记本

this.initNoteBook(user.getCn_user_id());

return true;

} else {

//校验失败

return false;

}

}

/**

* 校验用户名

*/

public boolean checkUserName(String userName) { if (userName == null)

throw new BusinessException("用户名不能为空.");

User user = userMapper.findByName(userName);

if (user == null)

return true;

else

return false;

}

/**

* 初始化笔记本

*/

public void initNoteBook(String userId) {

if(userId == null)

throw new BusinessException("参数为空.");

// 查询特殊的笔记本类型

List noteBookTypes =

noteBookTypeMapper.findSpecialType();

// 针对每种特殊类型,创建一个默认的笔记本

for(NoteBookType type : noteBookTypes) {

NoteBook book = new NoteBook();

book.setCn_notebook_id(UUIDUtil.getUID());

book.setCn_user_id(userId);

book.setCn_notebook_type_id(type.getCn_notebook_type_id());

book.setCn_notebook_name(type.getCn_notebook_type_name());

book.setCn_notebook_createtime(

new Timestamp(System.currentTimeMillis()));

noteBookMapper.save(book);

}

LoginController:

//注册用户

public Result register(User user) {

boolean b = userService.createUser(user);

return new Result(b);

}

(2)登录功能:

①业务介绍:点击登录按钮时,需要进行客户端验证,验证用户名、密码不能为空,发送异步请求,访问服务端组件,在服务端对用户名、密码进行验证判断其是否正确,如果验证通过,则登录成功,将用户信息存入session。如果验证不通过,则登录失败,给页面返回一些错误信息,并提示给用户。

②分析请求:包含一次请求,即登录时进行验证,请求过程与注册过程一致。登录界面如图4-2所示:

图4-2 登录界面

③开发步骤:首先在DAO中的UserMapper创建findByName方法,然后在Service的LoginService里增加验证用户名和密码的方法,该方法的逻辑为:根据用户名查询用户,判断查询结果是否为null,如果查询结果为null说明用户名不存在返回错误信息,如果查询结果不为null,继续判断密码是否正确,密码正确则登录成功,密码错误则返回错误信息。最后我们在Controller中的LoginController中调用LoginService对用户名、密码进行验证,如果验证成功,将用户信息存入session。主要代码如下:

UserMapper.xml:

LoginService:

/**

* 校验用户名及密码

*/

public Map checkUser(String userName,

String pwd) {

Map map = new HashMap();

if(userName == null)

throw new BusinessException("用户名为空.");

if(pwd == null)

throw new BusinessException("密码为空.");

User user = userMapper.findByName(userName);

if(user == null) {

map.put("flag", SystemConstant.LOGIN_PASSWORD_ERROR);

map.put("msg", "用户名错误.");

}

else if (!user.getCn_user_password().equals(Md5Util.md5(pwd))) { map.put("flag", SystemConstant.LOGIN_PASSWORD_ERROR);

map.put("msg", "密码错误.");

} else {

map.put("flag", SystemConstant.LOGIN_SUCCESS);

map.put("msg", "登录成功.");

}

return map;

}

LoginController:

@RequestMapping("/login.do")

@ResponseBody

public Result login(String userName,

String password, HttpSession session) {

Map data =

userService.checkUser(userName, password);

if ("0".equals(data.get("flag").toString())) {

//登录成功

User user = userService.findUser(userName);

data.put("user", user);

session.setAttribute("user", user);

}

return new Result(data);

}

(3)退出登录:

①业务逻辑:注销当前用户的session将页面跳转到登录页。

②开发步骤:Controller:在LoginController中增加一个退出登录的

方法在该方法中将session注销。主要代码如下:

LoginController:

@RequestMapping("/login.do")

@ResponseBody

public Result login(String userName,

String password, HttpSession session) {

Map data =

userService.checkUser(userName, password);

if ("0".equals(data.get("flag").toString())) {

//登录成功

User user = userService.findUser(userName);

data.put("user", user);

session.setAttribute("user", user);

}

return new Result(data);

}

(4)修改密码:

①业务逻辑:原密码长度不能小于6位新密码长度不能小于6位确认新密码与新密码一致,发送异步请求访问服务端验证原密码是否正确如果原密码输入正确则修改密码,在回调函数中将页面跳转至登录页。修改密码退出登录界面如图4-3所示:

图4-3修改密码退出登录

②开发步骤:首先在DAO中的UserMapper中增加修改密码的方法,然后在Service中增加修改密码的业务需要先校验原密码再修改密码。最后在Controller中增加修改密码的方法该方法要接收页面传入的原密码和新密码,调用Service进行修改密码。主要代码如下:

UserMapper.xml:

parameterType="https://www.doczj.com/doc/b39362466.html,er">

update cn_user set

cn_user_name=#{cn_user_name},

cn_user_password=#{cn_user_password},

cn_user_token=#{cn_user_token},

cn_user_desc=#{cn_user_desc}

where cn_user_id=#{cn_user_id}

LoginService:

/**

* 修改用户

*/

public void update(User user) {

userMapper.update(user);

}

LoginController:

@RequestMapping("/changePassword.do")

@ResponseBody

public Result changePassword(String lastPassword,

String newPassword, HttpSession session) {

User user = (User) session.getAttribute("user");

if(user.getCn_user_password()

.equals(Md5Util.md5(lastPassword))) {

user.setCn_user_password(Md5Util.md5(newPassword));

userService.update(user);

return new Result("修改成功.");

} else {

return new Result("原密码输入有误.");

}

}

4.2笔记本模块

(1)查询普通笔记本:

①业务逻辑:发出异步请求查询出当前用户所有的普通笔记本。

SpringMVC深入总结

一、前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了。Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀。 官方的下载网址是:https://www.doczj.com/doc/b39362466.html,/download(本文使用是的Spring 3.0.5版本) Struts2也是比较优秀的MVC构架,优点非常多比如良好的结构。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降。Struts2的多层拦截器、多实例action性能都很好。可以参考我写的一篇关于Spring MVC与Struts2与Servlet比较的文章https://www.doczj.com/doc/b39362466.html,/admin/blogs/698217 Spring3 MVC的优点: 1、Spring3 MVC的学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。 2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分) 3、Spring3 MVC的灵活是你无法想像的,Spring的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。 Struts2的众多优点:略... (呵呵,是不是不公平?) 众多文章开篇时总要吹些牛,吸引一下读者的眼球,把读者的胃口调起来,这样大家才有兴趣接着往后看。本文也没能例外。不过保证你看了之后不会后悔定有收获。

SpringMVC配置的基本步骤

Springmvc框架配置步骤 小弟是个新手,有不对的地方请tell me,一起研究探讨。谢谢。 1062140832@https://www.doczj.com/doc/b39362466.html, 配置springmvc框架其实不是很难,要现有一个总体的认识,确定要分几步,每一步主要是干什么,不要太盲目。 以为web.xml是项目的入口,所以所有的配置文件,都必须引入到wem.xml中,不然,配置了等于没用。所以,要先从入口入手。 配置web.xml 1、首先引入springmvc-servlet.xml文件 springMVC org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/mvc/springmvc-servlet.xml 1 2、将spring加载到web.xml中 org.springframework.web.context.ContextLoaderListener 3、配置上下文路径 contextConfigLocation /WEB-INF/spring/spring.xml,/WEB-INF/spring/spring-*.xml 说明:如果有很多的关于spring的配置文件,建议分开写,比如事务一个文件(spring-transaction.xml),springmvc-hibernate.xml一个配置文件,这样方便读写。

2.Spring-mvc框架结构及执行流程

Spring mvc架构及执行流程一、请求处理流程图 二、执行流程说明 三、组件说明

说明:在springmvc的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc 的三大组件。 需要用户编写的组件有handler、view 四、Spring MVC配置 1、组件扫描器:使用组件扫描器省去在spring容器配置每个controller类,使用 自动扫描标记@controller的配置如下:

2、RequestMappingHandlerMapping:注解处理器映射器,对类中标记@RequestMapping 的方法进行映射,根据RequestMapping定义的url匹配RequestMapping标记的方 法,匹配成功返回HandlerMethod对象给前端控制器,HandlerMethod对象中封装 注解描述: @RequestMapping:定义请求url到处理器功能方法的映射 3、RequestMappingHandlerAdapter:注解式处理器适配器,对标记@RequestMapping 的方法进行适配。 从spring3.1版本开始,废除了AnnotationMethodHandlerAdapter的使用,推荐使用 4、:spring mvc 使用自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter,可用在spring-mvc.xml 配置文件总使用替代注解处理器和适配器的配置。 5、视图解析器 InternalResourceViewResolver:支持JSP视图解析 viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,所以classpath中必须包含jstl 的相关jar 包。此属性可以不设置,默认为JstlView。 prefix 和suffix:查找视图页面的前缀和后缀,最终视图的址为:

技能 用有道云笔记做时间管理工作学习更有效

技能get√:用有道云笔记做时间管理,工作、学习更有效 Finle 技能get√:用有道云笔记做时间管理,工作、学习更有效 02/10/2014 / Life、Uncategorized / 70 Comments /1,124,194 Views / 5.00 / 5 51 V ote 如题,这真是切身体会!此前我一直用的是手机中的便笺小工具(Meizu MX),非常方便、省时快捷,用着和记事本(实物)差不多。自己可以有事没事儿就解锁屏幕看看自己当天还有哪些待办事项~ 此法运用了约大半年时间,其间我并没有每天都规划自己的时间,经过这么久的使用,在现在看来:规划过的工作(学习或其他)效率远远高于未做时间规划的工作效率!

因而,开年以后,我一直想着更系统的学习下怎样规划自己的时间,以期能更充分的利用。第一个想到的自然是应用更好的软件来管理~ 于是今儿上午Google一番,发现:最好的时间管理工具其实是:记事本(实物)!因为:繁杂的工具反而更浪费时间,而用记事本写日程表不仅“方便”,能随时记录。而且记得牢,不易忘记。 但,用记事本是不是略显“傻逼”了点?所以我想了想,还是用有道云笔记吧~它的优点: 随时记录、更改云同步多平台误删后可恢复(回收站,这正是便笺的不足)—————————————————————————————————– 另外,关于时间管理,有几个常见的误区,罗列如下(以下转载自知乎) 1、时间管理的目的为了在短时间之内做更多的事,提高工作效率 解释:我认为时间管理的目的是让你来慢一点,好好的享受生活,达到生活、工作、家庭、社会各个方面的平衡。多做一点自己喜欢和让自己幸福的事。

springmvc原理

1.springmvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller. 3.DispatcherServlet请请求提交到目标Controller 4.Controller进行业务逻辑处理后,会返回一个ModelAndView 5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象 6.视图对象负责渲染返回给客户端。 为什么要使用Spring: AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到应用程序代码中。使用AOP后,公共服务(比如日志、持久性、事务等)就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂性。 IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协作对象。正如单词倒置所表明的,IOC 就像反过来的JNDI。没有使用一堆抽象工厂、服务定位器、单元素(singleton)和直接构造(straightconstruction),每一个对象都是用其协作对象构造的。因此是由容器管理协作对象(collaborator)。 Spring即使一个AOP框架,也是一IOC容器。Spring 最好的地方是它有助于您替换对象。有了Spring,只要用JavaBean属性和配置文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。 Spring 框架是一个分层架构,由7 个定义良好的模块组成。Spring模块构建在核心容器之上,核心容器定义了创建、配置和管理bean 的方式,如图 1 所示。 组成Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下: 核心容器:核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 Spring 上下文:Spring 上下文是一个配置文件,向Spring框架提供上下文信息。Spring 上下文包括企业服务,例如JNDI、EJB、电子邮件、国际化、校验和调度功能。 Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了Spring框架中。所以,可以很容易地使Spring 框架管理的任何对象支持AOP。Spring AOP

学习SpringMVC系列教程(一)Spring MVC入门

2.1、Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。 另外还有一种基于组件的、事件驱动的Web框架在此就不介绍了,如Tapestry、JSF等。 Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。 2.2、Spring Web MVC能帮我们做什么 √让我们能非常简单的设计出干净的Web层和薄薄的Web层; √进行更简洁的Web层的开发;

√天生与Spring框架集成(如IoC容器、AOP等); √提供强大的约定大于配置的契约式编程支持; √能简单的进行Web层的单元测试; √支持灵活的URL到页面控制器的映射; √非常容易与其他视图技术集成,如Velocity、FreeMarker等等,因为模型数据不放在特定的API里,而是放在一个Model里(Map数据结构实现,因此很容易被其他框架使用); √非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API; √提供一套强大的JSP标签库,简化JSP开发; √支持灵活的本地化、主题等解析; √更加简单的异常处理; √对静态资源的支持; √支持Restful风格。 2.3、Spring Web MVC架构

spring MVC配置详解

牧涛 --<-<-<@态度决定一切→_→。。。 ?博客园 ?首页 ?新闻 ?新随笔 ?联系 ?管理 ?订阅 随笔- 171 文章- 3 评论- 79 spring MVC配置详解 现在主流的Web MVC框架除了Struts这个主力外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。 一、Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar、spring-webmvc.jar、commons-logging.jar、cglib -nodep-2.1_3.jar Hibernate 3.6.8:hibernate3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、a ntlr-2.7.6.jar、commons-collections-3.1、dom4j-1.6.1.jar、javassist-3.12.0.G A.jar、jta-1.1.jar、slf4j-api-1.6.1.jar、slf4j-nop-1.6.4.jar、相应数据库的驱动jar 包 SpringMVC是一个基于DispatcherServlet(分发器)的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler,Handler处理以后再返回相应的视图(View)和模型(Model),返回的视图和模型都可以不指定,即可以只返回Model或只返回View或都不返回。 DispatcherServlet是继承自HttpServlet的,既然SpringMVC是基于DispatcherSe rvlet的,那么我们先来配置一下DispatcherServlet,好让它能够管理我们希望它管理的内容。HttpServlet是在web.xml文件中声明的。 spring org.springframework.web.servlet.DispatcherServlet< /servlet-class>