05 2013 档案

摘要:一、问题 在前一章《设计模式读书笔记-----简单工厂模式》中通过披萨的实例介绍了简单工厂模式。在披萨实例中,如果我想根据地域的不同生产出不同口味的披萨,如纽约口味披萨,芝加哥口味披萨。如果利用简单工厂模式,我们需要两个不同的工厂,NYPizzaFactory、ChicagoPizzaFactory。在该地域中有很多的披萨店,他们并不想依照总店的制作流程来生成披萨,而是希望采用他们自己的制作流程。这个时候如果还使用简单工厂模式,因为简单工厂模式是将披萨的制作流程完全承包了。那么怎么办? 二、解决方案 我们可以这样解决:将披萨的制作方法交给各个披萨店完成,但是他们只能提供制... 阅读全文
posted @ 2013-05-26 00:09 chenssy 阅读(5185) 评论(1) 推荐(13) 编辑
摘要:这个从字面上就可以看出:不能初始化,没有session。也就说主要原因是因为session关闭了。 在Hibernate中,<many-to-one.../>中的lazy默认为proxy。这样hibernate在数据库中查询数据时事不会把关联的对象查出来的,而是保存一个获得该值得方法:getXxxx()。当我们需要使用这个值的时候,也就是使用getXxx()方法来调用的时候,Hibernate就会利用这个方法从数据库中获取相应的数据。但是很不幸,我们的session早就关闭了。这是因为Hibernate的懒加载策略,在Hibernate中是使用sessionFactory来管理se 阅读全文
posted @ 2013-05-25 08:49 chenssy 阅读(3224) 评论(0) 推荐(0) 编辑
摘要:在设计原则中有这样一句话“我们应该针对接口编程,而不是正对实现编程”。但是我们还是在一直使用new关键字来创建一个对象,这不就是在针对实现编程么? 针对接口编程,可以隔离掉以后系统可能发生的一大堆改变。入股代码是针对接口而写,那么可以通过多态,它可以与任何新类实现该接口。但是,当代码使用一大堆的具体类时,等于是自找麻烦,因为一旦加入新的具体类,就必须要改变代码。在这里我们希望能够调用一个简单的方法,我传递一个参数过去,就可以返回给我一个相应的具体对象,这个时候我们就可以使用简单工厂模式。 一、基本定义 ... 阅读全文
posted @ 2013-05-24 07:48 chenssy 阅读(8945) 评论(2) 推荐(16) 编辑
摘要:我们都知道,可以使用两种方式给一个类或者对象添加行为。 一是使用继承。继承是给一个类添加行为的比较有效的途径。通过使用继承,可以使得子类在拥有自身方法的同时,还可以拥有父类的方法。但是使用继承是静态的,在编译的时候就已经决定了子类的行为,我们不便于控制增加行为的方式和时机。 二是使用关联。组合即将一个对象嵌入到另一个对象中,由另一个对象来决定是否引用该对象来扩展自己的行为。这是一种动态的方式,我们可以在应用程序中动态的控制。 与继承相比,关联关系的优势就在于不会破坏类的封装性,且具有较好的松耦合性,可以使系统更加容易维护。但是它的缺点就在于要创建比继承更多的对象。一、基本定... 阅读全文
posted @ 2013-05-23 07:11 chenssy 阅读(4542) 评论(6) 推荐(6) 编辑
摘要:学习设计模式已经有段时间了,这是总结的第一篇博客,文中有错误、漏洞之处,望各位支出,改正。观察者模式 一、基本定义 何谓观察者模式?观察者模式定义了对象之间的一对多依赖关系,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并且自动更新。 在这里,发生改变的对象称之为观察目标,而被通知的对象称之为观察者。一个观察目标可以对应多个观察者,而且这些观察者之间没有相互联系,所以么可以根据需要增加和删除观察者,使得系统更易于扩展。 观察者模式又称为发布-订阅模式。 二、基本结构 首先先看观察者模式的UML类图。 分析: Subject:目标。他把所有对观察... 阅读全文
posted @ 2013-05-22 08:14 chenssy 阅读(5036) 评论(3) 推荐(9) 编辑
摘要:今天做项目,几乎所有的提交都是通过ajax来提交,我测试的时候发现,每次提交后得到的数据都是一样的,调试可以排除后台代码的问题,所以问题肯定是出在前台。每次清除缓存后,就会得到一个新的数据,所以归根到底就是浏览器缓存问题。纠结了很久,终于解决了,在这里总结一下。我们都知道ajax能提高页面载入的速度主要的原因是通过ajax减少了重复数据的载入,也就是说在载入数据的同时将数据缓存到内存中,一旦数据被加载其中,只要我们没有刷新页面,这些数据就会一直被缓存在内存中,当我们提交 的URL与历史的URL一致时,就不需要提交给服务器,也就是不需要从服务器上面去获取数据,虽然这样降低了服务器的负载提高了用户 阅读全文
posted @ 2013-05-21 08:17 chenssy 阅读(9630) 评论(32) 推荐(17) 编辑
摘要:在上一篇是展示了showModelDialog的基本使用。当点击我要修改时,需要在后台生成excel文件,同时需要提供下载文件功能。 生成excel文件容易、弹出”文件下载”也容易: 点击按钮,跳转到action中,在该action中生成Excel文件,填充数据,保存到临时文件夹中,然后在按钮的Click事件中,根据模板生成Excel报表,填充数据,保存到临时文件夹,然后output.wirte()。一切看起来很顺利。Action如下(弹出"文件下载"窗口): 1 /** 2 * @param response 3 * @param downloadFile 4 ... 阅读全文
posted @ 2013-05-20 09:50 chenssy 阅读(916) 评论(0) 推荐(1) 编辑
摘要:前两天接到这样一个任务:在用户上传附件,需要校验用户上传附件中身份证信息,如果存在错误信息需要将所有的错误信息展示出来。这个需求我一开始考虑得就是使用jQuery Dialog。但是看到这个项目没有使用而是使用showModelDialog,所以为了统一,也需要使用showModelDialog。所以就记录下来以供后面使用。正文:window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框,由于是对话框,因此它并没有一般用window.open()打开的窗口的所有属性。使用方法:varreturnValue = window.showModalDialog(U. 阅读全文
posted @ 2013-05-19 10:12 chenssy 阅读(1217) 评论(0) 推荐(0) 编辑
摘要:项目需要做一个头像截取的功能,类似于QQ头像截取功能。在网上搜了下,最后使用jQuery插件jcrop来截取,在后台来进行图片切割。头像截取的原理:在前台使用jcrop获取切面的x轴坐标、y轴坐标、切面高度、切面宽度,然后将这四个值传给后台。在后台要进行放大处理:将切面放大N倍,N=原图/前台展示的头像。即X = X*原图宽/前图宽,Y = Y*原图高/前图高,W = W*原图宽/前图宽,H = H*原图高/前图高。实例:JSP:<div id="cutImage" style="display: none;"> <div class= 阅读全文
posted @ 2013-05-18 10:18 chenssy 阅读(5043) 评论(2) 推荐(3) 编辑