2008年5月22日

Hibernate3一个不错的入门介绍

摘要: Hibernate 是「物件/關係對應」(Object/Relational Mapping)的解決方案,簡寫為ORM,簡單的說就是將 Java 中的物件與物件關係,映射至關聯式資料庫中的表格與表格之間的關係, Hibernate 提供了這個過程中自動對應轉換的方案。

2001年未 Hibernate 第一個版本發表,2003年6月8日 Hibernate 2 發表,並於年未獲得 Jolt 2004 大獎,後被 JBOSS 收納而成為其子項目之一,2005年3月 Hibernate 3 正式發表,當中有了一些重大的改變,這份文件將以之前 Hibernate 2 時撰寫的文件為基礎,針對 Hibernate 3作重新整理的動作,所使用的版本為Hibernate 3.0
阅读全文

posted @ 2008-05-22 18:15 Neo0820 阅读(307) 评论(0) 编辑

Northwind数据库惹的祸

早上使用Northwind数据库做Struts2和Hibernate的测试数据库,使用Struts的Action输出Categories数据表的Picture字段的数据,也就是输出图片。

    public String execute()
    {
        
        ***.redev.business.Categories bizCate
          
= new ***.redev.business.Categories();

          ***.redev.orm.Categories cate
            
=  (***.redev.orm.Categories)
                    bizCate.Retrieve(
2);
          

          
          
byte[] buf  = cate.getPicture();
          
         HttpServletResponse response 
          
=  org.apache.struts2.ServletActionContext.getResponse();
          
             response.setContentType(
"image/jpeg");
             
             
              javax.servlet.ServletOutputStream  os 
=null;
              
try
              {
                  os 
= response.getOutputStream();
                  os.write(buf
);
                  os.close();
                  
              }
              
catch(java.io.IOException ex)
              {
                  ex.printStackTrace();
              }
              
return SUCCESS;
    }

一开始怎么输出图片都是那种 打红色叉号那种。 以为写法有问题,使用字符串转换为byte[]测试结果显示正常,忙活了一个早上,后来查网上有网友说:
如何取出NorthWind中Employees表中的Photo字段的图片并显示出来?
此表中图片显示常见的问题是:由于Northwind数据库內含的 image 资料最开头有78 bytes 的表头,所以需要手动将它去除。这也是大多数人费劲心思都无法显示那九个员的的图片的原因。
 这不是摆明坑人,欺骗老百姓嘛!估计Category表也应该是同样原因。

    public String execute()
    {
        
        ***.redev.business.Categories bizCate
          
= new ***.redev.business.Categories();

          ***.redev.orm.Categories cate
            
=  (***.redev.orm.Categories)
                    bizCate.Retrieve(
2);
          
          
          
int  offset = 78;
          
          
byte[] buf  = cate.getPicture();
          
         HttpServletResponse response 
          
=  org.apache.struts2.ServletActionContext.getResponse();
          
             response.setContentType(
"image/jpeg");
             
             
              javax.servlet.ServletOutputStream  os 
=null;
              
try
              {
                  os 
= response.getOutputStream();
                  os.write(buf, offset, buf.length
-offset);
                  os.close();
                  
              }
              
catch(java.io.IOException ex)
              {
                  ex.printStackTrace();
              }
              
return SUCCESS;
    }
 
果然是这个问题,数据流输出正常。

posted @ 2008-05-22 16:54 Neo0820 阅读(121) 评论(0) 编辑

Struts2在Action类中获得HttpServletResponse对象的四种方法[转]

摘要: struts1.x Action类的execute方法中,有四个参数,其中两个就是response和request。而在Struts2中,并没有任何参数,因此,就不能简单地从execute方法获得HttpServletResponse或HttpServletRequest对象了。
但在Struts2 Action类中仍然有四种获得这些对象的方法。
阅读全文

posted @ 2008-05-22 11:35 Neo0820 阅读(929) 评论(0) 编辑