原始森林中的一个狼窝

常用链接

统计

积分与排名

我的好友

最新评论

#

2006年10月18日星期三

早起先把昨天修改的程序发了过去,运行检查,没啥问题。小强说他们的电脑有病毒,总是有问题,也没说啥问题,问我是否要重新装系统,最好不要吧,那样的话, SQL Server 和 .NET Framework 都要重新装,估计他们装不好,岂不是我又要到长春一趟,我的天,命苦呀。他说找人给看看,最好还是杀毒吧。我还是那句老话,“有病治病,用不着打死,重生吧!”此时听到敲门声,说是电话局的,说什么推出新政策,可以省话费什么的,存属扯蛋,这种骗人的把戏电视上都演过多少次了,还有人使用。当我白痴呀。我没理,那人便敲邻居的门,谁也不搭理他,未果,就离开了。现在这世道,可不能随便开门,坏人太多啦!也经常接到这样的电话,说你中 50 万,先汇点手续费什么的。奶奶个熊的,就是骗呀。我妈最逗,也不废话,直接回应:“中了,我不要了,都给你了。”电话一撂,拉到。只要不贪心,永远不会上当的。

昨天去三好街了,所以正常的周二下午游泳,推迟到了今天。天气凉了,泳池人少多了。我喜欢,这样可以围着整个泳池游,比较爽。今天状态不错, 2 小节,没节 6 圈,总长 1200 米只多不少,而且还游了好几个来回的 22 米往返。估计今天的总长度会在 2000 米上下。每周两次的游泳,对身体帮助很大,而且放松紧张的身体和心灵。我比较相信水里有种能量是可以被人体吸收的,所以每次过后倍感舒爽。回来的路上看到有家福利彩票的投注站,进去瞄了几眼,打算玩玩,可是不懂规则,上网查查。打算自己做个统计的程序来投注,也就是随机数字啦。就当熟练一下随机数方法了。话不多说,现在就开始动手。

posted @ 2006-10-20 21:07 白洋 阅读(311) | 评论 (0) | 编辑 收藏

2006年10月17日星期二

好友小楠要买块硬盘,叫我帮忙看看,我也是了解不多呀。到了电子市场,就开始狂晕了,先是太长时间不来,哪里都不认识,问了几家的价格,心也没底怕被蒙,所以还是打电话找朋友帮忙吧。那可真是笑话百出了。先是问要什么牌子的,小楠说西捷酷鱼的,要 200GB 的,我一紧张,说成了 20GB ,哥们顿时语塞,又问一遍,你要多大的?才回过神,哈 200GB 。问我要啥口的。说是串口还是并口。我汗,我就知道有 IDE 和 SCSI 之分,每听说还有啥口的。没整明白,然后问啥主板的,小楠更逗,她自己也不知道,朋友说,你干脆拿来我给你看看,连着直接买个安上就得了。我和小楠都笑了,是苦笑。因为小楠周末就要回澳大利亚,她那电脑在澳大利亚呢,咋拿来呀。又问,那 CPU 是多少呀。得支持硬盘容量呀!对哦。我咋把这个忘了。小楠继续语出惊人,还是不知道,得没辙了。你啥时候买的。 2000 年,这个倒是知道,那年代 40G 硬盘有没有我都不知道,还要买 200G 的安上,那不是扯呢吗。朋友说,实在不行买个 80G 的吧,然后刷一下 BIOS 也可以支持,她就更蒙了,连自己电脑啥配置的人都不知道,你居然要让她自己刷 BIOS ,这可能吗?最后,她说出了一句:我想买个硬盘的拖盒来用,这样不就可以匹配了。我马上问:你是要做移动硬盘呀。。。她说不是,就是把硬盘放到机箱外面用,用 USB 连接不是可以。我心想,那你电脑也得有自己的硬盘呀。她居然认为。电脑本身可以不用,用外接 USB 硬盘也可以。我的天,这都咋想的。我都解释不清了。最后达成一致,啥也买了,回澳洲再买个二手的用着吧。她原来那个就剩显示器和机箱(没有硬盘)。我看留着意义也不大,我说卖废品算了,她说 , 那里根本就没有收的。我说那就卖废铁,她说,只有汽车才算是卖废铁。我的妈呀。那就改成烧烤用的炉子算了。回家路上,我还郁闷中,我一学计算机专业的,这硬件我是太不了解了。不过还行,至少比小楠同志了解的多呀。

下午回到家中,本来想看看 Struts 中几个标签的功能。结果。电话来了。我给一家公司做的程序,他们运行说有问题,叫我给看看。上网把数据发了过来,我一看,数据录入的有够乱的。好半天屡出头绪。晚饭前搞定,明天给发过去。我一想,他们输入的乱,说明我设计的还是不够人性化,所以,又改动了一些地方。哎。毕竟是受人家钱的。工作就要负责嘛!

posted @ 2006-10-20 21:06 白洋 阅读(272) | 评论 (0) | 编辑 收藏

Hibernate Day_1

Hibernate 英文的直意是冬眠的意思。

Hibernate 是一个面向 Java 环境的对象 / 关系数据映射工具,注意,这是一种技术工具。

ORM ( object relational mapping ) 这个术语表示一种技术,用来把对象模型表示的对象映射到基于 SQL 的关系模型数据结构中去。

以上的这些概念性的东西,然我感觉和 .NET Framework 2.0 中的强类型数据集的作用差不多,但听研究过的人说,要比 Microsoft 的那个好得多, Microsoft 的强类型数据集我用过,感觉爽,既然有说 Hibernate 更好,那已经更是过瘾,我心里痒痒的呀。继续。。。

书中有这样一句“对于以数据为中心的程序来说,他们往往只在数据库中使用存储过程来实现商业逻辑, Hibernate 可能不是最好的解决方案。”这个是一定啦, Hibernate 是桥梁,又不是万金油,当然是在数据库中直接用存储过程处理商业逻辑是最好的啦。我做过,直接在存储过程中搞定一切东西,传一个参数过去,然后所有的运算都在 SQL Server 2000 的存储过程中完成,那叫一个爽,比把数据读到程序里,然后用 Java 处理,再把数据传回去要快得多,但是在 SQL Server 2000 里直接用存储过程来完成这样的工作,难度还是不小的,调试就是最大的难点,反正我是没整明白有啥办法可以调试的,我就用最原始、最保靠,据说是也是有效的调试方法 print 来完成。哈哈。够晕的吧!继续看。。。

现在看到了一个“持久化实体类”这个类是符合 JavaBean 的编写要求。并且要给它一个唯一的标识符,这是为了我们使用 Hibernate 提供的所有特性。大多数程序,特别是 web 程序,都需要通过标识符来区分对象。但,通常我们不会直接操作对象的标识符,所以他的 setter 方法的访问级别是 private 。

Hibernate 需要知道怎样去加载( load )和存储( store )持久化类的对象,映射文件,它就是告诉 Hibernate ,应该访问数据库里面的哪个表,已经应该使用表里面哪些字段。

Hibernate 不会从 web 加载 DTD 文件,但它会首先在应用程序的 classpath 中查找。 DTD 文件包含在 hibernate3.jar 里,同时在 Hibernate 发布包的 src/ 目录下。

映射文件的长相: Event.hbm.xml

<hibernate-mapping>

     <classname="events.Event" table="Events">

            <idname="id" column="eventID">

                   <generatorclass="native"/>

            </id>

            <propertyname="date" type="timestamp" column="eventDate"/>

            <propertyname="title" column="eventTitle"/>

     </class>

</hibernate-mapping>

 

说明:

class 表示持久化类;

id 表示唯一标识;

property 表示类的属性字段;

name 是持久化类名;

table 是数据表名;

column 是数据字段名;

generator 是唯一标识的生成方式;

type 是映射的数据类型。

 

Hibernate 配置文件的长相: hibernate.cfg.xml

<!-- by MyEclipse Hibernate tool integration. -->

<hibernate-configuration>

    <session-factory>

        <!-- properties -->

        <propertyname="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

        <propertyname="connection.url">jdbc:oracle:thin:@localhost:1521:test</property>

        <propertyname="connection.username">system</property>

             <propertyname="connection.password">manager</property>

                                                                    

        <propertyname="dialect">net.sf.hibernate.dialect.OracleDialect</property>

                                                                      

        <!-- mapping files -->

        <mappingresource="events/Event.hbm.xml"/>

    </session-factory>

</hibernate-configuration>

 

说明:

Session-factory :特定数据库全局工厂

connection.driver_class :驱动类

connection.url :连接路径

connection.username :用户名

connection.password :用户密码

mapping resource :持久化类加入映射文件

 

用 ant 创建 build.xml

我理解他就是管理文件位置的,就是拷贝,为编译运行做准备。

 

SessionFactory 是一个线程安全的全局对象,只需要被实例化一次,一个 Session 代表一个单线程的单元操作。

 

这时又来了一个辅助类 HibernateUtil ,负责启动 Hibernate 和更好的操作 SessionFactory 。

最后配置一个日志系统, Log4j 或 JDK 1.4 都可以选择。

 

看到了一种编程模型:线程绑定( thread-bound )

Session 在第一次被使用,或第一次调用 getCurrentSession() 的时候,其生命周期就开始了,然后它被 Hibernate 绑定到当前线程。当事务运行结束的时候,不管是提交、回滚, Hibernate 都会把 Session 从当前线程剥离,并且关闭它。

posted @ 2006-10-19 18:28 白洋 阅读(1728) | 评论 (1) | 编辑 收藏

bean:parameter标记可以获得表单或URL提交过来的数据

提交页面:

< html:link href = "/StrutsTagDemo/parameter_2.jsp?coolID=1127" >

    不使用表单提交数据

</ html:link >

 

接收页面:

< bean:parameter id = "coolID" name = "coolID" />

我接受到的 coolID : < bean:write name = "coolID" />

posted @ 2006-10-19 12:16 白洋 阅读(1614) | 评论 (2) | 编辑 收藏

使用Struts Bean:header读取报头

< bean:header id = "host" name = "Host" />

主机地址 / 端口 : < bean:write name = "host" />

< br >

< bean:header id = "language" name = "Accept-Language" />

支持语言 : < bean:write name = "language" />

< br >

< bean:header id = "agent" name = "User-Agent" />

用户的浏览器类型 : < bean:write name = "agent" />

< br >

< bean:header id = "accept" name = "Accept" />

支持打开类型 : < bean:write name = "accept" />

< br >

< bean:header id = "encoding" name = "Accept-Encoding" />

支持编码格式 : < bean:write name = "encoding" />

< br >

posted @ 2006-10-19 12:16 白洋 阅读(374) | 评论 (0) | 编辑 收藏

自动刷新/跳转

// 在 Session 中存放计数器,体现刷新效果。

int count = 0;

Object obj = request.getSession().getAttribute( "count" );

if (obj == null ) {

    count = 1;

}

try {

    count = 1 + Integer.parseInt(obj.toString());

} catch (Exception e) {}

request.getSession().setAttribute( "count" , count);

 

// 设置自动刷新,一秒钟一次。

//response.setHeader("Refresh", "1");

 

// 设置自动跳转,一秒钟一次。我写的 url 是自己,所以和刷新一样。

response.setHeader( "Refresh" , "1,URL=refresh.do" );

posted @ 2006-10-19 12:15 白洋 阅读(519) | 评论 (0) | 编辑 收藏

Struts中使用Cookie控制登录的流程

读取 Cookie 集合,遍历集合找到所需的 Cookie ,如果找到保存进 Session ,否则跳转到登录页面;

所需资源:

ReadCookieAction.java- 读取 Cookie 集合,如果找到对应 Cookie ,写入 Session ;

Login.jsp- 登录用页面;

LoginSubmit.java- 记录登录信息,并写入 Session ;

LoginOk.jsp- 读取 Session ,并显示。

读 Cookie 的方法 :

Cookie[] cookies = request.getCookies();

if (cookies != null ) {

    for ( int i=0; i<cookies. length ; i++) {

       Cookie cookie = cookies[i];

       if (cookie.getName().equals( "userInfo" )) {

           String value = cookie.getValue();

           String[] info = value.split( "_" );

           UserForm userForm = new UserForm();

           userForm.setUserName(info[0]);

           userForm.setUserPassword(info[1]);

           request.getSession().setAttribute( "userForm" , userForm);

           return mapping.findForward( "ok" );

       }

    }

}

写 Cookie 的方法:

Cookie c = new Cookie( "userInfo" ,userForm.getUserName()+ "_" +userForm.getUserPassword());

c.setComment( "A test cookie" );

c.setMaxAge(120);

response.addCookie(c);

posted @ 2006-10-18 17:20 白洋 阅读(1692) | 评论 (2) | 编辑 收藏

Struts标签的multiBox的数据上载

多选方框,选定值后提交,然后接收到一个数组,这是小菜,看书都知道。

可是,我想给这些多选方框动态显示的时候给个选中或未选中的状态值,我是看了好几个文字材料,写得都够晕的,看是那么回事,实际操作,根本就不灵。还好我够灵光,凭直觉,终于解决。

Action 中:

       // 定义一组备选爱好 [ 也可以从数据库中读取 ]

       ArrayList hobbyList = new ArrayList();

       hobbyList.add( " 游泳 " );

       hobbyList.add( " 潜水 " );

       hobbyList.add( " 登山 " );

       hobbyList.add( " 跳伞 " );

       hobbyList.add( " 徒步旅行 " );

      

       // 定义一组选定的爱好 [ 也可以从数据库中读取 ]

       ArrayList hobbySelectList = new ArrayList();

       hobbySelectList.add( " 游泳 " );

       hobbySelectList.add( " 登山 " );

       hobbySelectList.add( " 徒步旅行 " );

      

       // 定义字符串数组,如果你的那个类的属性是数组类型。

       String[] hobby = new String[hobbySelectList.size()];

       // 把 ArrayList 转换为 String[]

       hobbySelectList.toArray(hobby);

      

       // 定义你的那个 ActionForm

       PersonForm personForm = new PersonForm();

       // 设置那个数组类型的属性

       personForm.setHobby(hobby);

      

       // 注意,你给 JSP 传递的东西哦!

       // 一个是:备选数组 ArrayList

       // 另一个是: JSP 可承载的 ActionForm ,注意这个 ActionForm 要有被选定的数组属性值哦!

       request.setAttribute( "hobbyList" , hobbyList);

       request.setAttribute( "personForm" , personForm); 

      

       return mapping.findForward( "ready" );

JSP 中:

< logic:iterate id = "hobbyName" name = "hobbyList" >      

        < html:multibox property = "hobby" >

            < bean:write name = "hobbyName" />

        </ html:multibox >

        < bean:write name = "hobbyName" />

    </ logic:iterate >

解释一下 jsp 中的参数。

hobbyList 就是那个一组备选爱好数组;

hobbyName 就是随意定义的一个变量名,来接收 hobbyList 中的项;

hobby 就是 ActionForm 的那个数组属性名称;

 

看了这些,我自己都晕。。。这东西看来要自己领悟了!!!

我估计那个 html:radio 也是这么用,下次再研究。

posted @ 2006-10-17 22:31 白洋 阅读(360) | 评论 (0) | 编辑 收藏

struts标签的filter属性

有些存储在数据库或者某些文件的信息,可能会包含一些 html 标记的限定。例如把某句话加粗等。但是简单的使用 <bean:write name=”” /> 会把那些 html 标记给安全的转换,但这不是我想要的。怎么解决,发现了 filter 这个属性。应用如下:

在 Action 中我写入这样对象:

String html_1 = "<b>Hello</b>";

String html_2 = "<b>Hello</b>";

在 Jsp 中我这样使用:

<bean:write name="html_1" filter="true"/>

<bean:write name="html_2" filter="false"/>

运行的效果:

<b>Hello</b>

Hello

posted @ 2006-10-17 22:30 白洋 阅读(803) | 评论 (0) | 编辑 收藏

关于反射的总结事例!

作了一个PPT,还有代码的讲解。给我们的同学讲过啦。在这里提供一下下载吧!

下载请点击这里哦!

posted @ 2006-10-16 21:39 白洋 阅读(272) | 评论 (0) | 编辑 收藏

仅列出标题
共3页: 上一页 1 2 3 下一页