blog.TangGaowei.com

存档: 2007年12月

浙江开通 110 短信报警

作者 传说一梦 写于 2007-12-25  | 863 次浏览

浙江省110短信报警服务网络今天正式全面开通。今后,凡在浙江省入网的移动、联通、电信小灵通用户,遇到不便使用语音报警的警情,只要发短信到1063911+电话区号(由群众根据事发所在地区选择,如杭州为10639110571,高速交警为10639110122),相应区域的地级市公安局110报警服务台将即时收到报警,并据情及时作出妥善处置。

今后,凡涉及110短信报警网络的相关信息,浙江省公安厅将第一时间在“浙江公安”网站发布,可上该网站浏览查询。

以往,听力语言残疾人士这一特殊人群只能采取上门报案或通过亲属朋友代为报案的方式报警,十分不便。110短信报警服务的推出,大大方便了这一特殊人群。听力语言残疾人士只要在报警内容后加上“L”,警方将在同等情况下优先予以处理。

[ 标签: 服务热线 ]
[ 固定链接:http://blog.tanggaowei.com/2007/12/110.html ]

Windows Live Writer 也不错!

作者 Neot 写于 2007-12-25  | 669 次浏览

WordPress:

标题:支持!

内容:支持!

分类:支持!

标签:支持!

修改:支持!

Blogger.Com:

标题:支持!

内容:支持!

分类:支持!

修改:支持!

[ 标签: windows live writer, 博客发布软件 ]
[ 固定链接:http://blog.tanggaowei.com/2007/12/windows-live-writer-2.html ]

测试 Windows Live Writer

作者 Neot 写于 2007-12-25  | 709 次浏览

测试结果:

标题:OK!

分类:OK!

内容:OK!

[ 标签: windows live writer, 博客发布软件 ]
[ 固定链接:http://blog.tanggaowei.com/2007/12/windows-live-writer.html ]

《穷爸爸富爸爸》读书笔记

作者 Neot 写于 2007-12-24  | 655 次浏览

(原来看《穷爸爸富爸爸》时做的笔记,贴出来作个记录)投资是执行计划的单调乏味的过程。找一个可以让你致富的方法,然后照着去做。当你背离你的简单计划,改变方向只追逐眼前的诱惑时,灾难就要发生了。赚钱不是一定需要高等教育、好工作或是本钱。你只要知道你的目标是什么,然后制订一个计划并坚持到底就足够了。所有投资方案都是从财务计划开始的。要根据当前的经济情况,来调整保险在你计划中的地位。要记住,在参与马拉松比赛的开始阶段,最好采取慢跑。要明白投资是一个团队活动。财商会告诉你什么时候该独自做事,什么时候该向别人寻求帮助。你的财务协作人员应该包括:1、财务设计师2、银行家3、会计师4、律师5、经纪人6、簿记员7、保险经纪人8、成功的顾问生活是一个残酷无情的教师。它通过惩罚的方式来给你上课。不管你喜欢与否,但它的确是一个学习的过程。富爸爸说,如果我有十项投资的话,只要三项动作良好,这三项就成为财富的主要来源。五项可能是形同虚设,另外两项就成为空难。制定两个计划:1、安全计划或舒适计划2、富有计划时间是有价格的。我们坐飞机,是在买时间,而不是节约时间。我们购物时节约金钱,很可能是在浪费时间。而时间比金钱更重要。穷人用金钱衡量价值,富人用时间衡量价值。时间比金钱更重要。实现安全和舒适的生活,只需要工作,然后把钱交给专业经纪人或机构去管理,由他们代为进行长期投资。但是如果想获得财富,就必须投资于比金钱更有价值的东西,那就是时间。要投资时间,制订一个计划,让钱为我们工作。一旦你的财务安全计划或财务舒适计划进入了轨道,并正常运行,那么你就能更好地分析思考你从朋友处听到的与投资有关的小道消息了。投资要用心去做。投资时,许多人不懂得控制,就像开车时不握住方向盘一样。投资计划就像路线图,你要控制好方向,按着这条路走就可以了。控制就是遵循一定的原则。第一是计划,第二是原则。人们认为投资冒险的原因有三点:1、没有接受过”如何成为投资者”的专门训练。2、多数投资都缺乏控制力。3、多数人是在外部投资,而不是从内部投资。买卖要在知悉对方内部情况的基础上成交。既要有外部投资,又进行内部投资。在安全和舒适的水平上进行投资时,外部投资就是十分正确的。这就是为什么你会愿意把钱交给一个内行代替你去投资,因为他比你更接近内幕。可是如果你想获得更大财富,你就得比那些受人之托的投资专家们更加熟悉你所投资的公司的内幕实情。要想熟悉内幕实情,就要把时间花在研究投资对象上。十项投资控制原则:一、弄清你的工作所得的钱是属于哪种类型的收入。1.工资收入2.有价证券收入3.被动收入(多为不动产收入)二、尽可能有效地把你的工资收入变为证券收入和被动收入。这是最基本的。三、通过购买证券将工资收入留住,并将工资收入转为被动收入和证券收入。1.股票和不动产都是一种证券,但并不一定是资产。2.同一证券可以在资产与负债之间相互转化。比如12月我以每股20美元的价钱买进ABC公司的100股股票,到次年1月份,我以每股30美元的价钱卖出10股,于是这10股股票就成了资产,因为他们增加了我的收入。但到了3月份,我仅以每股10美元的价钱卖出了10股,此刻的10股变成了煞有负债,因为它使我产生亏损。四、投资者本身才是真正的资产或者负债。五、真正的投资者是能未雨绸缪,非投资者却总想猜测将来会发生什么、什么时间发生。六、如果你准备好了,也就是说,你学习了投资知识,有了投资经验,并且找到了一笔好的买卖,这时,钱就会自己找上门来,或者说,你就会找到钱。好买卖总是会引发人们的欲望。七、对风险和回报的评估能力。1.教育2.经验3.充足的资金。。。损益表和资产负债表是两张最主要的财务报表,它能带你看到世界上任何一家公司,任何一项不动产和任何一个国家表面现象后面的东西。就好像潜水时戴上潜水眼罩,你就能看清潜藏在水下面的东西一样。要补上《投资学》、《会计学》要想了解财务的全部情况,至少需要两份财务报表。因为你的资产正是别人的负责,或你的负责正是别人的资产。一个项目是否为资产并不是绝对的。不动产是资产,但它也可能成为你的负责。当它每个月给你带来现金流时它是资产,当它每个月所你的现金带走时,它就是你的负责。头脑可以把项目变成资产,头脑也可以把项目变成负责。所以,要考虑创造资产,而不是努力工作来购置资产。你的头脑是你最有用的资产,但如果使用不当,它会是你最大的负责。要努力创造资产,而不仅仅是购置资产。一个古老的格言–我听见了,我又忘记了;我看见了,我就记住了;我做了,我就明白了。智谋投资者定义为既精通理财知识又熟悉以下法律的投资者:1、税法2、公司法3、证券法智谋型投资者掌握的投资控制工具:1、自我控制2、控制两个比率,即收入/支出比率及资产/负债比率3、控制税款4、控制购买和售出的时间5、控制经纪业务6、控制E-T-C(实体、时机和收入特性)收入特性:1、工资收入(交税)2、被动收入(不交税)3、证券组合收入(不交税)智谋型投资者对下列概念了如指掌:1、好债与坏债(如用来获取每月都有现金流收入的可出租资产的债务是好债务)2、好支出与坏支出(如用在税务、法律咨询方面的支出为好支出)3、好亏损与坏亏损(如因不动产贬值而引起的亏损为好亏损)词语代表的重要性排序:1、富有 1、时间2、舒适 2、金钱3、安全扬长避短不用害怕自己的短处,因为每个人都有短处,重要的是能扬长避短。成功是因为你发挥了你的长处,并不是因为你没有短处。正确的总结自己的失败可以将自己的短处转化为长处。人剑合一掌握一种工具或技能要做到”人剑合一”,即让它成为自己的一部分,就像是天生的一样。比如学习骑自行车,当你学一定的熟练程度时,你可以一边骑车一边和别人说话或是看看路边的风景,就好像你骑自行车是你天生的技能一样。对每一项重要的技能都要努力做到”人剑合一”,这样你才能学习到无限多的技能。否则,你学到的技能就有可能成为你的负担,而阻碍你学习和发挥另外的技能。比如你学习的骑车技能如果没有学得足够好,那么你骑车的时候就很少能做其它的事情,而且在你运用这种技能的时候你还会带有或多或少的恐惧心理,从而给自己带来不好的感觉。一项技能不能做到”人剑合一”而且还会影响你对某些其它技能学习的信心。比如你自行车骑得不够好,那么从心理上你就可能觉得自己很难学会电动车。而电动车事实是更容易学的一种技能。自行车骑得好的人可能就觉得电动车学都不用学就会骑。而多半情况是他们真地不用学就能够骑。在对错误不要说谎不要指责别人不要开脱责任不要半途而废不要说”我再也不那样做了”,而要努力从错误中吸取教训。丘吉尔:”成功,是一种从一个失败到另一个失败,而能够始终不丧失信心的能力。”

[ 标签: 创业, 财务 ]
[ 固定链接:http://blog.tanggaowei.com/2007/12/post-37.html ]

Zoundry 发布 blogger.com 很不错!

作者 Neot 写于 2007-12-24  | 1,095 次浏览

今天 Google Docs 打开又很慢。这迫使我想要找个新的发布 blogger 的工具。Google 了一下,看见” 10款免费Blog客户端发布软件” 里介绍的 Zoundry 。试用了一下,感觉很不错!

Google Docs 和 Blogger.Com 虽然同是 Google 的产品,但是 Google Docs 对 Blogger.Com 的支持却还没有其它软件好。比如 Google Docs 不支持发布文章的标题(荒谬),也不支持对文章的分类。而 Zoundry 就完全支持文章标题、文章分类等基本且常用的功能

Zoundry 还能同时管理多个不同服务商的博客。当然,它也能同时管理一个 Blogger.Com 帐号下的多个博客

Zoundry 不仅能发布新的文章,还能修改以前的文章

在修改文章前,Zoundry 会将服务器上的原有文章下载到本地。这样相当于在本地作了一个数据备份,让博客更安全

还有更多更好的功能慢慢摸索。

还有,Zoundry 是免费的,且有简体中文版

Zoundry 下载地址:http://www.zoundry.com/download.html

[ 标签: blogger, zoundry ]
[ 固定链接:http://blog.tanggaowei.com/2007/12/zoundry-bloggercom.html ]

Spring 让 Struts 更专注于控制业务流程

作者 Neot 写于 2007-12-24  | 652 次浏览

Struts 可实现 MVC(模型/视图/控制器) 模式,并且成功的将“视图”,即“表示层”分离出来。但它对“模型”,也就是“业务逻辑层”的分离还不够彻底。因为 Struts 直接在控制部分的 Action 里创建“业务逻辑”对象。这样做,不方便采用新的创建对象方法,而且,想替换原有的“业务逻辑”对象也必需修改 Action 的源代码才能实现。

Spring 采用“控制反转(IoC)”的设计模式,将“业务逻辑”对象的创建过程从 Action 里分离出来;Spring 还采用了“工厂模式”,让对象的创建可控制,实现了“业务逻辑”对象的可替换性。通过 Spring 的配制文件(applicationContext.xml) 很容易将创建好的“业务逻辑”对象传递给 Action ,因此,很容易替换原有的“业务逻辑”对象。这样,Struts 就能更专注于业务流程的控制。

Struts 用于控制业务流程,Spring 用于管理业务逻辑,这样分工明确,使系统的更好的实现松散耦合,提高了系统的灵活性和可扩展性。

[ 标签: j2ee, java, spring, struts ]
[ 固定链接:http://blog.tanggaowei.com/2007/12/spring-struts.html ]

MyEclipse开发SSH(Struts+Spring+Hibernate)入门

作者 Neot 写于 2007-12-13  | 4,733 次浏览

(本文参考自 oksonic 的“Struts+Spring+Hibernate练习(完整)”)

源码下载:http://ishare.iask.sina.com.cn/cgi-bin/fileid.cgi?fileid=2857703

1. 准备

工具:MyEclipse 6.0.1 GAmysql-connector-java-5.0.4-bin.jarMySql GUI Tools 5.0(便于管理MySql数据库,不是必须)

环境:Tomcat 5.5MySql 5.0

1.1. 新建工程

操作:[Menu] File/New/Web Project

工程名:login

2. Struts 部分


2.1. 添加 Struts 功能支持

操作:[Menu] MyEclipse/Project Capabilities/Add Struts Capabilities

 

将 “yourcompany” 替换成 “login”。

2.2. 创建 ActionForm 类

操作:[Ctrl+N] MyEclipse/Web-Struts/Struts 1.2 Form

类名:LoginForm

在 “Use case” 里输入 “Login” 后,Name、Form type 等会自动填充。

在 “Form Properties” 选项卡为 loginForm 新增两个属性:username、password,”Type” 和 “JSP input type” 分别保持默认的 “java.lang.String” 和 “text”;

在 “JSP” 选项卡钩选 “Create JSP form” 选项,将新建路径改为 “/login.jsp”(login.jsp文件将被自动创建)。

2.3. 创建 Action 类

操作:[Ctrl+N] MyEclipse/Web-Struts/Struts 1.2 Action

类名:LoginAction

在 “Form” 选项卡的 “Name” 项选择 “loginForm”,”Input Source” 项输入 “/login.jsp”。

2.4. 创建 index.jsp 文件

如果没有,创建 index.jsp 文件,并添加一个指向 login.jsp 的链接:<a href = “login.jsp”>Login</a>

2.5. 创建Forword类

操作:[Ctrl+N] MyEclipse/Web-Struts/Struts 1.2 Forword

类名:indexForword

“Name” 项输入 “indexForword” ,”Path” 项选择 “/index.jsp” 。

2.6. 修改 LoginAction.java 文件

修改 LoginAction 类的 execute 方法:

public class LoginAction extends Action {

    public ActionForward execute ( ActionMapping mapping, ActionForm form,
                    HttpServletRequest request, HttpServletResponse response ) {
        LoginForm loginForm = ( LoginForm ) form;

        String username = loginForm.getUsername();
        String password = loginForm.getPassword();

        if ( username.equals ( “test” ) && password.equals ( “test” ) ) {
            return mapping.findForward ( “indexForword” );
        } else {
            return mapping.getInputForward();
        }
    }
}

2.7. 修改 login.jsp 文件

修改 <html:form> 标签:<html:form action=”/login”>

2.8. 测试

操作:[Menu] Run/Run,选择 MyEclipse Server Application 方式运行

要正常执行Run操作,需先安装 Tomcat5.5 。

点击 index.jsp 页面的 “Login” 链接,跳转到 login.jsp 页面。在 login.jsp 页面输入 “test/test”,应该会登录成功,然后跳转到 index.jsp 页面;输入 “test/123″ ,应该保持在 login.jsp 页面。

如果测试成功,证明 Structs 运行正常。

如果运行出错,请参考文章最后的“5. 问题集”。

3. Spring 部分


3.1. 添加 Spring 功能支持

操作:[Menu] MyEclipse/Project Capabilities/Add Spring Capabilities

Spring 版本( Spring version )选择 “Spring 1″;

开发包(libraries)选择 “Spring 1.2 AOP Libraries、Spring 1.2 Core Libraries、Spring 1.2 Persistence Core Libraries、Spring 1.2 Persistence JDBC Libraries” 四项;

JAR Library Installation 选择 “copy checked…” ,”Library Folder” 项选择 “/WebRoot/WEB-INF/lib”(这样的话所需的类库都将拷贝到项目目录,方便以后的布署)。

点击 “下一步(Next)” 创建配置文件,修改文件路径(Folder)到 “WebRoot/WEB-INF” 目录(以便和Struts配置文件一起管理),文件名称为默认的”applicationContext.xml”。

点击 “完成(Finish)” 。

3.2. 配置 struts-config.xml 文件

添加 Spring 插件(在 <message-resources> 标签后面添加):

<plug-in className=”org.springframework.web.struts.ContextLoaderPlugIn”>
    <set-property property=”contextConfigLocation” value=”/WEB-INF/applicationContext.xml” />
</plug-in>

修改 LoginAction 的配置(只需修改 type 属性):

<action-mappings >
    <action
        attribute=”loginForm”
        input=”/login.jsp”
        name=”loginForm”
        path=”/login”
        scope=”request”
        type=”org.springframework.web.struts.DelegatingActionProxy” />

</action-mappings>

绿色字体部份为被修改过的内容,这里将使用 spring 的代理器 DelegatingActionProxy 来对 Action 进行控制。

3.3. 修改 Spring 配置文件 applicationContext.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “http://www.springframework.org/dtd/spring-beans.dtd”>

<beans>
    <bean name=”/login” class=”com.login.struts.action.LoginAction” singleton=”false”></bean>
</beans>

绿色字体是关于接受和处理 Action 控制权的配置内容,”com.login.struts.action.LoginAction” 即为原 struts 里的配置。

3.4. 测试

同上一次测试。测试成功证明 Spring 运行正常。

如果运行出错,请参考文章最后的“5. 问题集”。

4. Hibernate 部分

下面开始 Hibernate 部分,将原例修改为使用数据库进行用户名/密码验证。

4.1. 创建 mysql 数据库和表

添加表的代码如下:

CREATE TABLE user_table(
    ID int NOT NULL auto_increment,
    USERNAME varchar(45) NOT NULL default ”,
    PASSWORD varchar(45) NOT NULL default ”,
    PRIMARY KEY (ID)
)

再添加一条记录:

insert into user_table (USERNAME,PASSWORD) values (’test’,'test’)

4.2. 创建 MyEclipse 数据库驱动(DB Driver)

操作:[Menu] MyEclipse/Prefrences/MyEclipse/Database Explorer/Database Driver/DB Brower

在 DB Brower 的菜单中选择 “New” ,”Driver Name” 项输入 “login-conn” ,”Connection URL” 项输入 “jdbc:mysql://localhost:3306/test” ,然后输入 MySql 的用户名(User Name)和密码(Password),按实际情况输入;

在 “Driver JARs” 项添加 “mysql-connector-java-5.0.4-bin.jar” (可从网上下载),在 “Driver classname” 里选择 “com.mysql.jdbc.Driver” ,其它自选。

点击 “完成(Finish)”。

4.3. 添加 Hibernate 功能支持

操作:[Menu] MyEclipse/Project Capabilities/Add Hibernate Capabilities

Hibernate 版本(Hibernate Specification)选择 “Hibernate 3.1″ ,开发包(libraries)选择 Hibernate 3.1 Core Libraries 一项;

JAR Library Installation 选择 “copy checked…” ,”Library Folder” 选择 “/WebRoot/WEB-INF/lib” 。

点击 “下一步(Next)” 设置配置文件:

选择 “Spring configuration file (applicationContext.xml)” 。

“下一步(Next)” 设置 Spring-Hibernate:

 

选择 “Existing Spring configuration file” ,”SessionFactory ID” 项输入 “sessionFactory” 。

“下一步(Next)” 创建数据源对象:

在 Bean Id 中输入 dataSource,”DataSource” 项选择 “Use JDBC Dirver” ,DB Driver 项选择 “login-conn” ,其余项会自动填充。

记得选中 “Copy DB driver jar(s) to project and add to buidpath” 项,以便将数据连接的库文件复制到项目,方便以后的布署。

“下一步(Next)” 创建 SessionFactory 类:

“Java package” 项设置为 “com.login.Hibernate” (如果没有,点击 “New” 按钮添加),”Class name” 项修改为 “SessionFactory” ,Java Compliance Level 选择和创建项目时选择的 Java 版本。(本例中并没有用到 SessionFactory 类,留作今后扩展)

点击 “完成(Finish)”。

4.4. 创建对象关系映射(ORM)的相关文件

操作:[Menu] Window/Open Perspective/MyEclipse Database Explorer

选中 user_table 表,点击右键,在出现的菜单中选择 “Hibernate Reverse Engnieering” 。

在弹出的窗口中保持 “Java package” 项为 “com.login” ;

选中 “Hibernate mapping file (*.hbm.xml) for each databases table” ,并保持 “Update hibernate…” 项选中;

选中 “Java Data Object” 项,并保持 “Create abstract class” 选中;

“Base persistent class” 项留空;

取消 “Java Data Access Object…” 项和 “Use custom templates” 项。

点击 “下一步(Next)” ,再点击 “下一步(Next)” ,在 “Configure reverse engineering details” 页选中 “user_table” 表,在右边出现的 “Class Name” 项中输入 “com.login.User”,其它不变。

点击 “完成(Finish)”。

完成此操作,会在 “com.login” 包下创建三个文件:AbstractUser.java、User.java、User.hbm.xml。

4.5. 创建 UserDAO.java 接口

操作:[Ctrl+N] Interface,点击 “下一步( Next )”

在出现的 “New Java Interface” 窗口中,将 “Source Folder” 设置为 “login/src”,将 “Package” 设置为 “com.login”, 将 “Name”  项设为 “UserDAO”,然后点击 “完成( Finish )” 按钮。

UserDAO.java 内容如下:

package com.login;

public interface UserDAO {
    public abstract boolean isValidUser( String username, String password );
}

4.6. 创建 UserDAOImpl.java 类

操作:[Ctrl+N] Class,点击 “下一步( Next )”

在出现的 “New Java Class” 窗口中,将 “Source Folder” 设置为 “login/src”,将 “Package” 设置为 “com.login”, 将 “Name”  项设为 “UserDAOImpl”,在 “Supperclass” 项输入 “org.springframework.orm.hibernate3.support.HibernateDaoSupport”,在 “Interface” 项中添加 “com.login.Hibernate.UserDAO” 接口,然后点击 “完成( Finish )” 按钮。

UserDAOImpl 通过 Hibernate 访问数据库,做用户验证。

UserDAOImpl.java 内容如下:

package com.login;

import java.util.List;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {
   
private static String hql = “from User u where u.username=? “;

    public boolean isValidUser( String username, String password ) {
        // 验证用户
        List userList = this.getHibernateTemplate().find( hql, username );
        if ( userList.size() > 0 ) {
            return true;
        }
        return false;
    }
}

4.7. 修改 LoginAction.java 文件

使用 UseDAO 对象来验证:

package com.login.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import com.login.struts.form.LoginForm;
import com.login.UserDAO;

public class LoginAction extends Action {
    private UserDAO userDAO;

    public UserDAO getUserDAO() {
        return userDAO;
    }

    public void setUserDAO(UserDAO userDAO) {
        this.userDAO = userDAO;
    }

    public ActionForward execute(ActionMapping mapping, ActionForm form,
                        HttpServletRequest request, HttpServletResponse response) {

        LoginForm loginForm = (LoginForm) form;
        String username=loginForm.getUsername();
        String password=loginForm.getPassword();

        if( userDAO.isValidUser( username, password ) ){
            return mapping.findForward( “indexForword” );
        }else{
            return mapping.getInputForward();
        }
    }
}

绿色字体为修改部分。

4.8. Spring 的最终配制文件 applicationContext.xml

<?xml version=”1.0″ encoding=”UTF-8″?>
<!DOCTYPE beans PUBLIC “-//SPRING//DTD BEAN//EN” “
http://www.springframework.org/dtd/spring-beans.dtd”>

<beans>

    <bean id=”dataSource” class=”org.apache.commons.dbcp.BasicDataSource”>
        <property name=”driverClassName” value=”com.mysql.jdbc.Driver”></property>
        <property name=”url” value=”jdbc:mysql://localhost:3306/test”></property>
        <property name=”username” value=”root”></property>
        <property name=”password” value=”root”></property>
    </bean>

    <!– 配置sessionFactory, 注意这里引入的包的不同 –>
    <bean id=”sessionFactory” class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>
        <property name=”dataSource”>
            <ref local=”dataSource” />
        </property>
        <property name=”mappingResources”>
            <list>
                <value>com/login/User.hbm.xml</value>
            </list>
        </property>
        <property name=”hibernateProperties”>
            <props>
                <prop key=”hibernate.dialect”>org.hibernate.dialect.MySQLDialect</prop>
                <prop key=”hibernate.show_sql”>true</prop>
            </props>
        </property>
    </bean>

    <bean id=”transactionManager” class=”org.springframework.orm.hibernate3.HibernateTransactionManager”>
        <property name=”sessionFactory”>
            <ref local=”sessionFactory” />
        </property>
    </bean>

    <bean id=”userDAO” class=”com.login.UserDAOImpl”>
        <property name=”sessionFactory”>
            <ref local=”sessionFactory” />
        </property>
    </bean>

    <bean id=”userDAOProxy” class=”org.springframework.transaction.interceptor.TransactionProxyFactoryBean”>
        <property name=”transactionManager”>
            <ref bean=”transactionManager” />
        </property>
        <property name=”target”>
            <ref local=”userDAO” />
        </property>
        <property name=”transactionAttributes”>
            <props>
                <prop key=”insert*”>PROPAGATION_REQUIRED</prop>
                <prop key=”get*”>PROPAGATION_REQUIRED,readOnly</prop>
                <prop key=”is*”>PROPAGATION_REQUIRED,readOnly</prop>
            </props>
        </property>
    </bean>

    <bean name=”/login” class=”com.login.struts.action.LoginAction” singleton=”false”>
        <property name=”userDAO”>
            <ref bean=”userDAOProxy” />
        </property>
    </bean>

</beans>

4.9. 测试

同第一次测试。

如果运行出错,请参考文章最后的“5. 问题集”。

5. 问题集

    5.1. Console 错误信息: java.net.BindException: Address already in use: JVM_Bind:8080

  • 原因:有其它进程占用了 8080 端口,导致绑定失败。
  • 解决:如果是有 Tomcat 启动了,将其关闭,MyEclipse 会自己启动 Tomcat。

    5.2. HTTP 错误信息:message Servlet action is not available

  • 原因:找不到相关类。可能配置文件中的某些类或文件的路径填写错误,或是缺少 jar 包。
  • 解决:如果是在添加 Spring 特性后产生的,可能是 /WEB-INF/lib/ 中缺少 spring.jar 包。从 MyEclipse 目录搜索出 1.2 版的 spring.jar,并将其复制到项目的 /WEB-INF/lib/ 目录下。

    5.3. Console 错误信息:java.sql.SQLException: Access denied for user: ‘root@localhost’ (Using password: YES)

  • 原因:数据库访问被拒绝。可能由于 MySQL 密码被设置成空,而 MyEclipse 又不支持空密码。
  • 解决:将 MySQL 的 root 用户密码设置成非空,如 “root”,然后修改 MyEclipse 中刚才添加的 login-conn 数据源信息的密码项。
[ 标签: hibernate, j2ee, myeclipse, spring, struts ]
[ 固定链接:http://blog.tanggaowei.com/2007/12/myeclipsesshstrutsspringhibernate.html ]

网络应用的4个层次

作者 Neot 写于 2007-12-10  | 868 次浏览

第4层:社会关系应用

第3层:文档关系应用

第2层:文档应用

第1层:计算机应用

参考文章:
http://www.guwendong.cn/post/2007/social_graph_and_semantic_web.html

网络应用从Internet诞生到现在,出现了4个层次的应用:

第1层:计算机应用(The Internet)——链接计算机(link computers)。这个时代诞生了曾经很伟大的 Natscape 公司。

第2层:文档应用(Web)——链接文档(links documents)。这个时代诞生了曾经很伟大的 Yahoo! 公司。

第3层:文档关系应用(Graph)——链接文档与文档之间的关系(links relationships between documents)。这个时代诞生了目前还是很伟大的 Google 公司。

第4层:社会关系应用(Graph)——链接人与人之间的关系(links relationships between people)。这个时代会是属于 Facebook 的吗?

从第1层到第4层是从低到高,上层是在下层的基础上建立的。

[ 标签: 无 ]
[ 固定链接:http://blog.tanggaowei.com/2007/12/4.html ]

推荐一款虚拟主机服务——“我要安家”

作者 Neot 写于 2007-12-09  | 600 次浏览

  2006年10月31日,我购买了“我要安家(http://www.512j.com)”的“个人A型”虚拟主机。配置如下:

  • 主机线路:电信/网通双线接入
  • 网页空间(支持php): 120 M
  • 数据库(Mysql): 60 M
  • 流量:15G /月
  • 最多可以绑定域名: 6 个

价格是128元/年。
2007年10月31日,我忘记续费,“我要安家”未提前通知便停了我的网站(http://blog.tanggaowei.com)。当我发现后,先续费一个月,然后就开始找另一家服务更好的主机提供商。我参考“虚拟主机评测网”:http://idc.caifuw.com,选择了其它评价最好的一个,花了180元购买了他们的一款虚拟主机。可是,在网站的访问速度和稳定性上,却比“我要安家”差了许多(site24×7.com提供):


我想起一位网友讲过的话:选择主机时,永远不要相信“不限流量”,通常“不限流量”就意味着其它方面会很差。  于是,一个月后,我又在“我要安家”续费了一年,过期时间是2008年12月7日。希望到时间有网友可以提醒我,更希望“我要安家”自己能提前用Email通知我。

希望“我要安家”服务越来越好!

[ 标签: 虚拟主机 ]
[ 固定链接:http://blog.tanggaowei.com/2007/12/posts-9.html ]

FeedSky的域名绑定功能出问题了!

作者 Neot 写于 2007-12-09  | 707 次浏览

以前在FeedSky给自己的博客做了一个Feed域名绑定,地址为:http://feed.tanggaowei.com。可是,最近一直访问不了这个地址。据官方分析,可能是IP被GFW阻断,许多电信用户访问不了Feed绑定的域名,但网通用户访问正常。但还没有解决问题的有效方法。

做Feed域名绑定,本来是为了避免对第三方网站的依赖,万一FeedSky服务不好了,我还可以用同一域名到其它服务提供商去绑定。可是,目前国内只有FeedSky提供此服务。这样一来,就是像这次,出了问题,也只能在一树上吊死!

[ 标签: feedsky, rss, 域名绑定 ]
[ 固定链接:http://blog.tanggaowei.com/2007/12/feedsky.html ]

订阅

 

手机访问

http://blog.tanggaowei.com/wap/

Google