月光疾风

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年2月14日

摘要: 一、混淆复选框和单选按钮 复选框和单选按钮是比较常见的两种不同控件,但是很多人不知道它们到底有什么区别。 单选按钮用于从多个值中选择一个,每一个值对应一个按钮,这多个值在逻辑上就是一组按钮,每次选择都只能选中一个。有的GUI工具包把单个的单选按钮作为一个控件,有的GUI工具包把一组单选按钮(可以根据某个属性来确定数目)作为一个控件。在前一种情况下,需要自己编写代码实现同组单选按钮的选项互斥。 复选框用于从两个相反的值中选择一个。不管在什么GUI工具包中,复选框总是一个独立的控件。尽管经常看到很多复选框成组出现在页面上,但是每个复选框和其他复选框之间是独立的。比如下面这个例子所显示的这样:这是博 阅读全文
posted @ 2011-02-14 13:28 月光疾风 阅读(1200) 评论(0) 推荐(0)

2011年2月11日

摘要: 1.关注用户及其任务,而不是技术用户使用软件,或者访问一个网站,目的是完成一项任务,他们不关心这个软件或者网站用了什么技术,所以开发人员也应该把注意力放在用户和任务上。2.首先考虑功能,然后才是表示 这条原则并不意味着先实现功能,再设计用户界面。这种做法是不可能设计出成功的软件的。这条原则的真正意思是,要先分析用户需要的功能,然后设计界面。3.与用户对任务的看法表示一致 不要让用户做不自然的事情,不要强加任何不自然的限制,要使用用户的词汇而不是自己的词汇,注意复杂度和功能的平衡。4.设计要符合常见情况 要考虑某个功能有多少人要使用,使用频度如何。使用的人越多,这个功能就应该放在越明显的地方;使 阅读全文
posted @ 2011-02-11 23:42 月光疾风 阅读(716) 评论(0) 推荐(0)

2010年12月24日

摘要: 学校某网站当时做的时候,找的外面的人做的。虽然做的很好,但是部署起来相当麻烦,而且还没有文档。昨天就出了问题,是图片处理出了问题。我又按照控制台的错误提示,上网查了查,原来是需要安装ImageMagick和jMagick。今天又出现了问题,页面上的通知公告没有数据。控制台显示Mysql错误:"User does not have access to metadata required to determine stored procedure parameter types. ...... "。网上说在数据源配置的url里,加上"&noAccessToProcedureBodies=true" 阅读全文
posted @ 2010-12-24 09:22 月光疾风 阅读(4058) 评论(0) 推荐(0)

2010年12月9日

摘要: 本文主要介绍一下,Web应用是如何从HTML网站发展到Servlet,又发展到现在的SSI框架的。其实就是一个表格。序号  问题    解决方案1使用HTML开发静态页面2页面内容是静态的,不能和数据库交互使用JDBC连接数据库,同时为了显示动态信息,使用Servlet开发页面。3前后台数据交互、业务逻辑、数据库操作、页面跳转控制以及生成新页面,都集中在一个Servlet中1.引入Control,将前后台数据交互和页面跳转控制放到Control中,由Control转发到不同的Servlet,从而到达不同页面。2. 把数据库操作放到独立的类中,作为服务提供给Control。3. Control和 阅读全文
posted @ 2010-12-09 16:07 月光疾风 阅读(3156) 评论(0) 推荐(0)

2010年12月8日

摘要: 最近想把Web应用的网页文件,数据库和上传文件三部分分离。这样网页文件可以部署在虚拟机上,而且除非修改页面内容,是不需要多次备份的。数据库和上传文件部分可以放在实体服务器上,即便系统崩溃,只要硬盘没有坏,就能很快地恢复数据。上传文件如果和网页文件在不同的机器上,可以使用NFS来实现。1. 准备工作:用NFS-Client表示Web应用所在的机器,其IP为Client_IP;用NFS-Server表示上传文件所在的机器,其IP为Server_IP。NFS-Server上,上传文件所在文件夹为/root/uploadfiles/, NFS-Client上指向NFS-Server:/root/upl 阅读全文
posted @ 2010-12-08 19:56 月光疾风 阅读(10957) 评论(3) 推荐(2)

2010年11月26日

摘要: 有时候,使用Struts2的<s:fielderror />标签还是比较好的。但是这个标签本来的样式实在很难看,不但换行,而且有个大大的黑点。一看就知道用了<ui><li /></ui>。修改方法:1. 找到struts2-core-2.XXX.jar,解压。2. 在struts2-core-2. XXX/template/simple目录下找到fi... 阅读全文
posted @ 2010-11-26 11:39 月光疾风 阅读(2773) 评论(0) 推荐(0)

2010年11月23日

摘要: 引用的转义使用"\",指令的转义也是使用"\"。但是,指令的转义要比引用的转义复杂很多。例如:[代码]使用转义:[代码]此时,"\"和"#"结合,从而破坏了原本的#if(),而$foo作为判断条件,也不会被解析。所以上面这段代码,无论$foo是true还是false,结果都是如果使用两个"\":[代码]首先,#if前面的两个假定$foo是true,那么会输出"Go!",并且是紧跟在刚才的"\"后面... 阅读全文
posted @ 2010-11-23 20:38 月光疾风 阅读(6377) 评论(0) 推荐(0)

摘要: 定义宏和使用宏#macro指令用于定义一个VTL模板的重复代码块——宏。下面是一个简单的定义宏的例子:[代码]这段代码定义了一个宏,名字为d,没有参数。下面是使用这个宏的代码:[代码]Velocity在遇到#d()的时候,会用"<tr><td></td></tr>"替代上面的#d()这一行。宏的参数:宏也可以带参数,而且是任意... 阅读全文
posted @ 2010-11-23 17:40 月光疾风 阅读(9917) 评论(0) 推荐(1)

摘要: #Include和#Parse都是用于将本地文件引入当前文件的指令,而且被引入的文件必须位于TEMPLATE_ROOT。这两者之间有一些区别。#Include被#Include引入的文件,其内容不会被Velocity引擎解析,所以这些文件应该是静态模板,即不含有VTL的模板。使用#Include()指令时,参数是被双引号括起来的文件名或者是表示文件名的变量。如果有多个文件,以逗号隔开即可。比如#I... 阅读全文
posted @ 2010-11-23 16:44 月光疾风 阅读(6331) 评论(0) 推荐(1)

摘要: 首先是#foreach的简单示例:[代码]上面这个例子中,$allElems可以是一个Vector,一个HashTable,一个数组。在Velocity中,有一个变量$velocityCount用作循环计数,初始值是1。这个变量的名字和初始值是在velocity.properties文件里配置的。下面是更多的几个例子:[代码][代码] 阅读全文
posted @ 2010-11-23 15:35 月光疾风 阅读(43233) 评论(0) 推荐(3)