SpringAOP+SpringIoc+hibernate3+SpringMVC构建步骤
第一步:配置web.xml:
1
<?
xml version="1.0" encoding="GBK"
?>
2
<!
DOCTYPE web-app
3
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
4
"http://java.sun.com/dtd/web-app_2_3.dtd"
>
5
<
web-app
>
6
<
display-name
>
displayName
</
display-name
>
7
<
description
>
采用Spring集成Hibernate3,SpringMVC
</
description
>
8
9
<
context-param
>
10
<
param-name
>
webAppRootKey
</
param-name
>
11
<
param-value
>
springMVC.root
</
param-value
>
12
</
context-param
>
13
14
<!--
初始项目的日志
-->
15
<
context-param
>
16
<
param-name
>
log4jConfigLocation
</
param-name
>
17
<
param-value
>
/WEB-INF/log4j.properties
</
param-value
>
18
</
context-param
>
19
20
<!--
加载spring的配置文件,最好将数据访问与spring 根上下文配置文件分开便于管理
-->
21
<
context-param
>
22
<
param-name
>
contextConfigLocation
</
param-name
>
23
<
param-value
>
/WEB-INF/applicationContext.xml /WEB-INF/dataAccessContext-hibernate.xml
</
param-value
>
24
</
context-param
>
25
26
<!--
默认加载spring的更目录配置文件,通常是applicationContext.xml ,初始化beanFactory,使用在Jsp/Servlet2.4以上的web container中
-->
27
<
servlet
>
28
<
servlet-name
>
context
</
servlet-name
>
29
<
servlet-class
>
org.springframework.web.context.ContextLoaderServlet
</
servlet-class
>
30
<
load-on-startup
>
1
</
load-on-startup
>
31
</
servlet
>
32
33
<!--
使用在Jsp/Servlet2.3以下中,加载Spring的根目录上下文,作用同上,只是使用场合不同
34
<listener>
35
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
36
</listener>
37
-->
38
39
<!--
加载你的工程,默认读取yourWebServer-servlet.xml,这里是springMVC-servlet.xml
-->
40
<
servlet
>
41
<
servlet-name
>
springMVC
</
servlet-name
>
42
<
servlet-class
>
43
org.springframework.web.servlet.DispatcherServlet
44
</
servlet-class
>
45
<
load-on-startup
>
2
</
load-on-startup
>
46
</
servlet
>
47
48
<!--
servlet>
49
<servlet-name>FreeMarker</servlet-name>
50
<servlet-class>
51
org.springframework.web.servlet.DispatcherServlet
52
</servlet-class>
53
<load-on-startup>3</load-on-startup>
54
</servlet
-->
55
56
<
servlet-mapping
>
57
<
servlet-name
>
springMVC
</
servlet-name
>
58
<
url-pattern
>
*.action
</
url-pattern
>
59
</
servlet-mapping
>
60
61
<!--
servlet-mapping>
62
<servlet-name>FreeMarker</servlet-name>
63
<url-pattern>*.ftl</url-pattern>
64
</servlet-mapping
-->
65
66
<
session-config
>
67
<
session-timeout
>
10
</
session-timeout
>
68
</
session-config
>
69
70
<
welcome-file-list
>
71
<
welcome-file
>
index.jsp
</
welcome-file
>
72
</
welcome-file-list
>
73
74
<
error-page
>
75
<
exception-type
>
java.lang.Exception
</
exception-type
>
76
<
location
>
/WEB-INF/view/jsp/uncaughtException.jsp
</
location
>
77
</
error-page
>
78
79
</
web-app
>
80
81
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
第二步:XML :
applicationContext.xml
1
<?
xml version="1.0" encoding="UTF-8"
?>
2
<!
DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"
>
3
4
<
beans
>
5
<!--
6
============================================================
7
/WEB-INF/applicationContext.xml
8
============================================================
9
-->
10
<
bean
id
="propertyConfigurer"
class
="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
>
11
<
property
name
="locations"
>
12
<
list
>
13
<
value
>
WEB-INF/jdbc.properties
</
value
>
14
</
list
>
15
</
property
>
16
</
bean
>
17
18
<
bean
id
="passytTarget"
class
="com.passyt.model.logic.PassytImpl"
>
19
<
property
name
="adminPersonDao"
>
20
<
ref
bean
="adminPersonDao"
/>
21
</
property
>
22
<
property
name
="employeeDao"
>
23
<
ref
bean
="employeeDao"
/>
24
</
property
>
25
<
property
name
="employeeLevelDao"
>
26
<
ref
bean
="employeeLevelDao"
/>
27
</
property
>
28
<
property
name
="laborageDetailDao"
>
29
<
ref
bean
="laborageDetailDao"
/>
30
</
property
>
31
</
bean
>
32
33
<
bean
id
="passyt"
class
="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
>
34
<
property
name
="transactionManager"
>
35
<
ref
bean
="transactionManager"
/>
36
</
property
>
37
<
property
name
="target"
>
38
<
ref
bean
="passytTarget"
/>
39
</
property
>
40
<
property
name
="transactionAttributes"
>
41
<
props
>
42
<
prop
key
="save*"
>
PROPAGATION_REQUIRED
</
prop
>
43
<
prop
key
="delete*"
>
PROPAGATION_REQUIRED
</
prop
>
44
<
prop
key
="update*"
>
PROPAGATION_REQUIRED
</
prop
>
45
<
prop
key
="get*"
>
PROPAGATION_REQUIRED,readOnly
</
prop
>
46
</
props
>
47
</
property
>
48
</
bean
>
49
</
beans
>
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
dataAccessContext-hibernate.xml
1
<?
xml version="1.0" encoding="UTF-8"
?>
2
<!
DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"
>
3
<
beans
>
4
<!--
========================= RESOURCE DEFINITIONS =========================
-->
5
6
<
bean
id
="dataSource"
class
="org.apache.commons.dbcp.BasicDataSource"
destroy-method
="close"
>
7
<
property
name
="driverClassName"
>
8
<
value
>
${jdbc.driverClassName}
</
value
>
9
</
property
>
10
<
property
name
="url"
>
11
<
value
>
${jdbc.url}
</
value
>
12
</
property
>
13
<
property
name
="username"
>
14
<
value
>
${jdbc.username}
</
value
>
15
</
property
>
16
<
property
name
="password"
>
17
<
value
>
${jdbc.password}
</
value
>
18
</
property
>
19
</
bean
>
20
21
<
bean
id
="sessionFactory"
class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
>
22
<
property
name
="dataSource"
ref
="dataSource"
/>
23
<
property
name
="mappingResources"
>
24
<
list
>
25
<
value
>
com/passyt/model/AdminPerson.hbm.xml
</
value
>
26
<
value
>
com/passyt/model/Employee.hbm.xml
</
value
>
27
<
value
>
com/passyt/model/EmployeeLevel.hbm.xml
</
value
>
28
<
value
>
com/passyt/model/LaborageDetail.hbm.xml
</
value
>
29
</
list
>
30
</
property
>
31
<
property
name
="hibernateProperties"
>
32
<
props
>
33
<!--
org.hibernate.dialect.HSQLDialect
-->
34
<
prop
key
="hibernate.dialect"
>
${hibernate.dialect}
</
prop
>
35
<
prop
key
="hibernate.show_sql"
>
true
</
prop
>
36
<
prop
key
="hibernate.generate_statistics"
>
true
</
prop
>
37
</
props
>
38
</
property
>
39
<
property
name
="eventListeners"
>
40
<
map
>
41
<
entry
key
="merge"
>
42
<
bean
class
="org.springframework.orm.hibernate3.support.IdTransferringMergeEventListener"
/>
43
</
entry
>
44
</
map
>
45
</
property
>
46
</
bean
>
47
48
<
bean
id
="transactionManager"
class
="org.springframework.orm.hibernate3.HibernateTransactionManager"
>
49
<
property
name
="sessionFactory"
>
50
<
ref
local
="sessionFactory"
/>
51
</
property
>
52
</
bean
>
53
54
<!--
Hibernate 3.0's JMX statistics service
-->
55
<!--
Implements the StatisticsServiceMBean management interface
-->
56
<!--
bean name="springMVC:type=HibernateStatistics" class="org.hibernate.jmx.StatisticsService">
57
<property name="sessionFactory" ref="sessionFactory"/>
58
</bean
-->
59
60
<!--
========================= DAO DEFINITIONS: IBATIS IMPLEMENTATIONS =========================
-->
61
62
<
bean
id
="adminPersonDao"
class
="com.passyt.model.dao.hibernate.HibernaeAdminPersonDao"
>
63
<
property
name
="sessionFactory"
>
64
<
ref
bean
="sessionFactory"
/>
65
</
property
>
66
</
bean
>
67
68
<
bean
id
="employeeDao"
class
="com.passyt.model.dao.hibernate.HibernateEmployeeDao"
>
69
<
property
name
="sessionFactory"
>
70
<
ref
bean
="sessionFactory"
/>
71
</
property
>
72
</
bean
>
73
74
<
bean
id
="employeeLevelDao"
class
="com.passyt.model.dao.hibernate.HibernateEmployeeLevelDao"
>
75
<
property
name
="sessionFactory"
>
76
<
ref
bean
="sessionFactory"
/>
77
</
property
>
78
</
bean
>
79
80
<
bean
id
="laborageDetailDao"
class
="com.passyt.model.dao.hibernate.HibernateLaborageDetailDao"
>
81
<
property
name
="sessionFactory"
>
82
<
ref
bean
="sessionFactory"
/>
83
</
property
>
84
</
bean
>
85
</
beans
>
86
87
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
springMVC-servlet.xml:
1
<?
xml version="1.0" encoding="UTF-8"
?>
2
<!
DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"
>
3
4
<!--
5
- DispatcherServlet application context for the Spring web MVC
6
- implementation of JPetStore's web tier.
7
-->
8
<
beans
>
9
10
<!--
========================= MESSAGE SOURCE DEFINITION =========================
-->
11
12
<!--
13
- Message source for this context, loaded from localized "messages_xx" files.
14
- Could also reside in the root application context, as it is generic,
15
- but is currently just used within PetClinic's web tier.
16
-->
17
<
bean
id
="messageSource"
class
="org.springframework.context.support.ResourceBundleMessageSource"
>
18
<
property
name
="basename"
value
="messages"
/>
19
</
bean
>
20
21
<!--
========================= MAPPING DEFINITIONS =========================
-->
22
23
<!--
24
- This bean provides explicit View mappings in a resource bundle instead of the
25
- default InternalResourceViewResolver. It fetches the view mappings from
26
- localized "views_xx" classpath files, i.e. "/WEB-INF/classes/views.properties"
27
- or "/WEB-INF/classes/views_de.properties".
28
-
29
- Symbolic view names returned by Controllers will be resolved by this bean
30
- using the respective properties file, which defines arbitrary mappings between
31
- view names and resources.
32
-->
33
<
bean
id
="viewResolver"
class
="org.springframework.web.servlet.view.ResourceBundleViewResolver"
>
34
<
property
name
="basename"
value
="views"
/>
35
</
bean
>
36
37
<
bean
id
="exceptionResolver"
class
="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"
>
38
<
property
name
="exceptionMappings"
>
39
<
props
>
40
<
prop
key
="org.springframework.dao.DataAccessException"
>
dataAccessFailure
</
prop
>
41
<
prop
key
="org.springframework.transaction.TransactionException"
>
dataAccessFailure
</
prop
>
42
</
props
>
43
</
property
>
44
</
bean
>
45
46
<
bean
id
="urlMapping"
class
="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
>
47
<
property
name
="mappings"
>
48
<
props
>
49
<
prop
key
="/login.action"
>
login
</
prop
>
50
<
prop
key
="/forwardTop.action"
>
passytController
</
prop
>
51
<
prop
key
="/forwardMain.action"
>
passytController
</
prop
>
52
<
prop
key
="/forwardMbot.action"
>
passytController
</
prop
>
53
<
prop
key
="/getListOfEmployeeLevel.action"
>
passytController
</
prop
>
54
<
prop
key
="/addEmployeeLevel.action"
>
addEmployeeLevel
</
prop
>
55
<
prop
key
="/test.action"
>
testAction
</
prop
>
56
</
props
>
57
</
property
>
58
</
bean
>
59
60
<!--
========================= CONTROLLER DEFINITIONS =========================
-->
61
62
<
bean
id
="passytController"
class
="com.passyt.web.SpringMVC.PassytController"
>
63
<
property
name
="methodNameResolver"
ref
="passytControllerResolver"
/>
64
<
property
name
="passytFacde"
ref
="passyt"
/>
65
</
bean
>
66
67
<
bean
id
="passytControllerResolver"
class
="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver"
>
68
<
property
name
="mappings"
>
69
<
props
>
70
<
prop
key
="/forwardTop.action"
>
forwardTop
</
prop
>
71
<
prop
key
="/forwardMain.action"
>
forwardMain
</
prop
>
72
<
prop
key
="/forwardMbot.action"
>
forwardMbot
</
prop
>
73
<
prop
key
="/getListOfEmployeeLevel.action"
>
getAllEmployeeLevels
</
prop
>
74
</
props
>
75
</
property
>
76
</
bean
>
77
78
<
bean
id
="testAction"
class
="com.passyt.web.SpringMVC.TestAction"
>
79
<
property
name
="formView"
value
="testView"
></
property
>
80
<
property
name
="successView"
value
="testView"
></
property
>
81
</
bean
>
82
83
<
bean
id
="login"
class
="com.passyt.web.SpringMVC.LoginAction"
>
84
<
property
name
="passytFacde"
ref
="passyt"
/>
85
<
property
name
="formView"
value
="loginForm"
/>
86
<
property
name
="successView"
value
="loginRedirect"
/>
87
<
property
name
="failView"
value
="failRedirect"
/>
88
<
property
name
="validator"
ref
="loginValidator"
/>
89
</
bean
>
90
91
<
bean
id
="loginValidator"
class
="com.passyt.model.logic.Validator.LoginValidator"
/>
92
93
<
bean
id
="addEmployeeLevel"
class
="com.passyt.web.SpringMVC.AddEmployeeLevelAction"
>
94
<
property
name
="passytFacde"
ref
="passyt"
></
property
>
95
<
property
name
="successView"
value
="successRedirect"
></
property
>
96
<
property
name
="failView"
value
="failRedirect"
/>
97
<
property
name
="formView"
value
="addEmployeeLevelForm"
></
property
>
98
</
bean
>
99
</
beans
>
100
101
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
第三步:properties:
views.properties
1
failRedirect.(class)
=
org.springframework.web.servlet.view.JstlView
2
failRedirect.url
=
/WEB-INF/jsp/error.jsp
3
4
successRedirect.(class)
=
org.springframework.web.servlet.view.JstlView
5
successRedirect.url
=
/WEB-INF/jsp/success.jsp
6
7
testView.(class)
=
org.springframework.web.servlet.view.JstlView
8
testView.url
=
/WEB-INF/jsp/testAction.jsp
9
10
loginForm.(class)
=
org.springframework.web.servlet.view.JstlView
11
loginForm.url
=
/WEB-INF/jsp/login.jsp
12
13
loginRedirect.(class)
=
org.springframework.web.servlet.view.JstlView
14
loginRedirect.url
=
/WEB-INF/jsp/index.jsp
15
16
topView.(class)
=
org.springframework.web.servlet.view.JstlView
17
topView.url
=
/WEB-INF/jsp/top.jsp
18
19
mainView.(class)
=
org.springframework.web.servlet.view.JstlView
20
mainView.url
=
/WEB-INF/jsp/main.jsp
21
22
mbotView.(class)
=
org.springframework.web.servlet.view.JstlView
23
mbotView.url
=
/WEB-INF/jsp/mbot.jsp
24
25
addEmployeeLevelForm.(class)
=
org.springframework.web.servlet.view.JstlView
26
addEmployeeLevelForm.url
=
/WEB-INF/jsp/addEmployeeLevel.jsp
27
28
listOfEmployeeLevelView.(class)
=
org.springframework.web.servlet.view.JstlView
29
listOfEmployeeLevelView.url
=
/WEB-INF/jsp/listOfEmployeeLevel.jsp
30
31
dataAccessFailure.(class)
=
org.springframework.web.servlet.view.JstlView
32
dataAccessFailure.url
=
/WEB-INF/jsp/dataAccessFailure.jsp
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
第四步:java pojo:
model:pojo
dao:interface
hibernateDao :extendes HibernateDaoSupport implements dao
facade:暴露所有的dao中的方法
imlpemention:合成所有的hibernateDao,并implements facade
第四步:完成jsp和对应的action并配置到springMVC-servlet.xml中