我的第一个兼职(个人体会)

03-01-24 woshiben
我13号开始放假,接了一个小活,比较简单,就是给一个网站做一个网上商店和一个论坛。感觉网络上的资料比较多,再加上以前学习的时候也做过网上书店之类的小东西,所以就应承下来,估计3个星期能完成。
我开发时数据库采用Mysql,服务器采用Tomcat4.0.6,采用jsp/servlet+javabean,结构来写,开始的10天写得都很顺利。处理一些跟数据库相关的操作。可是到后来觉得对自己所写的东西很不满意,总是想找一些更好的方法来解决,一直不能静下来,渐渐地意识到自己的能力还是不够,尤其是对购销存的业务很不熟悉。很多时间都花在这上面,以至于最后都想放弃。不过我还是坚持下来了。
我在做的过程中发现很多问题。也跟我的一些同学讨论过。其中之一就是对于使用javabean来处理对数据库的数据的增删改查,这个bean里的数据有两个来源,一个是从页面得到的参数,一个是从数据库中查寻出来的数据。他们同时存在于bean中,我觉得有一点问题。我也看过其他人的代码,很多人处理的方式都不相同,但是没有发现一个比较好的。思路比较清晰的。按照一些人的说法,一个对象,或者说类也好,方法也好,功能尽量单一。一个方法解决一个问题。但是现在看来,我的javabean责任太重大了,不仅要处理进来的参数,对他们进行判断,看看满不满足要求,然后放进数据库中,还要处理从数据库中出来的数据,对他们处理后再在页面显示。他们太累了。我不忍心。
我再想如果能够写出这样的一个类就好了,专门处理从页面得到的数据,处理完了,然后再跟数据库交互,而从数据库中出来的数据也经由一个bean也好,servlet也好处理以后再交给页面显示。这样条理也许会清晰一些。
关于时间的处理,自己以前接触的少,现在做起实际的东西,好像什么都跟时间有关了,真受不了。最让我难以接受的是,做着做着,我发现随着时间问题,原来商品的价格是会变的。需求里可没这个东西。感觉javadoc在时间问题上讲的还是比较细的,又得学习新的东西。
最后想说的是关于中文显示的问题,我一直想找一个比较好的方法来解决,可是还是不理想,我一直以为banq前辈介绍的方法管用,就是在数据库的连接后面加上encode="iso8859_1"之类的,可是实际上还是出问题,我都傻眼了,同样的处理方式,这个地方没问题,哪个地方就有问题,郁闷啊,真想找个高手问问。也曾下了狠心想把这个问题彻底搞懂,下了一堆文档,还是看不懂。呵呵,没办法。
快过年了,少罗嗦几句,祝大家快乐,我在这里学到不少东西,向banq前辈和大伙表示感谢!woshiben 2003.1.24, heihei,我已经买到回家的票了!

banq
2003-01-26 17:58
祝你旅途愉快。

关于你说的"我再想如果能够写出这样的一个类就好了,专门处理从页面得到的数据,处理完了,然后再跟数据库交互,而从数据库中出来的数据也经由一个bean也好,servlet也好处理以后再交给页面显示。这样条理也许会清晰一些。"
其实EJB的Entity Bean就是你说的这样的类,下次你会开始理解J2EE了,其实EJB+JSP是网上商店最好的解决方案了

zingers
2003-01-27 09:40
用DAO模式来处理业务逻辑的实现,
比如你要有一个定单类OrderDeal,有一个方法order();
然后在这个方法里面调用OrderDealDAO中的相应方法,实现SQL永久保存。
这里有一点,你的order方法肯定要接收参数,好了,OrderBean出现了
你的方法应该是public void order(OrderBean);
这个bean只有setter,getter方法和业务数据,它们从jsp而来。
这样你的结构就比较清楚了。

我仍然坚持只在必须用EJB的时候才用它。
中文显示在tomcat4.X下可以修改server/lib/中的一个类,然后在Mysql中加上encodingCharater,再在jsp页面中保持gbk编码就可以了。

zingers
2003-01-28 09:25
哈哈,可能我比较后知后觉,或者说反应迟钝吧,我现在终于体会到EJB
的用处了。至少有一点,免除了不同数据库服务器切换时要增加许多DAO类了,更重要的一点是有助于自动化生成程序原型。

anonymous
2003-01-28 11:16
前几天再java研究组织看到过用过滤器来判定使用者encoding,然后用这个encoding来设置request的encoding,只看了看,没试过,不知道可不可以:)

zingers
2003-01-28 13:26
我们这有人就是用filter的,是在tomcat环境中

zingers
2003-01-28 13:30
<web-app>
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>gb2312</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>...</servlet>
</web-app>

zingers
2003-01-28 13:32
《?xml version="1.0" encoding="UTF-8"?》
《!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"》
《web-app》
《filter》
《filter-name》Set Character Encoding《/filter-name》
《filter-class》filters.SetCharacterEncodingFilter《/filter-class》
《init-param》
《param-name》encoding《/param-name》
《param-value》gb2312《/param-value》
《/init-param》
《/filter》
《filter-mapping》
《filter-name》Set Character Encoding《/filter-name》
《url-pattern》/*《/url-pattern》
《/filter-mapping》
《servlet》... 《/servlet》
《/web-app》

woshiben
2003-02-12 17:55
对于各位的回复,表示感谢,祝大家新的一年天天进步,一起努力!

javapet
2003-02-21 16:58
我也用了,是用Resin在SOlaris环境下,JSP页面中就不用加encoding 了,效果很好

ssjava
2003-03-10 15:29
ok

woshiben
2003-03-11 11:08
说来惭愧,因为诸多原因,这个竟然没有做完,不过作为初学,我个人觉得还是长进很多。尤其是应该常到论坛里看看,真的可以学到不少东西。我自己马上要毕业了,工作还没定,又要做论文。烦啊,但是无论怎样,会努力的。像说的是:工作一定努力,论文一定抓紧,对你(java),我从未放弃!