Java-Web开发
文章平均质量分 69
小雷FansUnion
懂商业的技术合伙人。个人微信:FansUnion
微信订阅号:XiaoLeiFansUnion。
展开
-
Struts2应用的开发步骤和运作流程
本文第1部分是从书上抄来的,第2部分是自己总结书上的。1.导入相关jar包。 将Struts2的lib文件夹下的commons-fileupload.jar,commons-io.jar,freemarker.jar,javassist.jar,ognl.jar,struts-core.jar,xwork-core.jar复制到Web应用的WEB-INF/lib路径下。如果需要在We原创 2012-09-22 16:21:54 · 1743 阅读 · 0 评论 -
ExcelToHtmlTable转换算法:将Excel转换成Html表格并展示(项目源码+详细注释+项目截图)
Excel2HtmlTable的主要功能就是把Excel的内容以表格的方式,展现在页面中。Excel的多个Sheet对应页面的多个Tab选项卡。转换算法的难点在于,如何处理行列合并,将Excel的行列合并模型转换成Html表格的行列合并模型。最初,想在网上找开源的东东,结果没有1个是想要的。有的特别复杂,有的只能在Windows平台,需要闭源的dll,最终还是得靠自己。人不逼迫自己,真是想偷懒,不能出成果。最重要的经验就是:要努力克服自己的畏难情绪,不能怕麻烦。还是象我的大多数文章那样,项目有 源原创 2013-10-04 10:48:23 · 6928 阅读 · 7 评论 -
极速响应Excel数据报表请求的一种方法
通过缓存和维护Excel Workbook实例,极速响应Excel数据报表请求。维护一份Workbook资源池。程序启动后,写一个定时器,监控资源池中的对象数量,达到资源下界的时候,就构造一些新的对象放进资源池中。原创 2013-10-23 22:02:55 · 3225 阅读 · 2 评论 -
DbUtils开源组件--源码研究和应用实践小结
Apache Common DbUtils是操作数据库的组件,对传统操作数据库的类(JDBC)进行二次封装,可以把结果集转化成List。DbUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。官方网站:http://commons.apache.org/dbutils/下载地址:http://commons.apache.org/dbutils/download_dbuti原创 2012-12-03 14:30:57 · 2346 阅读 · 0 评论 -
超链接标签绑定JS事件&&不加"javascript:;"导致的杯具
很久以来,在写Html和JS时,经常会给超链接标签,绑定JS事件。 我们经常看到这样的写法,Click。 我原来一直有个疑问,干嘛非要加上“javascript:;” 。原来,我很“老实”,每次都会加上。今天,又手敲了类似的代码,本着“老子就是不加,你咬我”的得瑟心态,我没有加上“javascript:;” 。 最终的代码如下: 删除 function doRemove(id,name){原创 2014-11-23 10:31:10 · 3344 阅读 · 4 评论 -
单元测试,我在公司Web团队的分享
一、单元测试的意义1.质量2.效率(短期和长远都值得)写单元测试代码,总的来说其实是更节省开发时间,更保证质量的。Controller、Service、Dao其实都可以进行测试。 通过启动 Tomcat,打开web系统,登录,点击,输入 等进行功能测试,很费时间。单单是Tomcat启动1次,时间通常在30s+。 对于未来重构,也方便测试。问题:浪费时间??原创 2013-07-27 18:26:29 · 2287 阅读 · 0 评论 -
Struts2框架心法--序言
郑重申明: Struts2框架心法系列文章,是Fans在看了《Struts2技术内幕》、《大话设计模式》、《JavaEE轻量级企业开发》等书籍的基础上,结合自己研究Struts2源码的经验,总结而来,原创为主,参考为辅。序: 我们在看到了精彩的球赛,欣赏球星高超球技的同时,却忽略了球星的成长过程。他们尽管有一定天分,但却也是从最底层通过努力一点一点慢原创 2012-09-23 08:17:46 · 1856 阅读 · 0 评论 -
设计模式实战6--结构型--装饰模式
装饰模式(Decorator)定义:动态地给一个对象添加一些额外的职责。就扩展功能而言, 它比生成子类方式更为灵活。装饰模式结构图: 装饰模式解析: Component:组件对象的接口,可以给这些对象动态的添加职责。 ConcreteComponent:具体的组件对象,实现组件对象接口,通常就是被装饰器装饰的原始对象,也就是可以给这个原创 2012-09-23 08:21:52 · 1936 阅读 · 1 评论 -
表达式引擎OGNL
郑重申明: 本文文字部分主要参照了Struts2技术内幕,代码主要为OGNL源码中的,从书上抄写的,自己原创的。 无论是不是原创的,绝大多数内容都是Fans同学自己手敲的。提示:阅读本文前最好先阅读日志-- MVC模式中--数据流转和数据访问的困境及解决方案。 OGNNL(Object Graph Navigation原创 2012-09-23 08:20:18 · 2453 阅读 · 0 评论 -
Mybatis分页插件PageHelper正确的使用方法(网上有2篇不够科学的文章)
Mybatis分页插件PageHelper使用过程中,遇到2个“天坑”,跳了进去,刚刚爬出来。原创 2014-10-20 17:49:51 · 34522 阅读 · 12 评论 -
Struts2框架心法--第1招--Aware接口的使用技巧
Struts2框架中有很多值得学习的地方,本文讲述Aware接口的使用。在Struts2和Spring框架中,为了在运行时获得某个对象,可以采用实现某个Aware接口的方式来获得。例如,使用ServletRequestAware、ServletResponseAware等Aware 接口与外部环境交互。 public class ServletConfigInterceptor原创 2012-09-23 08:18:20 · 2374 阅读 · 0 评论 -
设计模式实战序
学习设计模式已经很久了,在反复阅读了《大话设计模式》,《Struts2技术内幕》,《JavaEE轻量级企业级开发》等书籍之后,在阅读了JDK的部分源码,扫描了Spring3部分源码,认真研究了Struts2源码之后,发现设计模式在Java中的应用实在是太广了。 所以,按照Fans同学一贯的精神和做法(务实-实用-学以致用),将设计模式以一种实际的例子总结出来。也就是说,例子中原创 2012-09-23 08:20:57 · 1739 阅读 · 0 评论 -
Struts2SpringHibernate整合示例,一个HelloWorld版的在线书店(项目源码+详尽注释+单元测试)
Struts2,Spring,Hibernate是Java Web开发中最为常见的3种框架,掌握这3种框架是每个Java Web开发人员的基本功。 然而,很多初学者在集成这3个框架的时候,总是会遇到各种各样的问题。 大学期间,刚刚学习SSH的时候,也是如此。 当时,做了一个Demo性质的在线书店,现在分享给大家。 希望对初学者有所帮助。 CSDN下载地址(免积分):http://download.csdn.net/detail/fansunion/6345147原创 2013-10-01 08:53:23 · 8549 阅读 · 38 评论 -
单元测试Struts2Spring项目的Action和Service(包含源码)
最近,认真实践了单元测试Struts2、Spring等Java项目,今天特意写的是单元测试Struts2Spring项目的Action和Service。由于已经写过不少Web开发框架单元测试的代码,加上上次从头搭建环境并发表了”单元测试Struts2的Action(包含源码) “,没有遇到太多问题。特别说明:本文是原创,搭建环境、写代码、运行,都是实践并且正确的。本文是靠谱的,而非简单的复制-粘贴。原创 2013-09-29 00:33:29 · 4850 阅读 · 14 评论 -
单元测试Struts2的Action(包含源码)
很久没有从头搭建Struts2的环境了。最近,认真实践了单元测试Struts2、Spring等Java项目。今天特意写的是单元测试Struts2的Action,遇到了不少问题,果然是实践出真知啊。从搭建环境、写代码到写这篇文章,一共花了90分钟。特别说明:本文是原创,搭建环境、写代码、运行,都是实践并且正确的。本文是靠谱的,而非简单的复制-粘贴。原创 2013-09-28 08:24:41 · 5101 阅读 · 4 评论 -
对象的构成模型和关系模型
1.对象的构成模型 作为面向对象编程最基本的构成元素,对象是由一个叫做类(Class)的概念来描述的。因此,针对对象构成分析的研究,也就转化为针对编程语言中类的构成分析。以Java语言为例,我们可以对Java语言中类的定义进行一些构成上的分析。 public class Human{//签名区......................................原创 2012-09-22 16:17:52 · 2075 阅读 · 0 评论 -
用CSS实现阴阳八卦图等图形
CSS还是比较强大的,可以实现中国古典的“阴阳八卦图”等形状。原创 2014-06-06 09:54:12 · 3875 阅读 · 10 评论 -
单元测试代码:SpringTest+JUnit
/** * JUnit单元测试父类,配置了Spring的基础环境。 * 可以作为Controller、Service、Dao单元测试的父类。 * * @author leiwen@fansunion.cn */public class JUnitTestBase { public static XmlWebApplicationContext context = n原创 2013-07-27 18:38:21 · 3299 阅读 · 1 评论 -
Freemarker中的日期转换
1. 把数字类型表示的日期,转换成datetime类型,字符串输出。${item.time?number_to_datetime},默认的格式是“yyyy-MM-dd hh:mm:ss”。在调用之前,可以手动设置datetime的格式,如: 2.把date类型表示的日期,转换成字符串格式,字符串输出。${item.time?string("yyyy年MM月dd日")}3.如果item.time为n原创 2014-11-27 14:20:59 · 6321 阅读 · 0 评论 -
面向接口编程的一个小例子
注:本文重在强调面向接口编程,而非如何防止SQL注入。 今天,在做项目时,需要增加对SQL语句的检测功能,即防止SQL注入的问题。 首先想到的是写一个工具类来完成SQL检测功能:public class SqlCheckUtil{ public static final String[] KEY_WORDS = { "insert", "de原创 2012-09-23 08:23:36 · 1740 阅读 · 0 评论 -
事件响应机制与观察者模式
在GUI事件处理和程序中使用接口回调 这种一次性注册回调程序的方式允许由运行时系统在需要回调某个事件处理程序时做出初步的决定,而不是由处理程序决定。 下面通过代码分步骤详细解释这一过程:1. 运行时库定义了一个接口,其中承诺有一个itHappened()方法。示例如下:Public interfaceActionListener{ Public void原创 2012-09-23 08:19:04 · 2083 阅读 · 0 评论 -
对象的3种运行模式
在实际编程过程中,对象将表现为三种不同的形态和运行模式。 对象的运行模式是根据对象的构成特点来划分的。这三种对象的运行模式,我们分别以文字和代码来说明。-------------------------------------------------------------------------------------------------------------------原创 2012-09-22 16:14:13 · 2025 阅读 · 0 评论 -
怎样在log4j.xml配置文件中引入变量:小公司经验较多的我和阿里UC等大公司经验较多的Boss,一些技术交流和探讨
从最初学习使用log4j的时候,网上和书本上主要都是使用“log4j.properties”这种属性格式,配置日志。多年以来,一直使用这种格式,总的来说,简单、够用。 而有十多年经验的Boss,不建议使用properties格式配置,而是用xml格式配置。Boss之前在阿里(支付宝、淘宝)、UC等大公司工作过。 我们有个很明显的不同: 我比较注重,简单、快速。Boss比较注重,规范、严原创 2015-01-26 19:19:16 · 4115 阅读 · 2 评论 -
Mybatis中sql语句中的in查询,一定要判断null的情况
mysql中的in查询容易出错。原创 2014-12-02 17:50:16 · 7545 阅读 · 0 评论 -
不使用left-join等多表关联查询,只用单表查询和Java程序,简便实现“多表查询”效果
上次我们提到,不使用left-loin关联查询,可能是为了提高效率或者配置缓存,也可以简化一下sql语句的编写。只写单表查询,sql真得太简单了。问题是,查询多个表的数据还是非常需要的。 因此,存在这么一个强烈的需求:查询2个集合,怎么合并2个集合中的数据为1个集合,且数据关联要正确。在实践中,我提炼了如下流程和工具方法:流程 先查询第1个集合,根据第1个集合的结果,查询第2个集合,合并2个集原创 2014-12-05 15:07:27 · 5138 阅读 · 0 评论 -
Web开发之分页算法,N(N>=3)种解决方案
在Web开发中,分页是最常用的一个功能了。但是,想简单、灵活、方便地解决分页这个问题,还是需要动点脑筋的。 今天,简要梳理下,过去6年中,亲自遇到的分页问题和解决办法。 1. 定义问题 原由:在页面中需要展示若干数据,但不可能一次展示所有的,想通过每次只展示若干条。分页数,pageNo,是为了标记,当前访问的内容在哪里。 后端需要做的:后端需要分页查询数据,把数据返回给前端原创 2014-12-06 17:20:21 · 2820 阅读 · 0 评论 -
log4j配置参考手册:log4j.properties和log4j.xml两种格式
log4j是Java Web开发中,最常用的日志组件之一。网上关于log4j的配置满天飞,我主要是从网上学习的配置。之前的很多年,主要使用log4j.properties这种格式。后来,项目中boss使用了log4j.xml这种配置。 关于xml配置,之前也用过,主要觉得麻烦,而且还要手动配置listener,所以基本不用。 和boss交流了下,发现xml格式的配置,语法更全面。我主要发现原创 2014-12-10 13:41:45 · 3119 阅读 · 0 评论 -
SpringMVC拦截器-路径语法-略坑
项目中遇到一种场景,登录拦截器需要拦截.html后缀等动态请求,但是发现语法不对头。 正确的写法: 错误的写法:, 为什么会这样呢?mvc:mapping的语法,与通常的url映射不太一样,比如web.xml拦截器、Struts。(当然,这个是我的个人感觉) 。 我之前的个人感觉是:*.html就是最简单的拦截后缀的path写法。 遇到原创 2014-12-10 13:17:24 · 5203 阅读 · 0 评论 -
Bootstrap3简单好用,轻松实现手机适配
个人官网http://FansUnion.cn,前端使用Bootstrap框架。大部分的样式,轻松就实现了。 只是呢,关于导航条,被无数网友吐槽了。 通过手机访问时,导航条把屏幕给完全占居了,正文内容没有施展抱负的机会,很是遗憾。 在被网友和客户吐槽无数次之后,今天下午,公司同事又吐槽了一次。吐槽归吐槽,很多网友都提醒我改善下,至少有2个懂前端的GG,GG-pslong和公司原创 2014-12-10 19:48:18 · 9242 阅读 · 0 评论 -
怎么实现登录之后跳转到登录之前的页面?SpringMVC+Freemarker
项目中,想实现一个功能。 直接访问某个需要登录的url,比如/addArticle,可能会跳转到登录页面login.html。 登录成功之后,自动跳转到/addArticle这个登录前的页面,继续登录之前的操作。 思路很简单: 登录拦截器,获得backurl, String backUrl=request.getRequestURI(); //返回到原来的页面,而不是系统原创 2014-12-10 22:52:24 · 7159 阅读 · 0 评论 -
SpringMVC3,使用RequestMappint的Param参数,实现一个url绑定多个方法
SpringMVC中,默认不能把多个相同的url绑定到同一个方法。如果需要绑定,需要增加param参数,而且值要不同。 我自己没有这个需求,或者就是有需求,我也想到的是使用不同的url。 项目中有少部分这样的需求,于是就写个demo。 @RequestMapping(value="/test",params="method=method1")public void method1(){ Sys原创 2014-12-11 16:12:29 · 2676 阅读 · 0 评论 -
通过引入SiteMesh的JSP标签库,解决Freemarker与SiteMesh整合时,自定义SiteMesh标签的问题
不少web项目,都用到了SiteMesh。SiteMesh可以和JSP、Freemarker等模版进行整合,有一定的好处,当然也有其不好的地方。我个人觉得,如果没有必要,不要在项目中引入太多的工具和技术,工具多了,项目开发的速度提高不起来。 以前,主要是用JSP作为视图层,最近主要是用Freemarker,然后配置Freemarker和SiteMesh整合。项目中,最初的做法如下所示。 $原创 2014-12-28 12:59:21 · 3853 阅读 · 0 评论 -
AJAX跨域与JSONP的一点实践经验
前几个周,项目中遇到了AJAX跨域的问题,然后找资料解决了。 首先要说明一点,关于AJAX的跨域原理和实践,我的经验还是比较少的,我只是大致看了下网上的资料,结合自己的理解,找到了解决办法,暂时不去仔细研究,因为要做的事情太多了,不可能把所有的问题都给研究透彻了。 问题场景: a.com访问二级域名cms.a.com上的AJAX请求,遇到了跨域问题,Chrome-Firefox都没有原创 2014-12-28 13:22:23 · 2631 阅读 · 0 评论 -
Web前端实践经验总结
最近用了不少业余时间,在加强Web前端。有个很大的感触就是,web前端比较麻烦,主要是布局和样式。最主要的原因,还是之前实践得比较少,熟能生巧,不得不服啊。 自己从头开始写布局和css太费心思了,比较偏好用Bootstrap。看着别人用Bootstrap做得网站很美观,轮到我了,就很差劲。于是乎,研究别人的代码,镜像别人的网站,可以很容易copy到一些网站的前端设计。 网站镜像工具,网上有原创 2015-01-17 20:37:20 · 5203 阅读 · 7 评论 -
怎样在log4j.xml配置文件中引入变量:小公司经验较多的我和阿里UC等大公司经验较多的Boss,一些技术交流和探讨
Boss根据之前在阿里的工作经验,开发和运维可能完全是2拨人。开发只管写代码,把代码写好,没有功能和业务问题。运维,负责把代码部署好,域名解析、Nginx、Tomcat、日志配置。运维导致的问题,运维背锅。功能问题,开发背锅。职责分明,流水化作业。 我对这种流水化的作业是非常认同的,这样的企业生产效率才高,才能为国家和社会创造更多的价值。 而象武汉一起好等很多在技术方面,偏向中小型规模的企业来说,开发和运维很可能就是“同一拨人”。这个时候,系统配置要怎么做,就是个值得探讨的问题了。原创 2015-01-25 14:48:54 · 4568 阅读 · 2 评论 -
JS表格分页组件:fupage的设计思路和具体用法(未来考虑开源,争取在2015年)
一、背景 之前在秒针工作的时候,某js高级工程师写了很多自己的组件,其中一套是分页组件,叫做st-grid。不过在我看来,bug太多,我经常给他反馈bug,我也不清楚为啥别人没有发现。 回到武汉工作后,我自己利用业余实践完善自己的官网,从前端到后端,都是自己一个人亲自搞定。 第1个分页的需求是,文章下方的评论,异步加载。第2个需求是,表格管理,比如后台管理系统,经常需要原创 2015-03-14 22:37:13 · 2117 阅读 · 0 评论 -
Ajax请求Session超时的解决办法:拦截器 + 封装jquery的post方法
目标:前端系统,后端系统等,统一处理Session超时和系统错误的问题。可能需要处理的问题:Session超时、系统500错误、普通的业务错误、权限不足。同步请求: Session超时,登录拦截器,重定向到登录页面。 500等系统错误,SpringMVC自定义ExceptionHanlder,跳转到系统错误页面,给访客友好的提示。原创 2015-03-25 11:01:20 · 4485 阅读 · 0 评论 -
使用jquery-validationEngine框架,4步实现前端JS校验
第1步: 引入CSS和JS src="${base}/static/js/frontbackend.js?fv=${fv}"> 第2步: 定义form class="i-inp validate[required,custom[bankCard]]" /> form有id和class至少2个属性。 input输入框有validate校验样原创 2015-03-25 22:57:15 · 2459 阅读 · 0 评论 -
三种思路实现自定义404页面:Tomcat、SpringMVC精准匹配、重写DispatchServlet
第1种方式:Tomcat直接处理web.xml 404 /error/404.htm 这种只能展示纯静态的页面,非常不灵活。第2种方式:利用Spring MVC的最精确匹配@Controllerpublic class UrlNotFoundController { @RequestMapping("*") public String test404(){原创 2015-03-17 21:10:41 · 6307 阅读 · 2 评论 -
使用JSONP解决跨域问题-代码示例
前段时间用JSONP解决了跨域问题,现在不用了,把代码思路记下来,今后说不定还用得上。 JS代码//查询公告数据 function recentpost(){ $.getJSON(cmsUrl+"/post/recentpost.json?jsoncallback=?",{count:count,categoryid:categoryid}, function(data){ //原创 2015-03-12 11:09:17 · 1592 阅读 · 0 评论