java
zhuojiajin
这个作者很懒,什么都没留下…
展开
-
Java Web开发基础(1)-Servlet
概述 Servlet技术是对web服务器的扩展,要理解这个,可能先了解一下什么是Web服务器以及它的功能,特别是它的不足是很有帮助的,可参考:点击打开链接。另外,Servlet也是一个用java语言的Servlet API编写的特殊的java类,它运行在Servlet容器中。它的功能是分析请求,处理请求,构造响应消息,它本来就处于web服务的线上这也很容易理解。概念上就这么多了。原创 2014-06-24 23:11:15 · 1606 阅读 · 16 评论 -
redis入门
之前学习shiro作为权限框架。由于项目是分布式的,也就是说每一个独立的部分都配置了一整套完整的shiro(个人觉得不合理,但是还没有想到好的解决方案)。这里导致的问题是权限的信息缓存后,各个的独立部署的子项目的缓存不同步。假如这时候,授权更改了用户的权限信息就会导致权限信息不一致。所以,我们需要将缓存抽出来作为一个服务器存在,然后就决定选用redis作为缓存服务器。本篇博客,先大概的对redis原创 2015-02-27 23:55:49 · 1153 阅读 · 7 评论 -
AOP的简单认识
AOP AOP(Aspect Orient Programming),也就是面向切面编程,是OOP(面向对象编程)的延续。AOP带来了新的编程革新。 使得软件设计更加细化,代码的编写顺序不再决定其运行顺序,典型框架有Spring和AspectJ框架。理解 面向对象的编程的执行顺序和开发中写入对象之间的调用关系是一致的。面向接口或者加入代理、反射等,都是从纵原创 2015-02-28 23:04:26 · 1395 阅读 · 7 评论 -
Aop概念详解
前面的一篇博客大概的讲了讲AOP的个人理解,也罗列了一些主要概念的定义。后面参加了一次AOP的讨论,发现对于概念的理解居然有这么多的分歧。所以,这篇博客要详细的解释一下我对这些概念的认知。AOP的目的 我们说AOP是OOP的一个补充,是为了程序更面向对象。这句话怎么说的呢?面向对象通过继承实现代码的复用问题。继承是类之间的一种静态的关系,是一种强耦合的关系。它通过抽取公共部原创 2015-03-30 23:53:55 · 2242 阅读 · 5 评论 -
Redis+EJB实现缓存(一)
上篇博客大概的对Redis做了一个基本的了解,因为刚刚接触自己也不太明白,所以上篇博客写的乱七八糟的。这篇因为项目需要,学习了一下Redis和EJB集成。现在脑子相对比较清晰了一些。实现思路 缓存的功能是和业务无关的,为的是提高程序的性能。也就是说可以将程序和缓存看作是两个平行的功能。那么在这种情况下就可以借助AOP的思想来将缓存引入到程序中,已实现缓存功能在一个程序中的重用问题。那原创 2015-03-20 17:37:24 · 1987 阅读 · 3 评论 -
Redis + EJB 实现缓存(二)
上一篇博客说了,大概的缓存实现。即如何借助EJB的拦截器实现将缓存切入到业务中去。关于缓存自己这一块的业务逻辑还没有写,这部分内容放到下一篇了。那么,本篇博客说的是如何将缓存服务器的配置文件独立到Jar包外。上篇博客我们说过了,缓存是打成一个jar包提供服务的。需求的素描 我们开发的是基于Jedis的Redis缓存客户端是实现,那么客户端需要一个服务器的信息以创建连接(数据库)。原创 2015-03-25 23:25:43 · 1372 阅读 · 5 评论 -
Redis+EJB缓存实现(三)
上篇缓存的博客我说了还有一些问题没有解决。包括,Key值的生成策略和服务器链接信息的访问。这篇博客先总结一下解决思路,不过实现上目前还没有调通。问题详解 key值生成策略 缓存是将数据库中的数据复制一份到内存中,redis有可能会将数据保存在磁盘上。那么当数据库里的数据发生改变时,缓存的数据就变成脏数据了,那么这时候我们就需要将缓存中的数据清除。所以原创 2015-03-31 23:53:58 · 1405 阅读 · 6 评论 -
Spring学习总结(2.1)— Spring MVC
简介 Spring MVC是MVC模式在UI中的使用,当然Spring MVC只是其中的一种。这个模式的特点是:分离了模型、视图、控制器三种角色。将业务处理从UI设计中独立出来,分装到模型和控制器设计中去,使得他们相互之间解耦。这样的话,它们就可以独立扩展。流程客户端请求提交到DispatcherServlet由DispatcherServlet控制器查询一个原创 2015-04-29 23:52:21 · 1436 阅读 · 8 评论 -
Spring学习总结(1.2)-依赖注入及配置了解
前面的博客大概的讲了一下IOC容器的理解,那么IOC的实现实际上依托于依赖注入的。简单的说就是IOC是一种思想,而依赖注入为这种思想提供了实现。个人是这么理解的。本篇博客介绍两种常用的注入方式,以及他们的配置(基于XML)。IOC容器说明 从最近的学习来看,特别是基于XML的配置形式下。IOC容器就是一个生产线,它依据配置中类之间的持有关系,一个部件一个部件的组装成一个完整的产品去执原创 2015-04-30 23:52:50 · 1281 阅读 · 9 评论 -
Redis + EJB 缓存实现(四)—KEY值生成策略
上一篇博客针对Key值生成策略和Redis数据源读取的问题,想了一些解决的思路,停滞了一段时间后,最近实现好了。下面就根据实现,再结合解决思路说明一下。本篇博客先说KEY值生成策略的问题。前提 我们的系统是Spring mvc + EJB实现的。因为分布式调用的问题,为了避免脏数据我们的数据缓存需要加在Service层。这个之前没有交代过,通过下面这个图,解释一下:原创 2015-05-19 23:50:14 · 3367 阅读 · 2 评论 -
spring学习总结(1.1)—IOC的理解
之前在学习SSH的时候开始接触Spring这个框架。因为一直在学习新的东西,没有对这部分的学习做总结。最近,也一直在使用Spring,只是没有比较深入的去了解,也就是只是停留在使用这个层面上。从这篇博客开始,对Spring部分的学习做一些记录。从其核心内容开始吧,这篇博客就是IOC的了解。IOC简介 IOC(Inversion of Control),大部分翻译为“控制反转”。刚接触原创 2015-04-21 23:50:07 · 1210 阅读 · 8 评论 -
Redis + EJB缓存实现(五)—配置文件
缓存的实现是以Jar包的方式引入到项目中使用的,之前说过那么Redis服务器的数据源信息就不能配置在Jar包内部,Jar包是不容易更改的。所以,应该将数据源信息配置在外部,即引入的项目中。这样做遇到了两个问题:一是,配置文件的路径,二是,数据源信息唯一。路径 这个问题上也花费了一点时间,得到了路径很乱。所以,对JAVA的路径做了一点点了解。要读取资源文件,首先需要了解什么是cla原创 2015-05-26 21:14:31 · 1564 阅读 · 2 评论 -
Spring学习总结(2.2)-Spring MVC:DispatcherServlet
DispatcherServlet是SpringMVC的前端控制器,换句话说它是SpringMVC的入口。即所有的请求都要经过它才能流转,所以称它为中央控制器也是可以的。这篇博客想要讲的是,它作为中央控制器是如何流转或者说分发请求的。配置 action org.springframework.web.servlet.DispatcherServlet原创 2015-05-30 23:48:46 · 2096 阅读 · 3 评论 -
Spring学习总结(2.3)-Spring MVC:handlermapping
上篇博客讲了DispathcerServlet的流转过程以及它是如何工作的,从这篇博客开始就开始深到DispatcherServlet的内部看看它的几个主要的组件。那么这一篇就从HandlerMapping这个组件开始学习。 待续………………………………原创 2015-05-31 21:40:48 · 3840 阅读 · 2 评论 -
Spring学习总结(2.3)-Spring MVC:handlerAdapter
前面一篇博客介绍了HandlerMapping这个组件,它负责的是定位请求处理器Handler。这是SpringMvc处理流程的第二步。那么,当定位到Handler之后,DispatcherServlet会将得到的Handler告知HandlerAdapter,HandlerAdapter再根据请求去定位请求的具体处理方法是哪一个。职责 在HandlerMapping返回处原创 2015-06-22 23:34:49 · 16942 阅读 · 1 评论 -
checkStyle使用详解
简介 checkStyle是一款代码格式检查工具,它根据设置好的编码规则来自动检查代码。比如命名规范,文件长度,代码行长度等等。代码检查工具是保证项目代码质量、统一编码风格的一种重要途径。本篇博客主要讲讲使用checkStyle的检查规则的陪置。安装 方法一:Eclipse中,选择Help->Software Updates->Find原创 2015-06-29 09:01:50 · 5786 阅读 · 3 评论 -
Apache shiro(3)—cas + shiro配置说明
这篇博客我们还是继续讲如何使用,其他的我自己还需要一些时间来消化。这次因为项目的需要,将登录从shiro中抽出来交给cas来验证。Shiro,只负责权限的验证。shiro在1.2版本之后加入了对cas的支持。我们先从cas入手……SSO的概念 单点登录( Single Sign-On , 简称 SSO )是目前比较流行的服务于企业业务整合的解决方案之一, SSO就是一次登录,就可原创 2015-01-21 19:27:03 · 15560 阅读 · 11 评论 -
SSH-Hibernate(二)—映射关系(下)
这是第三篇将的Hibernate的映射关系了,这篇将多对多和继承映射!原创 2014-12-31 23:19:57 · 1577 阅读 · 6 评论 -
SSH-Hibernate(二)—映射关系(中)
Hibernate的上篇博客写了一对一关联,这篇我们说一下一对多关联。入门篇里我们说过,Hibernate的关联关系对应的是关系型数据库中的表记录之间的关系。换句话说就是以类间的关联关系,来保存或者说映射记录的关系,因为关联关系里的一对一,一对多,多对多描述的是对象(对象即记录)数量的关系。记住这一点应该是有助于理解的。表关系图 这张图表达的是:客户表和订单表中的记录,一个客户(原创 2014-12-30 23:58:36 · 1583 阅读 · 7 评论 -
Java Web开发基础(2)-JSP
上一篇博我粗略的介绍了一下Servlet,粗略是因为博主也刚刚学习这部分的内容,还不是很懂所以无法讲的很精细。但是本着二八原则,我还是先继续学习。所以,这篇博客接着JSP的内容。因为,这两个内容关联性还是比较强的,学习的过程也应该是互相促进的。简介 概述:JSP(Java Server Page)简单的说是一种动态网页技术,它通过在HTML网页中嵌入能够生成动态内容的程序代码,来原创 2014-06-28 17:49:31 · 1489 阅读 · 17 评论 -
Java Web开发基础(3)-JSTL
在DRP项目中接触到了JSTL标签库,对我这种比较懒的人来说,第一感觉就是“惊艳”。JSTL标签库的使用,可以消除大量复杂、繁复的工作。工作量减少的不是一点半点,是减少了一大半。任何工具的引入,都会使我们的工作变的简单,但是问题是我们工作可以变的简单,但是我们不能让自己的大脑变的简单。所以,我们不是简单的会用就可以,我们还需要了解这个工具是如何工作的,如何为我们提供便利的。ok,下面进入正题,我们原创 2014-07-21 21:37:49 · 1871 阅读 · 10 评论 -
详解XML解析(一)—解析接口浅析
在DRP项目中接触到了一个XML解析工具DOM4J,它作为解析工具的据说性能非常优秀。但是刚刚接触解析工具不久,并且也没有使用过其他的解析工具,因此对于DOM4J的性能没有直接的感受(没有参照物)。不过,本篇博客先暂时不直接讲DOM4J。之前说过,对于工具特别是优秀的工具,我们要学习的不只是使用而已,而需要更深层次的学习。好了,开始吧,首先我们要先了解一下解析器。解析器 解原创 2014-07-30 21:37:37 · 3984 阅读 · 9 评论 -
详解XML解析(二)—DOM4J
上篇博客简单介绍了XML的三种接口,也是为学习DOM4J这个解析工具做的准备。一般的解析器基本都实现了DOM和SAX这两套接口,DOM4J自然也不例外。。DOM4J只是常用解析器的其中一种,不过既然是实现的接口。而接口作为一种相对稳定的存在,也就是说其他的解析器本质上也就和DOM4J没有差别。简介DOM4J是dom4j.org出品的一个开源XML解析包。Dom4j是一个易用的、开源的库原创 2014-07-31 20:03:37 · 1375 阅读 · 11 评论 -
java反射机制剖析(一)—简介
由之前动态代理的学习再次接触到反射这个知识点,第二次接触了所以做了一些稍微深入的了解。那么,对于反射这部分的内容我打算分三篇博客来总结。本篇博客先对反射做一个大概的了解,包括反射有关的RTTI、定义的理解以及涉及到的其他知识的简介。回顾 java之前我接触反射这个知识,是在大话设计中的抽象工厂模式里,通过反射+配置文件来优化抽象工厂提高其应对需求变更的灵活性。当时对于反射的认知仅原创 2014-08-27 15:18:28 · 2057 阅读 · 14 评论 -
代理模式深入(一)——静态到动态
故事 周末放假,小孙睡到12点才告别周公醒来,顿时饥肠辘辘。舍长小王正准备去食堂买饭,作为一个好舍长小王主动要帮小孙带饭。小孙点了米饭、宫保鸡丁、芬达。小孙起床洗漱,然后静待舍长。小孙心理寻思道舍长果然是好舍长啊。下面我们先把这个故事抽象一下,画作类图。这个类图即代理模式。代理模式 定义:为其他对象提供一种代理以控制对这个对象的访问。怎么理解这句话呢?从生活的角度来说原创 2014-08-13 08:42:25 · 1902 阅读 · 16 评论 -
代理模式深入(二)——动态代理实现机制
上篇博客由于长度的原因,只是用代码展示了静态代理到动态代理的“进化”。那么本篇博客就动态代理的实现原理做一个介绍,从而有一个更深入的理解。当然,这也已经渐渐的脱离的代理模式的内容,因为学习是一个管中窥豹的过程,了解的越深入才能了解事务的本质。 问题重现 动态代理呢解决了静态代理的两个在一定条件下不适应的问题:其一,因为代理类中需要持有一个实际类而导致的代理类和实际类的耦合度原创 2014-08-18 20:07:37 · 1772 阅读 · 12 评论 -
java反射机制剖析(二)— Class Loader
上一篇博客简要的提了一下java反射机制中涉及到的一些相关知识,那么ClassLoader就是其中之一。本篇博客就详细的对ClassLoader做一个相对深入的了解。作为了解需要知道的是,其实类类型(Class Class)是和ClassLoader分不开的,因为ClassLoader需要的信息是由它提供的。类类型将在下一篇博客介绍。简介 ClassLoader是负责加载类的对象原创 2014-08-31 18:34:06 · 4477 阅读 · 14 评论 -
java反射机制剖析(三)—类类型Class
为了区别于我们常用的Class,因此给了个中文名类类型。目的就是为了知道此Class非彼Class。上一篇博客已经介绍了Class Loader,它的作用是根据提供的信息来加载类到内存中。我之前有提过这个类信息的提供者就是本篇博客要介绍的Class。提醒:一个类的Class对象和它的Instance是不一样的,切记,不然你会混乱的。开始了!概念 Class类是所有类(注意是对象)原创 2014-09-13 22:04:38 · 3839 阅读 · 17 评论 -
Java反射机制(四)—番外篇,实例化方法深入
反射机制这几篇博客写下来发现涉及到Java类的加载机制,这部分的内容也比较独立的一部分,因此单另一篇来写。在JAVA中任何的类都是需要加载到JVM中才能运行的。之前Class Loader介绍了类的加载机制,那么这里要说的是不同加载方式之间的对比,好能对JAVA类的实例化过程有更深刻的体会。 new和Class.newInstance 我们说代码里出现new关键字意味着对于可能原创 2014-09-28 01:42:59 · 3250 阅读 · 22 评论 -
SSH-Struts(二)—控制器(ActionServlet)
上篇博客介绍了Struts的架构,接下来将详细的介绍其中的组件,这篇博客要写的是Struts的控制器ActionServlet。扮演的角色 ActionServlet类是Struts的控制中心,所有来自于浏览器的请求的地址映射、ActionForm的匹配、视图的流转都需要通过控制中心来调度。也就是说,它所充当的是总入口的角色,无论是进或者出都需要经过它。继承关系原创 2014-10-27 23:15:14 · 2444 阅读 · 11 评论 -
SSH-Hibernate(一)—入门
数据持久化 接触到Hibernate之前是不知道这么个概念的,查了不少资料一直都模糊不清。到底什么是数据持久化呢?《精通Hibernate:Java对象持久化技术详解》中给的解释,感觉还是比较合理的。狭义的理解: “持久化”仅仅指把域对象永久保存到数据库中;广义的理解,“持久化”包括和数据库相关的各种操作。Hibernate所涉及到的数据持久化应该是基于广义的理解的。本篇博客也基于这个理原创 2014-11-27 14:42:56 · 1476 阅读 · 7 评论 -
SSH-Hibernate(二)—关系映射(上)
关系映射的理解 上篇博客说过ORM是一种持久化的解决方案,它的思想呢就是将关系数据库中的表的记录映射到JAVA对象中。直白的说就是JAVA对象和关系数据库中的记录建立起了固定的对应关系,对象即记录!这样做的带来的最直接的表现就是,开发人员可以以面向对象的思想来操作关系型的数据库。 对象对应的是数据表中的记录,而在关系数据库中记录和记录之间存在着一对一、一对多、多对多原创 2014-11-30 21:56:45 · 1459 阅读 · 7 评论 -
云概念下的权限系统
最近再做权限管理系统,采用shiro做为权限框架,配合cas作为单点登录服务。可以灵活的实现对用户权限细粒度的控制。这篇博客抛开使用的技术实现,理一理整个设计思路。基本介绍 我们的项目引入云的概念,我自己也不是理解的很透彻,我试试看能不能说的明白。整个系统有子系统A、B、C以及权限系统。每个注册机构拥有自己的数据库,和一套服务。云平台需要管理每个注册机构可使用的资源,原创 2015-02-01 00:05:03 · 3721 阅读 · 18 评论 -
Apache shiro(2)—first Demo(web+spring+shiro)
上一篇博客很简单的罗列了一下shiro的框架的构成,其实就是混个脸熟先。这篇博客呢,还是不打算具体的讲,我们先通过一个完整的实例体会一下如何使用。然后,应该就能够对于shiro就能有一个大概的,基于实际使用的认识。开始了……JAR包shiro-all:这个JAR包含了所有的JAR。现在shiro的JAR包有分开的,可以根据使用的功能选用其中的部分。这里,我们的首要目标是体会功能,因原创 2014-12-26 09:40:18 · 12396 阅读 · 7 评论 -
ajax提交带文件的表单
在做项目的时候遇到一个问题,在导入excel的时候导入出现的错误信息如何处理的问题。首先,交代一下前提:该导入功能没有使用事务控制,即不是成功或者不成功二选一。而是只要数据符合要求就导入,错误数据不导入提示用户修改。 逻辑上说,只要导入出现了导入不成功的数据,就需要打回到导入页面。即回到用户的操作原点,并将错误信息呈现给用户。所有数据都导入成功时才转到list页面,并提示成功。问题描原创 2015-07-29 23:03:46 · 7144 阅读 · 6 评论