原始森林中的一个狼窝

常用链接

统计

积分与排名

我的好友

最新评论

#

2006年10月18日星期三

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

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

posted @ 2006-10-20 21:07 白洋 阅读(246) | 评论 (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 白洋 阅读(212) | 评论 (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 白洋 阅读(1664) | 评论 (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 白洋 阅读(1564) | 评论 (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 白洋 阅读(321) | 评论 (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 白洋 阅读(461) | 评论 (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 白洋 阅读(1632) | 评论 (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 白洋 阅读(296) | 评论 (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 白洋 阅读(740) | 评论 (0)编辑 收藏

关于反射的总结事例!

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

下载请点击这里哦!

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

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