
Java开发
时光在路上
非常喜欢学习程序设计,一直在努力中……
展开
-
职场人生(十六):2013 回想这多半年走过来的路
又到总结时,这是第三个年头的总结了。每次开学,看到学生欣喜的赶奔学校,已经毕业一年的我,看到这种情景,说不出的感觉,有怀念自己,有惋惜他们。回顾这一年,没有写几篇思想性的博客,但也始终没有停止思考,只是这些大都记录在笔记中,只是这一年的重点在技术学习上。 计算机学习说“技术学习,最后一年学的东西最多的”。亲身经历过,果然如此。这一年,我跨进了java的世界,越学习接触的技术越多原创 2013-09-01 11:07:42 · 2522 阅读 · 16 评论 -
Ajax学习系列4— 通过DWR简化AJAX开发
DWR(Direct Web Remoting)是一个WEB远程调用框架,采取了一个类似AJAX的新方法来动态生成基于JAVA类的JavaScript代码。这样WEB开发人员就可以在JavaScript里使用Java代码,就像它们是浏览器的本地代码(客户端代码)一样。 其开发过程如下:拷贝dwr.jar文件修改web.xml文件,添加dwr servlet配置编写dwr组件原创 2013-08-26 21:30:57 · 1785 阅读 · 7 评论 -
将 Shiro 作为应用的权限基础 七:缓存Shiro本地会话
系统通过AOP切入权限认证后,既想保证安全,也想保证访问页面的速度,那就得用到缓存了,或者说是缓冲区。用户第一次登陆后,将该用户所具有的所有权限缓存到本地。这样,频繁的验证用户是否具有操作权限时,不再每次都到数据库拿数据。在OA项目中的权限,是每次用户操作前,先到数据库中取得该用户拥有的权限,然后判断其操作是否合法。这样的频繁的读取数据,必然降低了页面的访问速度。 缓存配置虽然原创 2013-12-29 20:27:12 · 4450 阅读 · 20 评论 -
研发管理篇:项目依赖包不能打入项目jar 引发的思考
近来在做高校云平台,存在着对待开发环境的学习不够,更确切的说,是知道的不够,导致开发效率低下的问题。今天先说说这个问题:maven项目开发中,pom类型如果是war的话,打包时就能自动将项目依赖的jar包打到web-inf下的lib文件夹中。但是,如果pom类型为jar的话,打包过程中不会将依赖的包提取出来。 我们的做法是,在pom文件中引入jar包时,scope定义成pr原创 2013-12-29 14:38:29 · 3510 阅读 · 17 评论 -
日志处理 一:使用第三方工具进行日志处理
对于日志的使用,还可以结合AOP(面向切面编程)的思想 通过代理模式进行使用,在我的这篇博客反射机制剖析(三): 谈谈代理模式是如何体现反射的有所讲解。原创 2013-08-17 21:55:25 · 2707 阅读 · 8 评论 -
日志处理 二:AOP+反射实现 普通操作日志设计
普通操作日志和业务操作日志在开始做之前,必须把两个日志分清楚,那就是普通操作日志和业务操作日志,这两者有何区别?在我理解,普通操作日志就是单表的操作记录,而业务操作日志则就是一系列的普通操作日志的集合。打个比方,用户需要购买一样宝贝,已经到了下单那步,下单就是个业务,这个业务背后就是一系列的业务,如:生成订单 → 生成商品快照 → 发送一条站内信 → 删除购物车里对应宝贝这样一原创 2013-09-25 21:31:33 · 5491 阅读 · 25 评论 -
日志处理 三:Filter+自定义注解实现 系统日志跟踪功能
一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的,这种方式可以实现Bean预处理、后处理。 这里是利用springmvc的拦截器开发了log功能,用于跟踪、记录系统用户的操作轨迹,以便日后的认责。该功能使用很方便,是可配置的、细粒度的日志记录功能。之所以细粒度,因为level分为三层,默认包层(rootLogLevel默认值TRACE),自定义包层(customLogLeve原创 2013-11-05 21:26:20 · 7651 阅读 · 21 评论 -
将 Shiro 作为应用的权限基础 五:SpringMVC+Apache Shiro+JPA(hibernate)整合配置
配置web.xml,applicationContext.xml, spring-mvc.xml,applicationContext-shiro.xml,而且都有详细的说明。 Web.xml是web项目最基本的配置文件,看这个配置,可以快速知道web项目使用什么框架,它就像一个面板,切入我们想用的插件。applicationContext.xml是spring的基本配置,主要原创 2013-10-31 21:29:38 · 12023 阅读 · 15 评论 -
将 Shiro 作为应用的权限基础 一:shiro的整体架构
将 Shiro 作为应用的权限基础 一:shiro的整体架构 近来在做一个重量级的项目,其中权限、日志、报表、工作量由我负责,工作量还是蛮大的,不过想那么多干嘛,做就是了。这段时间,接触的东西挺多,比如apacheshiro,spring data,springside、DWZ等,java的东西好多,学过ssh就像当初学过三层一样。 下面看看这个安全框架吧 一、原创 2013-10-29 21:44:14 · 7523 阅读 · 12 评论 -
将 Shiro 作为应用的权限基础 四:shiro的配置说明
Apache Shiro的配置主要分为四部分: SecurityManager的配置URL过滤器的配置静态用户配置静态角色配置其中,由于用户、角色一般由后台进行操作的动态数据,比如通过@RequiresRoles注解控制某方法的访问,因此Shiro配置一般仅包含前两项的配置。 SecurityManager的配置: ,详细说明见原创 2013-10-31 21:28:43 · 5535 阅读 · 8 评论 -
将 Shiro 作为应用的权限基础 三:基于注解实现的授权认证过程
授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限。 如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限等等。 一、用户权限模型为实现一个较为灵活的用户权限数据模型,通常把用户信息单独用一个实体表示,用户权限信息用两个实体表示。用户信息用 LoginAccount 表示,最简单的用户信息可能只包含用户名 loginName 及密码原创 2013-10-31 21:25:52 · 16826 阅读 · 10 评论 -
由学习J2EE引起的质问和思考
了解老师的都知道,老师开车出去办事,习惯带上学生,这样可以利用路上时间了解学生近况。 在路上,当被老师问及“J2EE是企业级开发,那么什么是企业级开发?”、“J2SE、J2EE和J2ME有什么区别?”时,我愣住了。 什么是企业级项目开发企业级项目是什么?为一个企业,机构,客户公司开发的项目就算得上是企业级项目了吗?一个很大的项目就是企业级项目吗?一个小的项目就算不上是企业级原创 2013-04-08 20:42:53 · 1328 阅读 · 2 评论 -
项目开发 管理工具(一):借助Ant工具,实现快速开发
当一个项目大了以后,每次重新编译,打包,运行等就会变得复杂、费时、重复,在c语言中有make脚本进行这些工作的批量完成,那么在java中,我们可以使用Ant。与Ant相当的工具有Maven,Maven预设了一些方便的功能,而ant只能自己写,各有自己的优势。就像hibernate和IBatis,hibernate做了一定的封装,方便了,却失去了一定的灵活性。 java的世界太大,有许许多多的工具,为了快速进行开发,我们一定要 善假于物也,对众多工具先有个了解,知道有这么回事,需要时才知道去找谁,再即原创 2013-08-11 21:46:55 · 1851 阅读 · 9 评论 -
将 Shiro 作为应用的权限基础 二:基于SpringMVC实现的认证过程
认证就是验证用户身份的过程。在认证过程中,用户需要提交实体信息(Principals)和凭据信息(Credentials)以检验用户是否合法。最常见的“实体/凭证”组合便是“用户名/密码”组合。 一、认证过程 1、收集实体/凭据信息 Java代码 UsernamePasswordToken token = new UsernamePasswordToken原创 2013-10-31 08:40:07 · 17662 阅读 · 10 评论 -
容器学习(二):动手模拟AOP
简单来说,Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架。上文已经介绍模拟IoC实现,这篇文章来动手模拟AOP。 AOP简述面向对象强调"一切皆是对象",是对真实世界的模拟。然而面向对象也并非完美无缺的,它更注重于对象层次结构方面的东西,对于如何更好的管理对象行为内部结构,还存在着些许不足。那么我们如何使这个问题的得到更完美的解决呢?答案就是AOP。原创 2014-06-30 19:28:40 · 2991 阅读 · 4 评论 -
容器学习(一):动手模拟spring的IoC
学习经典框架的实现原理以及设计模式在其实际中的运用,是非常有必要的,可以让我们更好进行面向对象。 本篇文章就来模拟Spring的IOC功能,明白原理后,可以更好的使用它,进而为进行面向对象提供一种思路。 点击下载源码:下载 首先我们把我们用的dao、service、entity定义出来:Student.java :package com.bzu.entity;原创 2014-06-30 17:42:11 · 3266 阅读 · 8 评论 -
hibernate应用实例:hibernate validator 验证数据合法性
随着ORM框架的应用,使得开发更加面向对象,不用再专门设计数据库,由编写实体,实体映射代替。所以,实体的编写是非常基础而重要的工作,开发工作能及早做就不要往后拖。比如,验证数据的合法性,我们习惯在action或者controller中做,其实这些工作可以提前在实体做的。 JSR303BeanValidator是数据验证的规范,而hibernate validator 是其中的一原创 2014-01-27 21:58:54 · 3884 阅读 · 14 评论 -
基于AOP实现权限管理:访问控制模型RBAC和ACL
权限、日志是系统必不可少的的功能,将这些通用的东西抽出来,以AOP方式切入系统中,可以得到非常高的复用率。在OA中,接触了ACL(access control list)模型的权限设计。在高校平台中,采用RBAC(Role Based Access Control)模型的权限设计。 下面是ACL实体模型ACL的原理非常简单:每一项资源,都配有一个列表,这个列表记录的原创 2014-01-19 21:39:42 · 10548 阅读 · 14 评论 -
DWZ (JUI) 应用实例(二):处理信息回馈的通用规范
在开发过程中,抽象成模型,定义规范是非常有必要的,不仅可以简化代码,提高开发效率。也为自己减少了不少麻烦,在刚开始使用时,因为这DWZ这块是我负责,别人不会用都来问我,导致我经常在解决相同的问题,所以抽象通用模型是很有必要的。 DWZ是客户端框架,自然需要接收后台传来的消息,可能是异常信息,可能是成功信息。返回信息是json格式,其中包括状态码、callbackType类型、navTa原创 2013-12-10 21:48:18 · 4760 阅读 · 18 评论 -
DWZ (JUI) 应用实例(一):通过自定义标签和BaseAction 简化 table 分页排序
前段时间忙于做项目,在使用DWZ过程中,发现有些代码的重复度挺大,所以工作空闲之余,写一下分页排序的Demo,并且使用自定义标签简化重复的代码。(发现越来越多的人关注该框架了,因为是国产,可以更快的上手) 分页思路服务器返回当前页的数据,总条数,再由js来生成分页标签。分页是配合服务器端来处理的, 不是纯js做的分页。 因为如果数据量很大,比如有好几百页,存js分原创 2013-12-09 08:06:50 · 3693 阅读 · 14 评论 -
基于AOP实现权限管理:通过shiro认证身份和模拟授权认证
有记录和总结的学习,才是完整的学习。不能总是低头忙于平台项目的开发,更重要的是在学习过程中思考和总结,颗粒归仓,一年之计在于秋。 身份认证和授权认证是权限管理中的核心模块。本文讲讲通过安全框架shiro进行身份认证和模拟授权认证,并可以看到授权之后的效果。 认证登录模块,在完成用户名和密码的匹配基础上,查询该用户具有的操作权限,缓存到本地。该权限系统是基于角色的RBAC模型原创 2014-01-21 21:31:13 · 6520 阅读 · 18 评论 -
异常处理(一):java中的那套异常,和.net大同小异
.net常见异常类System.Object System.Exception System.SystemExceptionApplicationException 1、SystemException类:该类是System命名空间中所有其他异常类的基类。(建议:公共语言运行时引发的异常通常用此类) 2、ApplicationExcepti原创 2013-05-20 20:07:19 · 1633 阅读 · 3 评论 -
多线程学习(一):面对多线程,应该考虑的线程安全问题
如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。而正当有多个线程同时对某变量执行读和写操作,一般都需要考虑线程同步,否则就可能读到的是脏数据而影响线程安全。可以采用加锁、ThreadLocal维护的方式控制,达到线程安全锁java的synchronizedsynchronized加入到成员方法上和synchronized(this原创 2013-05-20 21:04:17 · 1755 阅读 · 1 评论 -
架构学习(二):经典J2EE架构之 SSE(spring3 struts2 ejb3的整合)
因为代码比较多,这里只是列出了针对SSH整合而言新的东西,这里附源码下载,如果对SSH整合不清楚,可以看SSH2框架搭建。刚开始使用EJB做项目,如果有问题欢迎和我交流,共同进步。 这是比较流行的经典J2EE架构,它从物理上和逻辑上把EJB和web组件区分开了,因为可以运行在不同的JVM或者机器上。 唠叨高校项目紧张的进行着,合作开发分配了任务,有了任务的驱动,平时偶尔的困原创 2013-11-20 21:53:07 · 3110 阅读 · 24 评论 -
将 Shiro 作为应用的权限基础 六:源码以及下载地址
提供的源码包括SpringMVC+Apache Shiro的整合SpringMVC+Apache Shiro+JPA(hibernate)整合配置原创 2013-11-01 18:41:17 · 4864 阅读 · 20 评论 -
学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化
准备工作在上篇博客中学习ORM框架—hibernate(一):初识hibernate,通过简单的实例说明O和R的映射过程。本篇博客将要介绍hibernate中持久化对象的状态,并使用hibernate中的核心接口进行一些JDBC基本操作,来观察状态的转移。准备工作很重要,需要了解一些专业词汇,所谓专业词汇,意思大家都懂,只是在专业领域里起个专业的名称罢了。所以见到陌生东西时,应该尽可能的消原创 2013-07-01 21:45:40 · 2401 阅读 · 9 评论 -
为什么要使用EJB
多层结构是J2EE的优势所在开始进行J2EE学习,感触最深的莫过于分层了,ssh在分层,ejb还是在分层。使用J2EE的主要原因就是多层结构,传统的两层C/S结构难于维护,稳定性极差,界面代码和数据库代码混淆在一起,牵一动百,多层结构使得界面和数据库完全分离,并且诞生了中间件这样的技术,如下图 Web+EJB能组成多层结构一个包含EJB的J2EE系统是这样的清晰地表达层次的原创 2013-06-25 19:32:39 · 2204 阅读 · 2 评论 -
使用ThreadLocal对分页逻辑的封装处理
ThreadLocal设计模式,线程局部变量,因为每一次请求都对应一个线程,把初始化的分页数据放在这个局部变量中,当用到时,可以直接从当前线程中获取。原理同HibernateOpenSessionInView。 为了避免在Action(呈现层)和Manager(业务逻辑层)之间传递大量的参数,所以我们使用ThreadLocal模式来传递分页参数(包括:offset和pagesize)。同时原创 2013-07-10 18:17:24 · 3108 阅读 · 14 评论 -
学习ORM框架—hibernate(一):初识hibernate
本篇博客主要包括 ORM框架出现的原因 介绍下ORM框架及hibernate 通过简单的实例说明O和R的映射过程。回顾之前的开发回顾下之前的开发,了解需求之后,根据界面模型建立数据库,再根据数据库建立实体模型,如果数据库更改,实体模型也跟着改,也就是说实体或者说对象是依赖数据库的。这就使得我们进行面对对象开发有了一定的阻碍。介绍OR原创 2013-06-20 17:23:38 · 2652 阅读 · 1 评论 -
学习ORM框架—hibernate(二):由hibernate接口谈到我对接口的理解
本篇博客由hibernate核心接口说起,把它当做引子,从而引出自己对接口的亲身感受。了解hibernate核心接口,清楚hibernate的结构组成介绍结构业务逻辑层是hibernate2.0的东西,因为有侵入性,所以逐渐被淘汰或者说是另辟蹊径。如果想要Lifecycle的功能,完全可以使用Interceptor取而代之。侵入性也就是要求我们必原创 2013-06-23 19:46:13 · 2189 阅读 · 2 评论 -
谈谈web树形目录结构的原理和操作
拨号项目中,虽然自己也鼓捣个树形结构,但思路却不是很清晰,而且是利用树形结构信息是存在xml文件中的。看完drp,并不难,但感触最深的是王勇老师分析问题,把解决问题的思路清晰化。 对树形结构,从数据表、web前端div生成树原理,再到对树形信息的增删改查,由两边向中间逐层分析。 数据库设计树的几种设计方式不带冗余字段,id,pid。效率低,查找相对繁琐。带冗余字原创 2013-05-20 19:21:00 · 5480 阅读 · 2 评论 -
JSP——Servlet老技术 新思想的表现
引入JSPservlet向浏览器输出内容太繁琐:需要写大量的html修改后,需要重新编译,部署想要调整布局,似比登天 JSP其实就是Servlet 新建JSP新建一个JSP,名为HelloWorld.jsp,只是输出一行HelloWorldHelloWorld.jsp HelloWorld原创 2013-04-12 22:00:50 · 1677 阅读 · 3 评论 -
J2EE应用讲解四——Servlet基础
周期servlet生命周期通过web容器控制 Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化,运行,销毁。 初始化阶段:1,Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。 2,然后Servlet容器创建一个ServletConfig对象。ServletConfig对象原创 2013-03-23 21:00:07 · 1676 阅读 · 1 评论 -
J2EE应用讲解三——JDBC基础
JDBC是一种用于执行SQL语句的JAVA API,它由一组用JAVA语言编写的类和接口组成。通过这些类和接口,JDBC把SQL语句发送给不同类型的数据库进行处理并接收处理结果。 主要的类和接口:支持JDBC API的类和主要接口封装在Java.sql(核心API)包和javax.sql(扩展的API)包中。 Java.sql.DriverManager是唯一的一个原创 2013-03-21 10:45:42 · 1566 阅读 · 1 评论 -
J2EE应用讲解二 ——JSP基础
基本语法 Html两种注释一种是可见的,标准的HTML注释。这里三注释--> 另一种是对客户端隐藏的,也就是再浏览器中查看源代码的时候不会显示。这里是注释 --%> 引入servlet类的东东。 表达式 JSP计算表达式并且将计算结果输出到页面上。语法如下:PS:表达式结尾没有分号,前面有等号。原创 2013-03-19 19:41:17 · 1596 阅读 · 1 评论 -
权限管理之基于ACL的实现:针对需求做分析和设计
几乎所有的系统都需要进行权限管理,可见权限管理是非常基础而重要的。比如系统包含很多模块,以模块为单位,针对不同用户进行不同操作。比如张三对组织模块只能查看,而李四既可以进行查看,也可以进行修改。所以需要对模块进行权限管理,即权限授予和验证权限两个过程。 实现思路使用角色达到复用。角色,即权限的集合。通过授予用户角色,达到控制权限的目的。好处很明显,角色具有通用性,比如既可以授予张三管理原创 2013-08-20 21:47:50 · 5279 阅读 · 9 评论 -
权限管理之基于ACL的实现:讲解授权、认证、获得用户权限过程
权限管理模块的实现,需要多个用例:管理模块信息、管理用户信息、管理角色信息、给用户分配角色、给角色授权、给用户授权、获取用户授权列表、判断用户对某个模块的某操作是否允许授权其中比较重要的是:授权、认证、获得用户拥有的所有授权。下面一一介绍: 授权过程就是把系统现有模块授权给用户或角色 授权与取消授权的实现代码:public void setPermission(int原创 2013-08-20 21:52:40 · 5654 阅读 · 14 评论 -
报表学习(一):使用JasperReport+iReport进行WEB开发
报表是几乎所有系统必不可少的模块,或者说是基本业务需求。报表可以帮助我们访问、格式化数据,并把数据信息呈现给使用者。一提到展示给客户,就想到“受累不讨好”,你的系统无论是用的什么技术实现,无论是多大工作量,只要呈现给用户很烂,结果就是受累不讨好。所以,凡是给用户看到的,我们更该得到重视,虽然这话听着有点。。。,不过确实如此。原创 2013-09-30 17:01:46 · 8615 阅读 · 10 评论 -
权限管理之基于RBAC的设计方案
RBAC(Role-Based AccessControl,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。与ACL实现的区别在于,不能直接为用户分配权限,只能从角色那里继承而来。 RBAC权限模型在这种模型中,用户与角色之间,角色与权限之间,一般者是多对多的关系。(如下图)转载 2013-08-26 21:36:58 · 4616 阅读 · 6 评论 -
权限管理之基于ACL的实现:自定义JSTL函数实现即时认证
实现即时认证(即只有拥有相应的权限,才能做相应的操作)在JSP页面上,调用JSTL自定义函数做即时认证,只有通过认证之后,才显示相应的菜单或者功能按钮 自定义JSTL函数的定义和使用过程第一步:定义类和实现方法(方法必须是publicstatic)/** * JSTL函数,主要功能是可以完成权限的即时认证 * @author Administrator * */pub原创 2013-08-25 22:02:35 · 2560 阅读 · 6 评论