Eclipse
下配置
spring
应用
一.
关于
Spring
的环境配置问题。
需要的包(除了基本
java web
开发环境(如
jdk,tomcat
)之外的):
spring-framework
,
jakarta-struts(
后面有关于
spring
与
struts
结合的部分要用到
).
二.
关于
Spring
的基本配置文件(
我个人感觉,学习开发框架时,在明白了它的设计思想之后,配置文件设置是一个关键,等成功搭建起这个框架之后,在里面编程相信都难不到大家的
)
在建立单纯的
spring
项目时,
web.xml
文件如下:
<?
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
>
<
servlet
>
<
servlet-name
>
spring
</
servlet-name
>
<
servlet-class
>
org.springframework.web.servlet.DispatcherServlet
</
servlet-class
>
<
init-param
>
<
param-name
>
contextConfigLocation
</
param-name
>
<
param-value
>
/WEB-INF/
application.xml
</
param-value
>
</
init-param
>
上面加框的一段是用来指定
spring
配置文件的(可以为任意名,如上),也可以不写,不写时
spring
的配置文件默认名为
: “
<
servlet-name
>
”
名
-servlet.xml
。(如此处的
<
servlet-name
>
的值为
“
spring
”
,
则配置文件名为:
springt-servlet.xml
)
<
load-on-startup
>
1
</
load-on-startup
>
</
servlet
>
<
servlet-mapping
>
<
servlet-name
>
spring
</
servlet-name
>
<
url-pattern
>
*.do
</
url-pattern
>
</
servlet-mapping
>
</
web-app
>
这时候
spring
配置文件(这里假定为
spring-servlet.xml
)如下:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!
DOCTYPE
beans
PUBLIC
"-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd"
>
<!-- - Application context definition for "springapp" DispatcherServlet. -->
<
beans
>
<
bean
id
=
"LoginAction"
class
=
"com.ln.spring.LoginAction"
>
在
bean
中配置有属性(包括
bean
格式的属性)时,
bean
对应的
java
文件内必须要定义一个与
property
的
name
名字一样
的属性值,并且需要有这个属性值的
getter
和
setter
方法。
<
property
name
=
"msg"
>
<
value
>
Hello World
</
value
>
</
property
>
<
property
name
=
"data"
>
<
ref
bean
=
"data1"
/>
当一个
bean
中有格式为
bean
的属性时,用“
<
ref
bean
=
"
bean-name
"
/>
”来指定,在指定
”bean-name”
后还要在下面用
”
<
bean
></
bean
>
”
来指定这个
bean
格式的属性的值
,
此时
”
<
bean
></
bean
>
”
中的
”id”
必须与前面指定的
”bean-name”
一致。
</
property
>
</
bean
>
<
bean
id
=
"data1"
class
=
"com.ln.spring.MyAction"
>
<
property
name
=
"message"
>
<
value
>
liang
</
value
>
</
property
>
</
bean
>
<
bean
id
=
"urlMapping"
class
=
"org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"
>
<
property
name
=
"mappings"
>
<
props
>
<
prop
key
=
"/login.do"
>
LoginAction
</
prop
>
</
props
>
</
property
>
</
bean
>
</
beans
>
而在建立
spring+struts
项目时,
web.xml
文件按照
struts
项目的规格建立,在此不在多说,而在此时
struts-config.xml
如下:
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<!
DOCTYPE
struts-config
PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"
>
<
struts-config
>
<
form-beans
>
<
form-bean
name
=
"loginForm"
type
=
"com.ln.struts.LoginForm"
/>
</
form-beans
>
<
action-mappings
>
<
action
path
=
"/login"
type
=
"org.springframework.web.struts.DelegatingActionProxy"
name
=
"loginForm"
>
<
forward
name
=
"success"
path
=
"/main.jsp"
/>
<
forward
name
=
"failure"
path
=
"/loginfail.jsp"
/>
</
action
>
</
action-mappings
>
<
plug-in
className
=
"org.springframework.web.struts.ContextLoaderPlugIn"
>
<
set-property
property
=
"contextConfigLocation"
value
=
"/WEB-INF/
spring-servlet.xml
"
/>
</
plug-in
>
</
struts-config
>
在这个配置文件中,由于使用
spring
来管理
struts
的
action
所以有两个地方要注意:
1.
Action
的
”type”
指向
spring
里定义的用来处理
action
的类,而不是自己写的
action.
2.
增加了一个
”
<
plug-in
>
</
plug-in
>
“
来指定
spring
配置文件。
此时
spring-servlet.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.ln.struts.LoginAction"
singleton
=
"false"
>
此处的
bean
与
struts-config.xml
中的
action
相对应,
name
与
struts-config.xml
中
action
的
path
一致
<
property
name
=
"msg"
>
<
value
>
Hello World
</
value
>
</
property
>
</
bean
>
</
beans
>
三.
应该注意的小问题:
1.
要把开发中所需要用到的包,
tld
文件相应地放在
WEB-INF
里的
lib
,
tlds
文件夹中。
2.
在需要使用到
struts,spring,jstl
等的标签时,一定要在
web.xml
中
用下面
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
这样的标签先进行声明。
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=245046