ice world

There is nothing too difficult if you put your heart into it.
posts - 104, comments - 103, trackbacks - 0, articles - 0

新项目需求,要在页面中加载一个叫“大卫三角形”的图形,还是GB(国标)中的东西,在网上搜索了一下“大卫三角形”,无果,也不知道什么东西,而且根据 什么画出来的也不清楚。领导让试试,看能不能画出来。事前从未使用过开发语言画图,Windows的画板倒是用过,连Photoshop都不会用,汗!而 且不是用手握着画笔或者鼠标在屏幕上乱写乱画,是用程序语言将图画出。


在网上搜寻关于使用JAVA画图的信息,知道了JAVA 2D,又下了几个用Graphics2D画图的例子,看了看Java核心API。开始着手画图。不画不知道,画了才知道,开发Windows画图和其他画 图软件的程序员都为我们做了多少贡献,因为用程序画图简直太麻烦了,一点一点的描,一线一线的连。像我画这个图还要经过很多次的计算,主要是计算坐 标,Graphics2D能画的东西很多,但是要在User Space里给它指定坐标。

经过不到两天的努力,终于完成了这幅“大卫三角形”!虽然是硬画出来的,并无什么计算公式而言(况且我也不会啊!),但还是有些激动,毕竟是第一次用程序画图么!


发布到WEB,最终“大卫三角形”的摸样:

posted @ 2011-04-16 14:32 IceWee 阅读(2425) | 评论 (2)编辑 收藏

最近在写一个tab标签控件,用到了childNodes,节点可以用childNodes[0]来获取其第一个节点,但是有些节点是有隐藏节点的,即便 你不写,它也是存在的,我就遇到了这么个主儿,table,我曾两次受到它的折磨,想要的东西得不到,想要的效果出不来,都拜它所赐!那是因为用 table.childNodes[0]得到的并不是你在HTML里写的第一个<tr>节点,而是一个tbody的节点,即便你不写,它也是 存在的,所以当你想得到第一个tr节点时你必须这样写:table.childNodes[0].childNodes[0]。就是如此!

posted @ 2011-04-16 14:29 IceWee 阅读(1212) | 评论 (0)编辑 收藏

最近经常要调整系统中的一些页面,虽然不是专业的美工,但也要略知一二才能应付得了。

例一:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>table.html</title>
<meta http-equiv="content-type" content="text/html; charset=GBK">
<style type="text/css">
<!--
body
{
margin
: 0px;
}
//
-->
</style>
</head>
<body>
<table height="100%" width="100%" cellSpacing="0" cellPadding="0"
border
="2" bordercolor="black">
<tr>
<td height="100%" width="200px" bgcolor="red">

</td>
<td height="100%" width="10px" bgcolor="green">

</td>
<td height="100%" width="100%" bgcolor="blue">

</td>
</tr>
</table>
</body>
</html>

上面的效果为整个页面呈现蓝色,看起来没什么奇怪的,因为第三个td设置了宽度为100%,所以前两个td的宽度自然被挤没了。只要把红色的100%去掉留空,或者干脆不写宽度,那么正是想看到的结果,第三个td占用剩余的文档宽度。

例二:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>table.html</title>
<meta http-equiv="content-type" content="text/html; charset=GBK">
<style type="text/css">
<!--
body
{
margin
: 0px;
}
//
-->
</style>
</head>
<body>
<table height="100%" width="100%" cellSpacing="0" cellPadding="0"
border
="2" bordercolor="black">
<tr>
<td height="200px" width="100%" bgcolor="red">

</td>
</tr>
<tr>
<td height="100px" width="100%" bgcolor="green">

</td>
</tr>
<tr>
<td height="100%" width="100%" bgcolor="blue">

</td>
</tr>
</table>
</body>
</html>

这次table改为三行,宽度都为100%,三个tr分整个文档的高度,第三个td的高度100%,根据例一的经验,第三个tr应该会占据其余两个tr的 高度,也就是和例一一样的效果,满屏蓝色。但是结果却不是想象中的那样。接着把100%换为空串或去掉高度的设置,效果都一样。这不能用什么来解释,只能 记住,这就是td设置高度和宽度的差别。

posted @ 2011-04-16 14:28 IceWee 阅读(427) | 评论 (0)编辑 收藏

使用Ajax调用Action获取XML字符串,其中包含中文,使用如下代码输出:
ServletOutputStream out = response.getOutputStream();
request.setAttribute("xmlTree", tree);
   out.print(tree);

在JDK1.5平台运行一切正常,在JDK1.6平台运行抛出异常:

严重: Servlet.service() for servlet action threw exception
java.io.CharConversionException: Not an ISO 8859-1 character: 全
at javax.servlet.ServletOutputStream.print(ServletOutputStream.java:89)
at com.xjgc.rsm.web.action.ProblemtypeAction.createTypeTree(ProblemtypeAction.java:282)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
at com.xjgc.rsm.web.action.ProblemtypeAction.execute(ProblemtypeAction.java:37)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.extremecomponents.table.filter.AbstractExportFilter.doFilter(AbstractExportFilter.java:49)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:174)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:75)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)

异常的大概意思是说非ISO-8859-1编码,确实,我使用的GBK。而且第一行就是

at javax.servlet.ServletOutputStream.print(ServletOutputStream.java:89)

问题可能出现在ServletOutputStream上,于是用PrintWriter替换了ServletOutputStream,运行正确,如:

PrintWriter pw = response.getWriter();
pw.print(tree);


posted @ 2011-04-16 14:25 IceWee 阅读(2229) | 评论 (0)编辑 收藏

之前就出现过许多次这种情况,大概出现前都是项目的迁移,这必然导致环境的差异,如从公司的JDK1.5迁移到家里的JDK1.6,eclipse自带有JDK的jar包,可以使用本地的也可以使用自带的,于是作出如下操作:

点击eclipse上的服务器图标,选择Configure server - Servers - Tomcat - Tomcat x.x - JDK 选择本机上安装的JDK即可,Apply。启动Tomcat,OK!

posted @ 2011-04-16 14:22 IceWee 阅读(1429) | 评论 (0)编辑 收藏

项目中需要上传一些较大的文件,都是一些压缩备份文件,动不动就几百M。系统框架SSH,必然用Struts。而Struts提供了 FormFile类来上传文件。起初一切正常,上传下载的都没问题,但过了一段时间后客户提出大于300M的文件上传不上去。测试后发现果真如此,但是后台并不报错,直接返回下面的forward了。因为是初次使用,下面就是我一小天行走的过程。

起初,我开始到处搜寻网上的上传文件下载,很多人用的都是apache得commons-fileupload.jar这个组件,而且代码都贴出了,我随便下了一个小demo,屡试不爽,别说300,500M也能传上去,而且也用了Struts,我开始犯晕。我试着将我的环境与demo得环境代码尽量相似,至少主要代码应该差不多。我将目前系统中的上传附件代码改成了demo中的:

DiskFileUpload upload = new DiskFileUpload();
List uploadList 
= upload.parseRequest(request);


但是每次使用uploadList.size();时获取到得都是0,根本传布了。我更晕了。。。

我再次仔细的对比demo和系统,最后发现demo中没有使用Struts的FormBean,会不会是这里的问题?于是我将demo中也增加了 FormBean类,标签都用上了Struts的标签,这次果然demo也失效了。。。终于被我发现,都是FormBean的问题,但现在我又不可能舍弃 FormBean,因为不仅仅是附件,还有别的很重要的一些属性,代码都写好了,不可能大范围修改,那咋办?

为什么fileupload可以传那么大,而你struts却传不上大于300M的文件?再次搜索,终于发现原因,Struts在写 FormFile类时借助的是fileupload中的API,设置的默认大小为250M,难怪传不上去!如何设置更大一些或更小一些呢?这样:

在Struts配置文件的mapping标签后加上

<controller maxFileSize="1024M" />


看到这个小标签页不用解释什么了吧!我设置了1G,现在传只要小于1G的附件都没问题了!

posted @ 2011-04-16 14:20 IceWee 阅读(1463) | 评论 (0)编辑 收藏

平常只用日期,很少精确到时间,今天偶尔用到了时间,发现小时比本机时间小了8个小时,操作系统是WIN7。时区设置也是+8北京。在网上搜索到可能是注册表坏了,下了一个XP的注册表导入后恢复正常了。

原帖地址:http://huiy.javaeye.com/blog/200512

问题描述:Window XP 系统自己能够读取正确的时间,但是用java获取的时间始终与北京时间相差八个小时。
原因分析:
1.系统本身时区设置错误(可以排除,上面已经交代系统能够获取正确时间
2.注册表出现异常。
注册表对应项:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones
解决之道:
1.备份Time Zones这一项
2.从正常的并且是相同系统的机器中导出该项,然后倒入到自己机器中

上招不行,还有一招!

1.找到jdk 的安装路径 找到 如:
a) C:\Program Files\Java\jdk1.5.0\jre\lib\zi\Etc;
b) C:\Program Files\Java\jdk1.5.0\jre\lib\zi;
c) C:\Program Files\Java\jre1.5.0\lib\zi\Etc;
d) C:\Program Files\Java\jre1.5.0\lib\zi;
这四个文件路径下找到 GMT 文件 进行删除(注意:在删除之前将其文件备份一下,以防万一);在 C:\Program Files\Java\jdk1.5.0\jre\lib\zi\Etc 下找到 GMT-8 文件复制一份 重命名为 CMT ,将其原来 的 GMT 文件覆盖掉即可!

posted @ 2011-04-16 14:17 IceWee 阅读(1003) | 评论 (0)编辑 收藏

前不久终于从XP升级到WIN7了,感觉真的很不错,非常新鲜、漂亮,当然也有些小不快,比如说一些开发软件不兼容,要下载VISTA版本的才可以正确运行。最近又遇到了一个小问题,就是软件中文乱码,上次出现乱码的软件竟然是 360卫士,但很快就解决了,大家都知道360的更新速度,几天就更新一次,目前的版本一切正常。这个是软件上的解决方案,等于自己什么也没做,全靠奇虎了。我刚刚下载了一个叫QQCar的小软件,启动后竟然是乱码,首先我的系统是英文版本的,安装的汉化语言包,貌似没有汉化好,因为启动和关闭的时候都没显示“启动 Windows”和“关闭”而是显示“starting windows”和"log off""shut down"一类英文,但是笔记本上安装的都一切正常。

最后,切入正题,解决乱码:

设置区域和语言就不说了,想必都知道,就是因为这个已经设置好了还是乱码才有此文章的。

最后一招是通过修改注册表来完成的。

将[HKEY_CURRENT_USER-Control Panel-International-Locale]的键值修改为00000804,重启电脑,再次运行乱码的软件,OK。

PS:这个键值本来为00000409,我不知道代表何意,解决方法完全来源于网络,但确实解决了乱码问题。

posted @ 2011-04-16 14:16 IceWee 阅读(699) | 评论 (0)编辑 收藏

最近和Office啊、PDF啊、Visio等打交道挺多,突然昨天突然发现.doc/.docx/.xls/.pdf/.vsd/.mpp/.ppt/.pptx/.xls/.xlsx等后缀的文件类型图标都无法显示了,显示成未识别的图标样式,于是一顿神搜,很多说改注册表,但我觉得麻烦,放弃了。最后解决方案是从同事那里拷过来那些需要的文件到自己的文件夹下。

出现这种情况的原因是由于C:\Windows\Installer中的必要文件夹丢失,下面列出我丢失的文件夹列表:

Office2007:{90120000-0011-0000-0000-0000000FF1CE}

AdobeReader:{AC76BA86-7AD7-2052-7B44-A93000000001}

Visio2007:{90120000-0051-0000-0000-0000000FF1CE}

Project2007:{90120000-003B-0000-0000-0000000FF1CE}

第一步,到同事的机器里找到以上的文件夹拷贝到自己的机器上

第二步,如果文件类型图标还没恢复,手动设置一下打开方式,并且亲自浏览应用程序的目录。

posted @ 2011-04-16 14:15 IceWee 阅读(961) | 评论 (0)编辑 收藏

网站上的文章用什么存储?使用Oralce用CLOB存储,Java操作CLOB的方法网上很多,可是发现读取后显示在网页上和录入时的格式完全不同,该有的段落已经不复存在,由于页面中使用的是textarea标签而不是强大的网页文本编辑器,所以要自己处理格式的问题了,下面是我找到的一个专业函数,使用它将前台传过来的文章字符串转义一下再存入数据库,这次再读取出来的文章就有段落的显示了。
/** 
 * 格式化文章信息,保持文章的格式(保存时用) 
 * 
@param str 
 * 
@return 
 
*/

public String HTMLEncode(String str) {
    str 
= str.replace(">""&gt;"); 
    str 
= str.replace("<""&lt;");    
    
char ch;    
    ch 
= (char32// space    
    str = str.replace(String.valueOf(ch), "&nbsp;");    
    ch 
= (char34// ''    
    str = str.replace(String.valueOf(ch), "&quot;");    
    ch 
= (char39// '    
    str = str.replace(String.valueOf(ch), "&#39;");    
    ch 
= (char13// carriage return    
    str = str.replace(String.valueOf(ch), "");    
    ch 
= (char10// new line    
    str = str.replace(String.valueOf(ch), "<BR>");    
    
return str;
}

posted @ 2011-04-16 14:13 IceWee 阅读(1072) | 评论 (5)编辑 收藏

仅列出标题
共11页: First 上一页 2 3 4 5 6 7 8 9 10 下一页 Last