随笔 - 59, 文章 - 4, 评论 - 184, 引用 - 7
数据加载中……

在webwork中使用自定义的Result生成动态验证图片

这个动态图片的实现原理是在servlet的response中写入一个ImageOutputStream,并由servlet容器将其转成图片,在非webwork的实现中,可以直接操作response,但是在webwork中,要想直接操作response的output则必须使用不需要对response操作的result类型

实现一个
Result

 

不可以用普通的dispatcherResultresponseoutputStream中写入东西,否则将覆盖所有的dispatcherjsp页面

上次的代码忘记加上response的设置不缓存了,这样即使使用IE的回退也会刷新图片 

    private HttpSession            session;

    
/**
     * 
@see com.opensymphony.webwork.dispatcher.WebWorkResultSupport#doExecute(java.lang.String,
     *      com.opensymphony.xwork.ActionInvocation)
     
*/
    @Override
    
protected void doExecute(String finalLocation, ActionInvocation invocation) throws Exception
    {
        HttpServletRequest request 
= (HttpServletRequest) invocation.getInvocationContext().get(
                ServletActionContext.HTTP_REQUEST);
        HttpServletResponse response 
= (HttpServletResponse) invocation.getInvocationContext().get(
                ServletActionContext.HTTP_RESPONSE);
        response.setHeader(
"Pragma""No-cache");
        response.setHeader(
"Cache-Control""no-cache");
        response.setDateHeader(
"Expires"0);
        VerifyImage verify 
= new VerifyImage();
        OutputStream os 
= response.getOutputStream();
        String str 
= verify.GetImage(os);
        session 
= request.getSession(true);
        session.setAttribute(
"rand", str);
    }


 

xwork.xml中配置result-type

        <result-types>

            <result-type name="image"

              class="com.bnt.afp.action.verify.ImageResult"/>

        </result-types>

 

添加一个生成图片的action

        <action name="imageAction"

class="com.bnt.afp.action.verify.ImageAction">

            <result name="success" type="image"/>

        </action>

 

在需要生成验证图片的地方这样调用:

<img border=0 src="imageAction.action">


 ImageAction里只要简单的返回SUCCESS就可以了

    public String execute() throws IOException
    {
        
return SUCCESS;
    }



VerifyImage中生成图片的方法:(来自网上一个JSP生成动态验证图片的实例)

       //获取生成的图片,返回生成的验证码,并将ImageOutputStream写入

       
public String GetImage(OutputStream outputStream){

              

              
int width=60, height=20;

              BufferedImage image 
= new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

              Graphics g 
= image.getGraphics();

              Random random 
= new Random();

              g.setColor(getRandColor(
200,250));

              g.fillRect(
00, width, height);

              g.setFont(
new Font("Times New Roman",Font.PLAIN,18));

              

              g.setColor(getRandColor(
160,200));

              
for (int i=0;i<155;i++)

              {

                     
int x = random.nextInt(width);

                     
int y = random.nextInt(height);

                     
int xl = random.nextInt(12);

                     
int yl = random.nextInt(12);

                     g.drawLine(x,y,x
+xl,y+yl);

              }

              String sRand
="";

              
for (int i=0;i<4;i++){

                  String rand
=String.valueOf(random.nextInt(10));

                  sRand
+=rand;

                  g.setColor(
new Color(20+random.nextInt(110),20+random.nextInt(110),20+random.nextInt(110)));

g.drawString(rand,
13*i+6,16);

              }

              g.dispose();

              
try {

                     ImageIO.write(image, 
"JPEG", outputStream);

                     outputStream.flush();

                     
return sRand;

              } 
catch (IOException e) {

                     e.printStackTrace();

                     
return "fail";

              }

       }

 

       
public Color getRandColor(int fc,int bc){

              Random random 
= new Random();

        
if(fc>255) fc=255;

        
if(bc>255) bc=255;

        
int r=fc+random.nextInt(bc-fc);

        
int g=fc+random.nextInt(bc-fc);

        
int b=fc+random.nextInt(bc-fc);

        
return new Color(r,g,b);

       }


                                                                                                                                 转载请注明作者和来源. 

posted @ 2005-11-15 21:14 fisher 阅读(1641) | 评论 (2)编辑 收藏

Picasa - google的新软件

最近登陆google,看到了google的主页上的新软件:Picasa2

最新! Google 的照片管理软件:查找、编辑和分享您计算机上的照片

下载试用了一下,感觉很不错,设计的很人性化,越来越觉得google在关注用户体验方面不输于MS

 

Picasa 2 功能




posted @ 2005-11-12 18:53 fisher 阅读(341) | 评论 (1)编辑 收藏

推荐一部影片

《秘密》
主演:小林熏 广末凉子
-虽然每个女人都想再回到18岁,可是以这种方式回到18岁,我想她宁愿不回去。

影片简介:
  

◎译  名 秘密
◎片  名 Himitsu
◎年  代 1999
◎国  家 日本
◎类  别 剧情/幻想
◎语  言 日语
◎字  幕 韩文/英文
◎IMDB评分 6.6/10 (97 votes)
◎IMDB链接 http://www.imdb.com/title/tt0211413
◎文件格式 XviD + AC3
◎视频尺寸 720 x 384 (1.88 : 1)
◎文件大小 15MB x 100
◎片  长 01:59:53 (119 Min
◎导  演 Yojiro Takita
◎主  演 Ryoko Hirosue .... Monami Sugita/Naoko Sugita
      Yuriko Ishida .... Taeko Hashimoto
      Hideaki Ito .... Haruki Soma
      Ken Kaneko .... Fumio Kajikawa
      Kayoko Kishimoto .... Naoko Sugita
      小林薰 Kaoru Kobayashi .... Heisuke Sugita
      大杉涟 Ren Osugi .... Hiroyuki Kajikawa
      Rie Shibata .... Kazuko Yoshimoto
      Tomoe Shinohara .... Kuniko Kimura
      Hatsuo Yamatani .... Naoko Sugita



◎简  介 

  一对母女搭巴士准备回老家祭祖。巴士的司机(约40~50岁的中年人)因为要供儿子上学所以兼职加班,因此睡眠不足,结果在路上出了车祸。由小林熏所饰演的男主角(剧中约40~45岁)经由新闻得知太太跟女儿出了车祸,赶到医院时,太太撑不了多久就死了,结果当女儿清醒时,他才发现太太的灵魂进入了女儿的身体。总之,就是太太的身体死了,灵魂跑到女儿的身体里,而女儿的灵魂则消失了。

  当男主角经历了这样的事故之后,他不知该如何悲伤,原因是太太死的是身体,但还是藉由女儿的身体生活着,而女儿的灵魂消失了,但却还是看的到人。那失去的到底是什么呢?

  当女主角(广末凉子饰演)出院后便与男主角过着奇异的生活。女主角用着女儿的身体,立志帮女儿生活下去。于是便帮女儿完成了高中的学业并且考上了医学院。在这个时间里女主角在家中依然扮演着妈妈的角色,但在外面则得假装是自己的女儿。

  男主角跟女主角的生活开始有了摩擦。男主角无法跟女主角过着夫妻的生活,因为他爱他的太太,他也很爱他的女儿,所以他无法跟他太太过之前的生活。而女主角上了大学之后,开始参加社团的活动,而且认识了不同的人,于是先生开始约束太太的生活,并且私下偷听太太的电话与偷窥太太的私人物品。

  女主角无法接受无隐私的生活,而她依然深爱着她的丈夫,然而男主角却坚持生活上需保持父女的关系,只有在精神上维持夫妻的关系。在这样的情形下,深深的伤害了两个人的生活,在一次的争吵之后,女主角假装女儿的灵魂回到了身体。于是先生快乐了起来,因为女儿跟妈妈又与他一同生活,只是后来妈妈出现的次数越来越少,最后妈妈终于消失了,只剩下女儿活着。

  几年后,女儿终于要结婚了,结婚的对象是当初肇事司机的儿子。在结婚典礼完毕后父亲与女儿正在话别,此时女主角不小心做了一个只有妈妈才知道的小动作。这时男主角才发现女主角依然是妈妈而不是女儿,而他的太太却嫁给了别人。这时两个人都非常的难过,然而这却是无法改变的事实。

  Duncan's心情:

  这部片子的过程中是蛮幽默的,而且剧情也很特殊。不过整片的风格让人有种浓郁的忧伤。到了结局,更让人感到深深的无奈。

  一开始所思考的第一个问题,即是女儿离开的事实。但是到底应如何哀伤呢?失去的是感受的灵魂而不是身体,然而人们都是用眼睛来思考,那么哀伤是如何的感觉呢?光是这个问题就让我思考了很久,我觉得这是一个很有想象力的假设。

  第二个问题,原本认为两人仍能快乐的生活下去。但是这却突显了时间与环境对于人们的改变。大多数的人们都恐惧改变,由于女主角变换了身体,所以生活有了不同的变化,她再度回到学生的日子,不在是家中的主妇生活,一下子生活的视野宽阔了起来。然而男主角依然是拉面研究公司的老师,他已经是中年人,过着一成不变的生活,他并没有改变,然而女主角的改变却连带的影响了男主角的生活。所以世事都是无常的,有许多是我们无法去承诺的。

  第三个问题是爱的极限。男主角因为爱他的太太与女儿,所以事情发生后他选择了痛苦的生活,不论是生活上或是精神上。太太也爱先生,也深爱女儿。所以最后她决定以女儿的身分生活,帮她女儿过完他无法继续的人生。原本他选择跟她先生一起度过,然而她先生却再也无法快乐的生活,于是她只好真的扮演她自己的女儿,再也无法过她原本的生活,包括私人的时候。

  因为爱的太深,所以突显了生活是如此无奈。一辈子的誓约,女主角经历了两次,那是多么的幸福却又多么的残酷。

  所以爱能有多深呢???

  爱到浓时,真的是幸福吗???

  推荐大家看看这部片子,尤其是感情已经到老夫老妻境界的人,也许会有更强烈的感想吧!

 这部片子的主题曲是「天使的叹息」,真是贴切,所有的感想到后来便成了深深的叹息!

posted @ 2005-10-30 01:05 fisher 阅读(722) | 评论 (2)编辑 收藏

Eclipse的启动框架

     摘要: 很久没更新了,拿以前写的日记充充数  阅读全文

posted @ 2005-10-24 23:12 fisher 阅读(1816) | 评论 (2)编辑 收藏

六度分割理论走向实践

六度分割是这样的理论:所谓六度分割理论是指six degrees of separation,是在20世纪60年代由哈佛大学心理学家 stanley milgram提出的,six degrees of separation,六度分割。简单来说,六度分割就是在这个社会里,任何两个人之间建立一种联系,最多需要六个人(包括这两个人在内),无论这两个人是否认识,生活在地球的任何一个地方,他们之间只有六度分割。

1、残缺的六度
(1)关系的强弱——权值问题
(2)到达和建立联系的区别——目的和结果问题
(3)传递的成本和激励——阻尼问题...

这两年,社会性网络的探讨在国内很热,很多搞网络多年但是还没发家的都在抄这个概念。

随着社会性网络的探讨逐渐走向成熟和实用化,很多网络大潮的前沿人士已经开始实践六度分割理论,国内的linkist就是在社会人脉方面的一个实践

可以使用下面的链接加入我的交际圈: ,Just for fun!^_^

下面这个试验很有意思,有兴趣的朋友可以实践实践
用六度分割理论买火车票

不过六度分割理论虽然很可能是正确的,但是对于现实来说,确没有太大意义,如果不能建立高度信任的关系,仅仅认识是不够的,要想调动人脉资源还是主要靠一度或二度联系,要想让一个朋友的朋友的朋友的朋友帮你搞点事情....除非有利益驱动。

最后推荐一篇很好的关于六度理论和SNS实践的文章
残缺的六度理论和SNS的实践者们

posted @ 2005-10-24 22:30 fisher 阅读(1801) | 评论 (1)编辑 收藏

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