已经有很多人写过文章,来介绍和说明这个问题了。
我在学习和使用之后,就也作了一下总结。
第一步:
配置和struts环境
第二步:
载入spring包
第三步:
在struts-config.xml中作spring插件配置,代码如下:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
第四步:
在action中使用spring.
要使用spring,首先就要取得spring的控制权,也就是取得ApplicationContext。
首先,如果我们了解了插件初始化的结果的话,那么我们看:
java.util.Enumeration e = this.getServlet().getServletContext().getAttributeNames();
while(e.hasMoreElements()){
String s = (String)e.nextElement();
System.out.println(s);
}
这一段程序将显示所有的初始化的参数变量,显示如下:
org.apache.catalina.jsp_classpath
org.apache.struts.action.MESSAGE
org.apache.struts.util.PREFIXES
org.springframework.web.struts.ContextLoaderPlugIn.CONTEXT.org.apache.catalina.WELCOME_FILES
org.apache.struts.action.ACTION_SERVLET
org.apache.struts.action.FORWARDS
org.apache.struts.action.REQUEST_PROCESSOR
javax.servlet.context.tempdir
org.apache.struts.action.MAPPINGS
org.apache.struts.action.SERVLET_MAPPING
org.apache.struts.action.FORM_BEANS
org.apache.struts.action.PLUG_INS
org.apache.catalina.resources
org.apache.struts.action.MODULE
蓝色的部分就是spring初始化后的结果,也就是,spring初始化后的结果WebApplicationContext保存在
org.springframework.web.struts.ContextLoaderPlugIn.CONTEXT.
变量里面。那么我们就可以使用如下的方式来取得此对象:
ApplicationContext ctx = (ApplicationContext)this.getServlet().getServletContext().getAttribute("org.springframework.web.struts.ContextLoaderPlugIn.CONTEXT.");
System.out.println("ctx is : " + ctx);
还有一个方法,就是使用spring给我们提供的接口,我们在构建action继承自ActionSuport,那么,我们就可以通过下面的方法来访问:
ApplicationContext ctx = this.getWebApplicationContext();
System.out.println("the application context is : " + ctx);
接下来,我们就可以测试一下,我们的spring.
先创建一个bean:
package org.zy.pro.demo.sd.bean;
public class User {
private String username;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
然后再spring的配置文件里面配置,如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="user" class="org.zy.pro.demo.sd.bean.User">
<property name="username">
<value>everybody</value>
</property>
<property name="password">
<value>everybodypassword</value>
</property>
</bean>
</beans>
好了,调用一下吧:
创建一个action,
package org.zy.pro.demo.sd.action;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.springframework.context.ApplicationContext;
import org.springframework.core.io.FileSystemResourceLoader;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.GenericWebApplicationContext;
import org.springframework.web.context.support.ServletContextResourceLoader;
import org.springframework.web.struts.ActionSupport;
import org.zy.pro.demo.sd.bean.User;
public class Bus extends ActionSupport {
@Override
public ActionForward execute(ActionMapping arg0, ActionForm arg1, HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
// TODO Auto-generated method stub
ApplicationContext ctx = this.getWebApplicationContext();
System.out.println("the application context is : " + ctx);
User user = (User) ctx.getBean("user");
System.out.println("username is : "+user.getUsername());
return super.execute(arg0, arg1, arg2, arg3);
}
}
然后再struts-config.xml文件里面配置action如下:
<?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>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards />
<action-mappings >
<action path="/map" type="org.zy.pro.demo.sd.action.MapAction" />
<action path="/bus" type="org.zy.pro.demo.sd.action.Bus" />
</action-mappings>
<message-resources parameter="org.zy.pro.demo.sd.ApplicationResources" />
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
</struts-config>
好了,发布,测试一下,结果如下:
the application context is : org.springframework.web.context.support.XmlWebAppl
icationContext: display name [WebApplicationContext for namespace 'action-servle
t']; startup date [Thu Jul 05 18:23:56 CST 2007]; root of context hierarchy; con
fig locations [/WEB-INF/applicationContext.xml]
username is : everybody
|----------------------------------------------------------------------------------------|
版权声明 版权所有 @zhyiwww
引用请注明来源 http://www.blogjava.net/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2007-07-05 18:27
zhyiwww 阅读(1153)
评论(0) 编辑 收藏 所属分类:
j2ee