2.1. 开发工具
Microsoft Visual Studio 2005
ASP.NET AJAX Extensions V1.0(
http://www.asp.net/ajax/)
AJAX Control Toolkit V1.0.20229(
http://www.codeplex.com/AtlasControlToolkit/)
Spring .NET V1.1.2 (
http://www.springframework.net/)
NHibernate V1.2.1.GA(
http://www.hibernate.org/343.html)
2.2. 解决方案结构

2.3. ASP.NET配置
2.3.1. 网站地图
<?
xml version="1.0" encoding="utf-8"
?>
<
siteMap
xmlns
="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"
>
<
siteMapNode
url
="~/Default.aspx"
title
="首页"
description
=""
>
<
siteMapNode
url
="~/Salaries.aspx"
title
="工资管理"
description
=""
/>
<
siteMapNode
url
="~/SalaryQuery.aspx"
title
="工资查询"
description
=""
/>
<
siteMapNode
url
="~/Depts.aspx"
title
="部门管理"
description
=""
/>
<
siteMapNode
url
="~/Employees.aspx"
title
="员工管理"
description
=""
/>
<
siteMapNode
url
="~/Users.aspx"
title
="用户管理"
description
=""
/>
<
siteMapNode
url
="~/Roles.aspx"
title
="角色管理"
description
=""
/>
<
siteMapNode
url
="~/UserRole.aspx"
title
="权限设置"
description
=""
/>
</
siteMapNode
>
</
siteMap
>
2.3.2. Web.config
<?
xml version="1.0"
?>
<
configuration
>
<
system.web
>
<
pages
theme
="Default"
>
<
controls
>
<
add
tagPrefix
="asp"
namespace
="System.Web.UI"
assembly
="System.Web.Extensions"
/>
<
add
tagPrefix
="ajaxToolkit"
namespace
="AjaxControlToolkit"
assembly
="AjaxControlToolkit"
/>
<
add
tagPrefix
="gfc"
namespace
="GFC.Web.UI"
assembly
="GFC.Web.UI"
/>
</
controls
>
</
pages
>
<
httpHandlers
>
<
remove
verb
="*"
path
="*.asmx"
/>
<
add
verb
="*"
path
="*.asmx"
validate
="false"
type
="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
/>
<
add
verb
="GET,HEAD"
path
="ScriptResource.axd"
type
="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
/>
</
httpHandlers
>
<
httpModules
>
<
add
name
="ScriptModule"
type
="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
/>
</
httpModules
>
<
authentication
mode
="Forms"
>
<
forms
loginUrl
="~/SignIn.aspx"
name
=".SalaryPrj"
protection
="All"
slidingExpiration
="True"
timeout
="60"
>
</
forms
>
</
authentication
>
<
authorization
>
<
allow
users
="*"
/>
</
authorization
>
<
siteMap
defaultProvider
="XmlSiteMapProvider"
enabled
="true"
>
<
providers
>
<
add
name
="XmlSiteMapProvider"
type
="System.Web.XmlSiteMapProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
siteMapFile
="web.sitemap"
securityTrimmingEnabled
="true"
/>
</
providers
>
</
siteMap
>
<
compilation
>
<
assemblies
>
<
add
assembly
="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"
/>
<
add
assembly
="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
/>
<
add
assembly
="System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
/>
<
add
assembly
="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"
/>
</
assemblies
>
</
compilation
>
</
system.web
>
</
configuration
>
2.3.3. 母版页(MasterPage.master)
(略)
2.4. Spring.NET配置
2.4.1. 数据库配置(Config/ Common.Config)
本示例采用Access数据库,DbProvider使用OleDb-2.0,NHibernate使用 JetDriver驱动,需要引用NHibernate.JetDriver.dll。
<
objects
xmlns
="http://www.springframework.net"
xmlns:db
="http://www.springframework.net/database"
>
<
db:provider
id
="DbProvider"
provider
="OleDb-2.0"
connectionString
="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|Database.mdb"
/>

<
object
id
="sessionFactory"
type
="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate12"
>
<
property
name
="DbProvider"
ref
="DbProvider"
/>
<
property
name
="MappingAssemblies"
>
<
list
>
<
value
>
Guushuuse.SalaryPrj.HR
</
value
>
<
value
>
Guushuuse.SalaryPrj.Salary
</
value
>
<
value
>
Guushuuse.SalaryPrj.Security
</
value
>
</
list
>
</
property
>
<
property
name
="HibernateProperties"
>
<
dictionary
>
<
entry
key
="hibernate.connection.provider"
value
="NHibernate.Connection.DriverConnectionProvider"
/>
<
entry
key
="hibernate.dialect"
value
="NHibernate.JetDriver.JetDialect, NHibernate.JetDriver"
/>
<
entry
key
="hibernate.connection.driver_class"
value
="NHibernate.JetDriver.JetDriver, NHibernate.JetDriver"
/>
</
dictionary
>
</
property
>
</
object
>
<
object
id
="HibernateTransactionManager"
type
="Spring.Data.NHibernate.HibernateTransactionManager, Spring.Data.NHibernate12"
>
<
property
name
="DbProvider"
ref
="DbProvider"
/>
<
property
name
="SessionFactory"
ref
="SessionFactory"
/>
</
object
>

<
object
id
="hibernateTemplate"
type
="Spring.Data.NHibernate.HibernateTemplate"
>
<
property
name
="SessionFactory"
ref
="sessionFactory"
/>
<
property
name
="TemplateFlushMode"
value
="Auto"
/>
<
property
name
="CacheQueries"
value
="true"
/>
</
object
>
<
object
id
="autoProxyCreator"
type
="Spring.Aop.Framework.AutoProxy.DefaultAdvisorAutoProxyCreator, Spring.Aop"
>
</
object
>
<
object
id
="transactionAdvisor"
type
="Spring.Transaction.Interceptor.TransactionAttributeSourceAdvisor, Spring.Data"
>
<
property
name
="TransactionInterceptor"
ref
="transactionInterceptor"
/>
</
object
>
<
object
id
="transactionInterceptor"
type
="Spring.Transaction.Interceptor.TransactionInterceptor, Spring.Data"
>
<
property
name
="TransactionManager"
ref
="HibernateTransactionManager"
/>
<
property
name
="TransactionAttributeSource"
ref
="attributeTransactionAttributeSource"
/>
</
object
>

<
object
id
="attributeTransactionAttributeSource"
type
="Spring.Transaction.Interceptor.AttributesTransactionAttributeSource, Spring.Data"
>
</
object
>
</
objects
>
2.4.2. Web.Config
新增spring配置节
<
sectionGroup
name
="spring"
>
<
section
name
="context"
type
="Spring.Context.Support.WebContextHandler, Spring.Web"
/>
<
section
name
="parsers"
type
="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"
/>
</
sectionGroup
>
新增httpModule
<
add
type
="Spring.Context.Support.WebSupportModule, Spring.Web"
name
="WebSupportModule"
/>
<
add
type
="Spring.Data.NHibernate.Support.OpenSessionInViewModule, Spring.Data.NHibernate12"
name
="OpenSessionInViewModule"
/>
spring节
<
spring
>
<
parsers
>
<
parser
type
="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"
/>
</
parsers
>
<
context
>
<
resource
uri
="~/Config/Common.config"
/>
<
resource
uri
="~/Config/Guushuuse.SalaryPrj.HR.Config"
/>
<
resource
uri
="~/Config/Guushuuse.SalaryPrj.Salary.Config"
/>
<
resource
uri
="~/Config/Guushuuse.SalaryPrj.Security.Config"
/>
</
context
>
</
spring
>