MicroFish

Open & Open hits
随笔 - 33, 文章 - 2, 评论 - 4, 引用 - 0
数据加载中……

Struts HTML 标签库详解

<html:html></html:html>:用于生成<html>元素,标签中有一个lang属性,用于显示用户使用的语言
<html:html lang="true">
如果客户浏览器使用中文语言,那么运行时将被解析为<html lang="zh-CN">

<html:base/>:用于生成当前网页的绝对URL路径

<html:link>、<html:rewrite>:前者用于生成<a>元素,创建超链接时允许在URL中包含请求参数,当用户浏览器关闭Cookie时,会自动重写URL,把SessionID作为请求参数包含在URL中,用于跟踪用户的Session状态。后者用于输出超链接中的URI部分。URI用于具体的请求资源。

posted @ 2006-10-09 15:54 刘璐 阅读(449) | 评论 (0)编辑 收藏

新手必须掌握8个DOS命令

  一,ping

  它是用来检查网络是否通畅或者网络连接速度的命令。作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址,我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统等。下面就来看看它的一些常用的操作。先看看帮助吧,在DOS窗口中键入:ping /? 回车,。所示的帮助画面。在此,我们只掌握一些基本的很有用的参数就可以了(下同)。

  -t 表示将不间断向目标IP发送数据包,直到我们强迫其停止。试想,如果你使用100M的宽带接入,而目标IP是56K的小猫,那么要不了多久,目标IP就因为承受不了这么多的数据而掉线,呵呵,一次攻击就这么简单的实现了。

  -l 定义发送数据包的大小,默认为32字节,我们利用它可以最大定义到65500字节。结合上面介绍的-t参数一起使用,会有更好的效果哦。

  -n 定义向目标IP发送数据包的次数,默认为3次。如果网络速度比较慢,3次对我们来说也浪费了不少时间,因为现在我们的目的仅仅是判断目标IP是否存在,那么就定义为一次吧。

  说明一下,如果-t 参数和 -n参数一起使用,ping命令就以放在后面的参数为标准,比如“ping IP -t -n 3”,虽然使用了-t参数,但并不是一直ping下去,而是只ping 3次。另外,ping命令不一定非得ping IP,也可以直接ping主机域名,这样就可以得到主机的IP。

  下面我们举个例子来说明一下具体用法。

  这里time=2表示从发出数据包到接受到返回数据包所用的时间是2秒,从这里可以判断网络连接速度的大小 。从TTL的返回值可以初步判断被ping主机的操作系统,之所以说“初步判断”是因为这个值是可以修改的。这里TTL=32表示操作系统可能是win98。

  (小知识:如果TTL=128,则表示目标主机可能是Win2000;如果TTL=250,则目标主机可能是Unix)

  至于利用ping命令可以快速查找局域网故障,可以快速搜索最快的QQ服务器,可以对别人进行ping攻击……这些就靠大家自己发挥了。

  二,nbtstat

  该命令使用TCP/IP上的NetBIOS显示协议统计和当前TCP/IP连接,使用这个命令你可以得到远程主机的NETBIOS信息,比如用户名、所属的工作组、网卡的MAC地址等。在此我们就有必要了解几个基本的参数。

  -a 使用这个参数,只要你知道了远程主机的机器名称,就可以得到它的NETBIOS信息(下同)。

  -A 这个参数也可以得到远程主机的NETBIOS信息,但需要你知道它的IP。

  -n 列出本地机器的NETBIOS信息。

  当得到了对方的IP或者机器名的时候,就可以使用nbtstat命令来进一步得到对方的信息了,这又增加了我们入侵的保险系数。

  三,netstat

  这是一个用来查看网络状态的命令,操作简便功能强大。

  -a 查看本地机器的所有开放端口,可以有效发现和预防木马,可以知道机器所开的服务等信息,如图4。

  这里可以看出本地机器开放有FTP服务、Telnet服务、邮件服务、WEB服务等。用法:netstat -a IP。

  -r 列出当前的路由信息,告诉我们本地机器的网关、子网掩码等信息。用法:netstat -r IP。

  四,tracert

  跟踪路由信息,使用此命令可以查出数据从本地机器传输到目标主机所经过的所有途径,这对我们了解网络布局和结构很有帮助。如图5。

  这里说明数据从本地机器传输到192.168.0.1的机器上,中间没有经过任何中转,说明这两台机器是在同一段局域网内。用法:tracert IP。

  五,net

  这个命令是网络命令中最重要的一个,必须透彻掌握它的每一个子命令的用法,因为它的功能实在是太强大了,这简直就是微软为我们提供的最好的入侵工具。首先让我们来看一看它都有那些子命令,键入net /?回车如图6。

  在这里,我们重点掌握几个入侵常用的子命令。

  net view

  使用此命令查看远程主机的所以共享资源。命令格式为net view \\IP。

  net use

  把远程主机的某个共享资源影射为本地盘符,图形界面方便使用,呵呵。命令格式为net use x: \\IP\sharename。上面一个表示把192.168.0.5IP的共享名为magic的目录影射为本地的Z盘。下面表示和192.168.0.7建立IPC$连接(net use $">\\IP\IPC$ "password" /user:"name"),

  建立了IPC$连接后,呵呵,就可以上传文件了:copy nc.exe $">\\192.168.0.7\admin$,表示把本地目录下的nc.exe传到远程主机,结合后面要介绍到的其他DOS命令就可以实现入侵了。

  net start

  使用它来启动远程主机上的服务。当你和远程主机建立连接后,如果发现它的什么服务没有启动,而你又想利用此服务怎么办?就使用这个命令来启动吧。用法:net start servername,如图9,成功启动了telnet服务。

  net stop

  入侵后发现远程主机的某个服务碍手碍脚,怎么办?利用这个命令停掉就ok了,用法和net start同。 net user

  查看和帐户有关的情况,包括新建帐户、删除帐户、查看特定帐户、激活帐户、帐户禁用等。这对我们入侵是很有利的,最重要的,它为我们克隆帐户提供了前提。键入不带参数的net user,可以查看所有用户,包括已经禁用的。下面分别讲解。

  1,net user abcd 1234 /add,新建一个用户名为abcd,密码为1234的帐户,默认为user组成员。

  2,net user abcd /del,将用户名为abcd的用户删除。

  3,net user abcd /active:no,将用户名为abcd的用户禁用。

  4,net user abcd /active:yes,激活用户名为abcd的用户。

  5,net user abcd,查看用户名为abcd的用户的情况

  net localgroup

  查看所有和用户组有关的信息和进行相关操作。键入不带参数的net localgroup即列出当前所有的用户组。在入侵过程中,我们一般利用它来把某个帐户提升为administrator组帐户,这样我们利用这个帐户就可以控制整个远程主机了。用法:net localgroup groupname username /add。

  现在我们把刚才新建的用户abcd加到administrator组里去了,这时候abcd用户已经是超级管理员了,呵呵,你可以再使用net user abcd来查看他的状态,和图10进行比较就可以看出来。但这样太明显了,网管一看用户情况就能漏出破绽,所以这种方法只能对付菜鸟网管,但我们还得知道。现在的手段都是利用其他工具和手段克隆一个让网管看不出来的超级管理员,这是后话。

  net time

  这个命令可以查看远程主机当前的时间。如果你的目标只是进入到远程主机里面,那么也许就用不到这个命令了。但简单的入侵成功了,难道只是看看吗?我们需要进一步渗透。这就连远程主机当前的时间都需要知道,因为利用时间和其他手段(后面会讲到)可以实现某个命令和程序的定时启动,为我们进一步入侵打好基础。用法:net time \\IP。

  六,at

  这个命令的作用是安排在特定日期或时间执行某个特定的命令和程序(知道net time的重要了吧?)。当我们知道了远程主机的当前时间,就可以利用此命令让其在以后的某个时间(比如2分钟后)执行某个程序和命令。用法:at time command \\computer。

  表示在6点55分时,让名称为a-01的计算机开启telnet服务(这里net start telnet即为开启telnet服务的命令)。

  七,ftp

  大家对这个命令应该比较熟悉了吧?网络上开放的ftp的主机很多,其中很大一部分是匿名的,也就是说任何人都可以登陆上去。现在如果你扫到了一台开放ftp服务的主机(一般都是开了21端口的机器),如果你还不会使用ftp的命令怎么办?下面就给出基本的ftp命令使用方法。

  首先在命令行键入ftp回车,出现ftp的提示符,这时候可以键入“help”来查看帮助(任何DOS命令都可以使用此方法查看其帮助)。

  大家可能看到了,这么多命令该怎么用?其实也用不到那么多,掌握几个基本的就够了。

  首先是登陆过程,这就要用到open了,直接在ftp的提示符下输入“open 主机IP ftp端口”回车即可,一般端口默认都是21,可以不写。接着就是输入合法的用户名和密码进行登陆了,这里以匿名ftp为例介绍。

  用户名和密码都是ftp,密码是不显示的。当提示kafeiba.com* logged in时,就说明登陆成功。这里因为是匿名登陆,所以用户显示为Anonymous。

  接下来就要介绍具体命令的使用方法了。

  dir 跟DOS命令一样,用于查看服务器的文件,直接敲上dir回车,就可以看到此ftp服务器上的文件。

  cd 进入某个文件夹。

  get 下载文件到本地机器。

  put 上传文件到远程服务器。这就要看远程ftp服务器是否给了你可写的权限了,如果可以,呵呵,该怎么 利用就不多说了,大家就自由发挥去吧。

  delete 删除远程ftp服务器上的文件。这也必须保证你有可写的权限。

  bye 退出当前连接。

  quit 同上。

  八,telnet

  功能强大的远程登陆命令,几乎所有的入侵者都喜欢用它,屡试不爽。为什么?它操作简单,如同使用自己的机器一样,只要你熟悉DOS命令,在成功以administrator身份连接了远程机器后,就可以用它来干想干的一切了。下面介绍一下使用方法,首先键入telnet回车,再键入help查看其帮助信息。 然后在提示符下键入open IP回车,这时就出现了登陆窗口,让你输入合法的用户名和密码,这里输入任何密码都是不显示的。

  当输入用户名和密码都正确后就成功建立了telnet连接,这时候你就在远程主机上具有了和此用户一样的权限,利用DOS命令就可以实现你想干的事情了。这里我使用的超级管理员权限登陆的。

  到这里为止,网络DOS命令的介绍就告一段落了,这里介绍的目的只是给菜鸟网管一个印象,让其知道熟悉和掌握网络DOS命令的重要性。其实和网络有关的DOS命令还远不止这些,这里只是抛砖引玉,希望能对广大菜鸟网管有所帮助。学好DOS对当好网管有很大的帮助,特别的熟练掌握了一些网络的DOS命令。

  另外大家应该清楚,任何人要想进入系统,必须得有一个合法的用户名和密码(输入法漏洞差不多绝迹了吧),哪怕你拿到帐户的只有一个很小的权限,你也可以利用它来达到最后的目的。所以坚决消灭空口令,给自己的帐户加上一个强壮的密码,是最好的防御弱口令入侵的方法。

  培养良好的安全意识才是最重要的。

posted @ 2006-10-01 16:07 刘璐 阅读(343) | 评论 (0)编辑 收藏

持久化框架、ORM框架、DAO设计模式之间的关系

ORM框架是一种持久化框架,DAO是用于实现持久化框架的一种设计模式

posted @ 2006-09-20 15:21 刘璐 阅读(849) | 评论 (0)编辑 收藏

Oracle Portal 及其门户网站开发概述

摘要: Portal是IT领域的新技术,是企业信息化工作的发展方向之一。本文首先介绍了Oracle Portal的定义、特点,接着阐述了portal的体系结构。随后本文介绍了Oracle9iAS Portal的功能特点及基于它的企业门户网站的开发。最后本文简要探讨了基于portal的门户网站开发的问题。

关键词: oracle portal,门户,网站,信息入口,企业入口

引言

  Oracle Portal为企业提供了一个单一的访问企业各种信息资源的入口,利用它,企业可以为员工、供应商、零售商、合作伙伴等提供个性化的信息服务,使他们能通过单一的入口,迅速找到所需的信息。Portal具有众多的核心功能特性,将企业的应用、人员、信息与流程有机地结合起来,为信息化工作的开展提供了可行的思路和解决方案。

Oracle Portal概述

1、Oracle Portal是什么

  Portal一词是从Internet所衍生出来的,最初的“门户”一词主要是指信息门户,诸如雅虎、新浪等网站都是一种信息门户。随后,门户的应用领域又得到扩展,出现了企业信息门户(Enterprise Information Portal,EIP)。Oracle Portal是一个建立企业信息门户的集成环境。通过Oracle Portal,企业员工可以很方便地将自己所需要的,来源于各种渠道的信息集成在一个统一的视图之内。例如,在传统企业信息系统环境下,一个财务部门可能要接触这样一些信息源:企业财务软件,企业内部网站的政策、新闻、公告,各种图表、报表,互联网上的财经新闻,股票行情等等;通过Oracle Portal提供的“自助式”的服务,财务部门可以为自己部门量身定制一套财务人员的信息门户,将上述信息有效地组织在Web应用程序之中,并根据不同级别人员的职能设定相应的访问权限。在以前,这可能需要向IT部门提交详细的需求分析,并等待好几个月才能投入使用;通过Oracle Portal提供的快速、易用的开发工具和内建功能模块,非IT人员也可以根据自己的实际业务需求,创建这样的集成化Web应用了。

2、Oracle Portal的体系结构

1) Oracle Portal节点

  每台安装Oracle Portal示例的服务器称为一个Oracle Portal节点。每个OraclePortal节点包含有超过200个表及视图,以及超过1000个PL/SQL包。Oracle Portal节点之间可以相互注册,形成一个联合Portal结构。节点的注册和管理可以很容易地由企业的中心Portal管理。Portal容器是存储Oracle Portal对象的地方。它保存着Provider注册表,页面的样式定义,用户对Portlet的定制,访问权限,内容区域及页面的定义,数据驱动的组件等等。数据库Provider管理基于数据库的PL/SQL或Java存储过程形式的Portlet,它存储在Portal节点之外。Portal框架通过数据库Provider调用这些Portlet,并将返回的HTML/XML形式的结果显示在页面的某个区域中。与数据库Provider不同的是,Web Provider面向的是来自Web的数据,它们通常是通过HTTP协议而不是数据库存储过程来调用的,并且返回的结果已经是格式化的HTML/XML内容。

2) Oracle Logon/SSO Server

  SSO是Single Sign-On的缩写,即单一登录模式。SSO服务器集中管理用户的身份验证和权限管理,这使得其它应用程序可以将这些任务交给SSO服务器统一完成,也使得用户只需要在SSO服务器上登陆一次就可以使用所有相关联的应用程序,而无需记忆多个帐户密码。

3)Oralcle 9i Application Server

  Oracle 9iAS是Oracle Portal的中间层应用程序服务器。在Oracle9iAS中,Oracle HTTP Server提供主要的HTTP服务,Oracle Jserv提供JSP和servlet服务,modPL/SQL以Apache模块的模式提供从Web访问Oracle数据库的服务。

4)Oracle Portal Cache

  Oracle Portal Cache使用基于文件系统的存储系统,为页面定义和portlet生成的内容提供缓存,使用缓存系统,Oracle Portal无需每次生成页面的时候都访问对象存储系统或调用所有portlet,这样大大提高了页面的响应时间。

Oracle9iAS Portal概述

1、Oracle9ias Portal的功能

  Oracle9iAS Portal是1999年初作为Oracle WebDB一部分引入的技术的下一代。Oracle9iAS Portal是Oracle9i的关键组件,作为一项服务集成到Oracle9i应用服务器中。有了Oracle9iAS Portal,企业就拥有了一种强有力的手段,可以向员工、合作伙伴和供应商提供一致、高效的访问途径,使他们能够访问更有效地完成日常业务任务所需的企业信息和工具。Oracle9iAS Portal通过提供如下功能实现了上述目标。

1) 单点交互功能

  Oracle9iAS Portal的可扩展的门户框架提供了集成能力和对企业信息的标准访问途径,同时,灵活的工作环境使各机构、部门和个人用户能够对他们的门户风格进行个性化定制。Oracle9iAS Portal作为单一交互点,通过把信息集中在一起来解决这些问题:把用户与他们的信息源更好地连接在一起,同时提供了适应不同个人开展工作与处理信息的方式所需的灵活性。Oracle9iAS Portal作为真正企业级的电子商务门户,用称为portlet的可重复使用的信息组件,在彼此互不相连的动态数据、文档和Web站点的世界中架起了沟通的桥梁。

2) 集成的成套门户服务

  Oracle9iAS Portal的自助式门户服务使用户和开发人员能够组织与发布信息并创建应用。除了能访问企业数据并对其进行个性化处理外,Oracle9iAS Portal还并入了若干自助式功能,允许门户用户和管理员直接地管理他们的信息。这些服务能够让最终用户控制并负责他们的信息,也向IT专业人员提供了更好地满足最终用户的需求工具。Oracle9iAS Portal还为文档发布、文件上传、页面格式化以及访问控制提供了一套集成功能,可以让用户共享和管理信息。除了文件类型内容外,来自Oracle数据库的信息也能够很容易地集成到Oracle9iAS Portal之中。Oracle9iAS Portal包含有一个数据驱动的组件库,可以用于与Oracle数据库地交互,并把信息无缝地嵌入门户页面内的portlet之中。这些组件包括Javascript增强型地数据输入表单、以HTML、纯文本或MS Excel格式输出的分栏报告、可定制HTML条形图以及其他几个用于发布Oracle数据库中数据的组件。

3)完整的部署和管理环境

  Oracle9iAS Portal借助简单性而赋予用户力量,因为它基于互联网的开放标准。它不要求用户安装和学习大型复杂的程序,不让用户接触这些不必要的复杂性,而是通过管理基础性的Oracle8i数据库中的内容,而对Oracle9iAS Portal进行集中维护。Oracle9iAS Portal的成熟的三层体系结构支持多种多样的配置,并可扩展以满足复杂的要求。Oracle9iAS具备灵活的部署模式,支持在类型广泛的硬件和操作系统上的多种配置形式,从而产生了高度可伸缩的性能。Oracle9iAS Portal支持向全球社会部署。包含在Oracle9iAS Portal的向导、对话框、消息和帮助内容中的文本已经翻译成20多种语言,以满足不同用户的需求。

2、基于Oracle9iAS的门户网站的开发

  为满足一般企业的业务需求和技术需求,可以构建它的集成信息咨询门户。该解决方案分为4层结构:客户层、中间层、基础架构层,数据层。

1)客户层:我们采用浏览器作为客户端的显示工具,使最终用户无需安装任何客户端工具,即可在任何时间任何地点在任何系统平台上访企业的门户平台。

2)中间层:中间层是标准的基于Apache的Oracle9iAS安装;Oracle Portal直接操纵mod_PL/SQL和mod_OC4J,中间层包括三个部分,Oracle门户,网络提供者(Web Provider)和商务智能。Oracle门户包括HTTP服务器,用以处理Oracle前端的页面请求并负责应答;并行页面引擎,是一个servlet引擎,与Web和数据库提供者通讯生成相应的portlet内容并负责页面装配,也与缓存页面定义和portlet内容的“本地”文件系统交互;可配置多个线程来实现与提供者之间的并行通讯;mod_PL/SQL用于处理PL/SQL的应用模块。 Web-Cache在HTTP服务器上的应用能提高整个Oracle Portal的效率。运用9iAS强大的商务智能分析数据,可提供根据客户需求所定制的报表。Web内容提供者可工作在各种Web环境,通过HTTP通讯并返回HTML/XML格式的结果;通过SOAP XML进行数据交换;适用于现有的和远程的Web服务,并支持订阅模式。

3)基础构架层:提供单一登陆服务,对整个系统进行单一的安全管理;提供访问后台数据库的统一连接;还包括Oracle的集成和工作流服务,用以连接各种异构平台和系统。

4)数据层:包括所有为Portal提供数据的客户服务器,内部网站系统和外部网站。

4、门户网站开发存在的问题

  以Oracle9iAS 为基础,为企业提供快速建立企业入口网站的方案,让企业无需购买、安装软件,无需担心额外增加MIS人员等负担,只要嵌入Oracle网站,即可享受Oracle提供的基础构架,并在网站上勾选所需的功能以组建自己的网站。Web界面容易上手的特性,使得Intranet成为企业沟通、管理的重要工具。这也使得企业门户网站的建设逐渐变成一种必然。然而纵观国内多数企业开设的入口网站,目前仍处于低级阶段,尚未发挥应有的功效,而软件商提出的各种解决方案又令人目不暇接,难以抉择。总的来说,企业门户网站建设存在以下几个问题:1)企业的门户网站有建成大杂烩的趋势;2)企业的文化障碍凌驾于技术之上,阻止了企业门户网站的继续开发和投入使用;3)门户网站内容的完成仅仅是个开始,还有很多其它技术任务有待完成。如何解决上述三个问题无疑是当今企业门户网站建设成功与否的关键。

结束语

  Oracle9iAS可以用来快速部署和开发个性化门户网站,而它包括的Oracle9iAS Portal具有易用的Web界面,使用户能够有条理的对商业信息、网页内容和应用进行个性化的浏览。使用Oracle的门户解决方案,简单实现门户单点信息访问,将使您的企业门户网站成为一种全新的电子商务桌面,去迎接更为激烈的挑战!

posted @ 2006-09-16 08:46 刘璐 阅读(221) | 评论 (0)编辑 收藏

spring 编程入门十大问题解答

1、如何学习Spring?
你可以通过下列途径学习spring:
(1) spring下载包中doc目录下的MVC-step-by-step和sample目录下的例子都是比较好的spring开发的例子。

(2) AppFuse集成了目前最流行的几个开源轻量级框架或者工具Ant,XDoclet,Spring,Hibernate(iBATIS),JUnit,Cactus,StrutsTestCase,Canoo's WebTest,Struts Menu,Display Tag Library,OSCache,JSTL,Struts 。
你可以通过AppFuse源代码来学习spring。
AppFuse网站:http://raibledesigns.com/wiki/Wiki.jsp?page=AppFuse

(3)Spring 开发指南(夏昕)(http://www.xiaxin.net/Spring_Dev_Guide.rar
一本spring的入门书籍,里面介绍了反转控制和依赖注射的概念,以及spring的bean管理,spring的MVC,spring和hibernte,iBatis的结合。

(4) spring学习的中文论坛
SpringFramework中文论坛(http://spring.jactiongroup.net)
Java视线论坛(http://forum.javaeye.com)的spring栏目

2、利用Spring框架编程,console打印出log4j:WARN Please initialize the log4j system properly?
说明你的log4j.properties没有配置。请把log4j.properties放到工程的classpath中,eclipse的classpath为bin目录,由于编译后src目录下的文件会拷贝到bin目录下,所以你可以把log4j.properties放到src目录下。
这里给出一个log4j.properties的例子:

log4j.rootLogger=DEBUG,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %5p (%F:%L) - %m%n


3、出现 java.lang.NoClassDefFoundError?
一般情况下是由于你没有把必要的jar包放到lib中。

比如你要采用spring和hibernate(带事务支持的话),你除了spring.jar外还需要hibernat.jar、aopalliance.jar、cglig.jar、jakarta-commons下的几个jar包。

http://www.springframework.org/download.html下载spring开发包,提供两种zip包
spring-framework-1.1.3-with-dependencies.zip和spring-framework-1.1.3.zip,我建议你下载spring-framework-1.1.3-with-dependencies.zip。这个zip解压缩后比后者多一个lib目录,其中有hibernate、j2ee、dom4j、aopalliance、jakarta-commons等常用包。

4、java.io.FileNotFoundException: Could not open class path resource [....hbm.xml],提示找不到xml文件?
原因一般有两个:
(1)该xml文件没有在classpath中。
(2)applicationContext-hibernate.xml中的xml名字没有带包名。比如:
<bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
        <property name="dataSource"><ref bean="dataSource"/></property>
        <property name="mappingResources">
            <list>
                <value>User.hbm.xml</value>         错,改为: <value>com/yz/spring/domain/User.hbm.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
         <props>
         <prop key="hibernate.dialect"> net.sf.hibernate.dialect.MySQLDialect </prop>
         <prop key="hibernate.show_sql">true</prop>
        </props>
        </property>
</bean>


5、org.springframework.beans.NotWritablePropertyException: Invalid property 'postDao' of bean class?
出现异常的原因是在application-xxx.xml中property name的错误。
<property name="...."> 中name的名字是与bean的set方法相关的,而且要注意大小写。
比如
public class PostManageImpl extends BaseManage implements PostManage {
    private PostDAO dao = null;
    public void setPostDAO(PostDAO postDAO){
        this.dao = postDAO;
    }
}
那么xml的定义应该是:
<bean id="postManage" parent="txProxyTemplate">
        <property name="target">
            <bean class="com.yz.spring.service.implement.PostManageImpl">
                <property name="postDAO"><ref bean="postDAO"/></property>    对
                <property name="dao"><ref bean="postDAO"/></property>             
            </bean>
        </property>
</bean>

6、Spring中如何实现事务管理?
        首先,如果使用mysql,确定mysql为InnoDB类型。
        事务管理的控制应该放到商业逻辑层。你可以写个处理商业逻辑的JavaBean,在该JavaBean中调用DAO,然后把该Bean的方法纳入spring的事务管理。

比如:xml文件定义如下:
<bean id="txProxyTemplate" abstract="true"
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager"><ref bean="transactionManager"/></property>
        <property name="transactionAttributes">
            <props>
                <prop key="save*">PROPAGATION_REQUIRED</prop>
                <prop key="remove*">PROPAGATION_REQUIRED</prop>
                <prop key="*">PROPAGATION_REQUIRED</prop>
            </props>
        </property>
</bean>

<bean id="userManage" parent="txProxyTemplate">
      <property name="target">
          <bean class="com.yz.spring.service.implement.UserManageImpl">
              <property name="userDAO"><ref bean="userDAO"/></property>
          </bean>
      </property>
</bean>

com.yz.spring.service.implement.UserManageImpl就是我们的实现商业逻辑的JavaBean。我们通过parent元素声明其事务支持。

7、如何管理Spring框架下更多的JavaBean?
        JavaBean越多,spring配置文件就越大,这样不易维护。为了使配置清晰,我们可以将JavaBean分类管理,放在不同的配置文件中。 应用启动时将所有的xml同时加载。
比如:
        DAO层的JavaBean放到applicationContext-hibernate.xml中,商业逻辑层的JavaBean放到applicationContext-service.xml中。然后启动类中调用以下代码载入所有的ApplicationContext。

String[] paths = {"com/yz/spring/dao/hibernate/applicationContext-hibernate.xml",
                          "com/yz/spring/service/applicationContext-service.xml"};
ctx = new ClassPathXmlApplicationContext(paths);


8、web应用中如何加载ApplicationContext?
可以通过定义web.xml,由web容器自动加载。

 <servlet>
  <servlet-name>context</servlet-name>
  <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
  <load-on-startup>1</load-on-startup>
 </servlet>
 
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>/WEB-INF/applicationContext-hibernate.xml</param-value>
  <param-value>/WEB-INF/applicationContext-service.xml</param-value>
 </context-param>

9、在spring中如何配置的log4j?
在web.xml中加入以下代码即可。
<context-param>
  <param-name>log4jConfigLocation</param-name>
  <param-value>/WEB-INF/log4j.properties</param-value>
</context-param>

10、Spring框架入门的编程问题解决了,我该如何更深地领会Spring框架呢?
这两本书你该去看看。这两本书是由Spring的作者Rod Johnson编写的。
Expert One on one J2EE Design and Development
Expert One on one J2EE Development Without EJB
你也该看看martinfowler的Inversion of Control Containers and the Dependency Injection pattern。
http://www.martinfowler.com/articles/injection.html

再好好研读一下spring的文档。
http://www.jactiongroup.net/reference/html/index.html(中文版,未全部翻译)

还有就是多实践吧。

posted @ 2006-09-14 08:25 刘璐 阅读(268) | 评论 (0)编辑 收藏

仅列出标题
共7页: 上一页 1 2 3 4 5 6 7 下一页