- 博客(287)
- 资源 (20)
- 收藏
- 关注
原创 【SpringMVC学习11】SpringMVC中的拦截器
Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理。本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用方法。1. springmvc拦截器的定义和配置1.1 springmvc拦截器的定义 在springmvc中,定义拦截器要实现HandlerInterceptor接口,并实现该接口中提
2016-06-28 07:44:41
27685
5
原创 【SpringMVC学习10】SpringMVC对RESTfull的支持
RESTful架构,就是目前流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。RESTful架构对url进行规范,写RESTful格式的url是什么样子的呢?我们一般请求的url是类似这样子的: http://...../xxx.action?id=001&type=aaa 而REST的url风格是什么样子呢?一般它类似于: http://
2016-06-26 20:21:58
13375
5
原创 【SpringMVC学习09】SpringMVC与前台的json数据交互
json数据格式在接口调用中、html页面中比较常用,json格式比较简单,解析也比较方便,所以使用很普遍。在springmvc中,也支持对json数据的解析和转换,这篇文章主要总结一下springmvc中如何和前台交互json数据。1. 两种交互形式springmvc和前台交互主要有两种形式,如下图所示: 可以看出,前台传过来的方式有两种,一种是传json格式的数据过来,另一种
2016-06-25 18:50:32
36221
7
原创 【SpringMVC学习08】SpringMVC中实现文件上传
之前有写过一篇struts2实现的文件上传,这一篇博文主要来总结下springmvc实现文件上传的步骤。首先来看一下单个文件的上传,然后再来总结下多个文件上传。1. 环境准备 springmvc上传文件的功能需要两个jar包的支持(点我下载),如下 2. 单个文件的上传2.1 前台页面 简单的写一下前台页面,注意一点的是form表单中别忘了写enctype="multip
2016-06-24 20:56:38
12654
1
原创 【SpringMVC学习07】SpringMVC中的统一异常处理
我们知道,系统中异常包括两类:编译时异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发、测试通过手段减少运行时异常的发生。在开发中,不管是dao层、service层还是controller层,都有可能抛出异常,在springmvc中,能将所有类型的异常处理从各处理过程解耦出来,既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维
2016-06-23 20:47:57
57707
7
原创 【SpringMVC学习06】SpringMVC中的数据校验
这一篇博文主要总结一下springmvc中对数据的校验。在实际中,通常使用较多是前端的校验,比如页面中js校验,对于安全要求较高的建议在服务端也要进行校验。服务端校验可以是在控制层conroller,也可以是在业务层service,controller校验页面请求的参数的合法性,在服务端控制层conroller的校验,不区分客户端类型(浏览器、手机客户端、远程调用);service层主要校验关键业
2016-06-22 20:30:27
40006
3
原创 【SpringMVC学习05】SpringMVC中的参数绑定总结
众所周知,springmvc是用来处理页面的一些请求,然后将数据再通过视图返回给用户的,前面的几篇博文中使用的都是静态数据,为了能快速入门springmvc,在这一篇博文中,我将总结一下springmvc中如何接收前台页面的参数,即springmvc中的参数绑定问题。1. 参数绑定的过程我们可以回忆一下,在struts2中,是通过在Action中定义一个成员变量来接收前台传进来的参数,而在sprin
2016-06-21 20:08:05
50543
16
原创 【SpringMVC学习04】Spring、MyBatis和SpringMVC的整合
前两篇springmvc的文章中都没有和mybatis整合,都是使用静态数据来模拟的,但是springmvc开发不可能不整合mybatis,另外mybatis和spring的整合我之前学习mybatis的时候有写过一篇,但是仅仅是整合mybatis和spring,所以这篇文章我系统的总结一下spring、mybatis和springmvc三个框架的整合(后面学习到maven时,我会再写一篇使用ma
2016-06-20 19:51:05
22861
9
原创 【SpringMVC学习03】SpringMVC中注解和非注解方式下的映射器和适配器总结
从上一篇的springmvc入门中已经看到,springmvc.xml中的配置了映射器和适配器,是使用非注解的方式来配置的,这是非注解方式的一种,这里再复习一下:1. 非注解方式1.1 处理器适配器 上一节中使用的处理器适配器是:org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter。即: Sim
2016-06-19 20:15:04
19143
13
原创 【SpringMVC学习02】走进SpringMVC的世界
上一篇博文主要介绍了springmvc的整个架构执行流程,对springmvc有了宏观上的把握,这一篇博文主要以案例作为驱动,带你走进springmvc的世界。案例中的需求很简单:对商品列表的查询。表的话还是使用我在学习mybatis时候用的表,具体可以参见这篇博文中的建表语句。1. 环境的搭建
2016-06-18 19:39:50
21126
7
原创 【SpringMVC学习01】宏观上把握SpringMVC框架
springmvc是一个基于mvc的web框架,是spring框架的一个模块,所以springmvc和spring无需通过中间整合层进行整合。我们先来看下spring的一个架构模型,看springmvc在spring框架中所处的位置: 从图中可以看出,springmvc是spring的一个web框架,所以上图中描述的是spring web mvc,它和struts2的功能差不多,下面我们
2016-06-18 08:25:11
23657
21
原创 【MyBatis学习15】MyBatis的逆向工程生成代码
1. 什么是逆向工程 mybatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po..)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。2. 使用逆向工程 使用mybatis的逆向工程,需要导入逆向工程的
2016-06-17 10:06:52
30231
3
原创 【MyBatis学习14】MyBatis和Spring整合
前面十几篇博文总结了mybatis在开发中的相关技术,但在实际中都是和spring整合开发的,所以这里总结一下mybatis和spring的整合方法,并在整合后进行测试。1. 整合的环境这都是老掉牙的问题了,不管是开发还是整合,首先环境肯定得有,环境嘛,除了java环境和开发环境外,那就是jar包咯,关于mybatis和spring整合的jar包,我已经上传到下载频道了==>传送门 将这
2016-06-16 22:07:26
17747
4
原创 【MyBatis学习13】MyBatis中的二级缓存
1. 二级缓存的原理 前面介绍了,mybatis中的二级缓存是mapper级别的缓存,值得注意的是,不同的mapper都有一个二级缓存,也就是说,不同的mapper之间的二级缓存是互不影响的。为了更加清楚的描述二级缓存,先来看一个示意图: 从图中可以看出: sqlSession1去查询用户id为1的用户信息,查询到用户信息会将查询数据存储到该UserMapper的二级缓存中。
2016-06-16 07:26:19
20778
8
原创 【MyBatis学习12】MyBatis中的一级缓存
缓存的作用是减轻数据库的压力,提高数据库的性能的。mybatis中提供了一级缓存和二级缓存,先来看一下两个缓存的示意图: 从图中可以看出: 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。 二级
2016-06-15 21:25:06
7768
7
原创 【MyBatis学习11】MyBatis中的延迟加载
1. 什么是延迟加载 举个例子:如果查询订单并且关联查询用户信息。如果先查询订单信息即可满足要求,当我们需要查询用户信息时再查询用户信息。把对用户信息的按需去查询就是延迟加载。 所以延迟加载即先从单表查询、需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。 我们来对比一下: 关联查询:SELECT orders.*, user.use
2016-06-15 07:38:15
40651
18
原创 【MyBatis学习10】高级映射之多对多查询
本文来总结一下mybatis中的多对多映射,从第8节的文章中可以看出,用户表和商品表示多对多关系,它们两的多对多是通过订单项和订单明细这两张表所关联起来的,那么这一节主要来总结一下用户表和商品表之间的多对多映射。 首先在上一节的基础上继续写sql,SELECT orders.*, user.`username`, user.`sex`, user.`address`,
2016-06-14 17:32:05
10918
10
原创 【MyBatis学习09】高级映射之一对多查询
上一篇博文总结了一下一对一的映射,本文主要总结一下一对多的映射,从上一篇文章中的映射关系图中可知,订单项和订单明细是一对多的关系,所以本文主要来查询订单表,然后关联订单明细表,这样就有一对多的问题出来了。 首先还是先写sql语句,在写sql语句的时候遵循两点: 查询的主表是哪个? 订单表 查询的关联表是哪个? 订单明细表 明确了主表和关联表,下面就可以写sql了,我们在
2016-06-14 07:14:12
10796
8
原创 【MyBatis学习08】高级映射之一对一查询
从这一篇博文开始,将总结一下mybatis中的几个高级映射,即一对一、一对多、多对多查询,这篇先总结一下mybatis中的一对一查询。 为了模拟这些需求,事先要建立几个表,不同的表之间将对应上面提到的不同的映射,为此,我建立4个表,如下:DROP TABLE IF EXISTS `items`;DROP TABLE IF EXISTS `orders`;DROP TABLE IF EXISTS
2016-06-13 20:04:10
13991
5
原创 【MyBatis学习】输入映射和输出映射——优快云博客
博客地址:http://blog.youkuaiyun.com/eson_15/article/details/51637873
2016-06-13 08:40:34
382
原创 【MyBatis学习07】动态sql
动态sql是mybatis中的一个核心,什么是动态sql?动态sql即对sql语句进行灵活操作,通过表达式进行判断,对sql进行灵活拼接、组装。就拿上一篇博文中对用户的综合查询一例来说:select * from user where user.sex = #{user.sex} and user.username like '%${user.username}%'
2016-06-13 08:11:30
7225
6
原创 【MyBatis学习06】输入映射和输出映射
在前面几篇博文的例子中也可以看到mybatis中输入映射和输出映射的身影,但是没有系统的总结一下,这篇博客主要对这两个东东做一个总结。我们知道mybatis中输入映射和输出映射可以是基本数据类型、hashmap或者pojo的包装类型,这里主要来总结一下pojo包装类型的使用,因为这个在开发中比较常用。1. 输入映射输入映射,是在映射文件中通过parameterType指定输入参数的类型
2016-06-12 21:49:42
10733
6
原创 【MyBatis学习05】SqlMapConfig.xml文件中的配置总结
经过上两篇博文的总结,对mybatis中的dao开发方法和流程基本掌握了,这一节主要来总结一下mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置文件中都有哪些可以配置的东西: 配置内容 作用 用来加载属性文件 用来设置全局参数 用来设置类型的别名 用来设置类型处理器
2016-06-12 13:22:35
17513
14
原创 【MyBatis学习04】mapper代理方法开发dao
上一篇博文总结了mybatis使用 原始dao的方法存在的一些弊端,我们肯定不会去用它,那么mybatis中该如何开发dao呢?如题所述,这篇博文主要来总结一下使用mapper代理的方法来开发dao的步骤。 使用mapper代理的方法来开发dao时,程序员只需要干两件事即可: 需要编写mapper.xml映射文件 需要编写mapper接口(相当于dao接口)
2016-06-11 19:20:23
13964
7
原创 【MyBatis学习】mapper代理方法开发dao
博客地址:http://blog.youkuaiyun.com/eson_15/article/details/51601204
2016-06-11 19:15:51
404
原创 【MyBatis学习03】原始dao开发方法及其弊端
上一篇博文总结了一下mybatis的入门,接下来就要开发dao方法了,这篇博文主要总结一下mybatis中原始dao开发的方法,最后并总结一下原始dao开发方法的弊端。mybatis中dao开发应该使用mapper代理的方法,这将在下一篇博文中介绍。 原始dao开发思路比较简单,写个dao接口和dao实现类即可。需要向dao实现类中注入sqlSessionFactory,在方法体内通过sqlSe
2016-06-10 22:02:09
9032
6
原创 走进MyBatis的世界——优快云博客
博客地址:http://blog.youkuaiyun.com/eson_15/article/details/51592608
2016-06-10 16:52:14
515
原创 【MyBatis学习02】走进MyBatis的世界
mybatis是个持久层的框架,用来执行数据库操作的,无外乎增删改查,上一节对mybatis有了宏观上的了解后,这一篇博客主要通过一个小示例来入门mybatis,先看一下要写的示例需求: 根据用户id查询用户信息 根据用户名称模糊查询用户信息 添加用户、删除用户、更新用户 其实也就是增删改查,掌握这些,基本上就掌握了mybatis的基本操作了,下面一个个模块来完成。
2016-06-09 22:30:40
15194
16
原创 Struts2、Hibernate4.3和Spring4.2三大框架的整合
博文地址:http://blog.youkuaiyun.com/eson_15/article/details/51277324
2016-06-08 10:57:27
477
原创 在宏观上把握MyBatis框架——优快云博客
原文地址:http://blog.youkuaiyun.com/eson_15/article/details/51582967
2016-06-07 21:54:24
325
原创 【MyBatis学习01】宏观上把握MyBatis框架
今天开始学习mybatis框架,博客主要记录学习过程中的一些总结,如有错误之处,欢迎留言指正~先用mybatis的鸟鸟来镇个楼,咳咳~~ mybatis框架是一个持久层框架,是Apache下的顶级项目。mybatis可以让开发者的主要精力放在sql上,通过mybatis提供的映射方式,自由灵活的生成满足需要的sql语句。MyBatis可以将向preparedStatement中的输入参数
2016-06-07 20:57:08
13453
19
原创 【java并发】一道多线程问题
前面几篇博文基本上总结了一下java并发里的一些内容,下面通过几个练习题巩固一下。 题目描述: 模拟一个场景:处理16条日志记录,每条日志记录打印时间需要1秒,正常情况下如果将这16条记录去部打完需要16秒,现在为了提高效率,准备开启4个线程去打印,4秒钟打印完,实现这个demo。 先来分析一下这个题目,关于这16条日志记录,我们可以在主线程中产生出来,这没用什么难度,关键是
2016-06-07 17:29:59
4951
5
原创 【java并发】阻塞队列的使用
在前面一篇名为条件阻塞Condition的应用的博客中提到了一个拔高的例子:利用Condition来实现阻塞队列。其实在java中,有个叫ArrayBlockingQueue的类提供了阻塞队列的功能,所以我们如果需要使用阻塞队列,完全没有必要自己去写。 ArrayBlockingQueue实现了BlockingQueue,另外还有LinkedBlockingQueue和PriorityBlo
2016-06-07 09:27:34
7965
3
原创 【java并发】阻塞队列的使用——优快云博客
博客地址:http://blog.youkuaiyun.com/eson_15/article/details/51586127
2016-06-07 09:27:22
405
原创 【java并发】线程同步工具Exchanger的使用
原文地址:http://blog.youkuaiyun.com/eson_15/article/details/51581842
2016-06-06 10:45:39
180
原创 【java并发】线程同步工具Exchanger的使用
如果两个线程在运行过程中需要交换彼此的信息,比如一个数据或者使用的空间,就需要用到Exchanger这个类,Exchanger为线程交换信息提供了非常方便的途径,它可以作为两个线程交换对象的同步点,只有当每个线程都在进入 exchange ()方法并给出对象时,才能接受其他线程返回时给出的对象。 每次只能两个线程交换数据,如果有多个线程,也只有两个能交换数据。下面看个通俗的例子:一手交钱一首
2016-06-06 09:48:12
5041
8
原创 【java并发】线程同步工具CyclicBarrier的使用
上一节中总结了Semaphore同步工具的使用,Semaphore主要提供了一个记数信号量,允许最大线程数运行。CyclicBarrier是另一个同步工具,这一节主要来总结一下CyclicBarrier的使用。先看一下官方的对CyclicBarrier的介绍: 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的
2016-06-05 21:13:09
4408
2
原创 【java并发】线程同步工具CyclicBarrier的使用——优快云博客
原文地址:http://blog.youkuaiyun.com/eson_15/article/details/51581334
2016-06-05 21:05:20
236
原创 【java并发】线程同步工具Semaphore的使用
Semaphore通常用于限制可以访问某些资源(物理或逻辑的)的线程数目,我们可以自己设定最大访问量。它有两个很常用的方法是acquire()和release(),分别是获得许可和释放许可。 官方JDK上面对Semaphore的解释是这样子的: 一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个acquire(),然后再获取该许可。每个release(
2016-06-05 10:00:54
10091
2
原创 【java并发】线程同步工具Semaphore的使用——优快云博客
原文地址:http://blog.youkuaiyun.com/eson_15/article/details/51577191
2016-06-05 10:00:40
195
jQuery Validate表单验证实例
2016-05-26
SSM整合所需的jar包工具
2016-06-17
springmvc操作json数据所需的jar包
2016-06-23
hibernate校验框架
2016-06-21
springmvc文件上传所需的jar包
2016-06-22
mybatis-ehcache2.6.5
2016-06-14
SSH网上商城项目实战完整源码(带博文可参考)
2016-05-26
S2SH整合所需的基本jar包
2016-05-16
mybatis-3.3.0jar包
2016-06-06
json-lib-2.4和相应的依赖包
2016-05-10
commons-httpclient-3.1短信发送包
2016-05-22
FTP上传工具
2016-05-23
json-lib-2.4以及相应的依赖包
2016-05-06
jQuery-validate实例效果
2016-05-25
jQuery-validate实例代码
2016-05-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人