我在网上下到一个一个Spring + Hibernate + Struts 整合的例子(作者:晓锋):代码如下
1. struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
<data-sources />
<form-beans>
<form-bean name="loginForm"
type="com.lxf.struts.form.LoginForm" /> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings>
<action attribute="loginForm" input="/login.jsp"
name="loginForm" path="/login" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy" >
<forward name="success" path="/success.jsp" />
</action>
</action-mappings> <message-resources parameter="com.lxf.struts.msg" />
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="WEB-INF/classes/config/ctx.xml" />
</plug-in>
</struts-config>2. :
包:com.lxf.struts
文件名:msg.properties
内容:
# Resources for parameter 'com.lxf.struts.msg'
# Project SSHDemo
login.name=UserName
login.passwd=Password(以下均为Java文件)
3.
包:com.lxf.struts.action
文件名:LoginAction.java
内容:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.lxf.struts.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.SessionFactory;import com.lxf.struts.form.LoginForm;import dao.UserDAO;/**
* MyEclipse Struts Creation date: 09-14-2007
*
* XDoclet definition:
*
* @struts.action path="/login" name="loginForm" input="/login.jsp"
* scope="request" validate="true"
*/
public class LoginAction extends Action {
/*
* Generated Methods
*/ /**
* Method execute
*
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/ private UserDAO udao = null; public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method
// stub
System.out.println("000000000000000000"); ////////////////////////
boolean a = udao.save(loginForm);
System.out.println(a);
return mapping.findForward("success");
} public void setUdao(UserDAO udao) {
this.udao = udao;
}
}
4.
包:com.lxf.struts.Form
文件名:LoginForm.java
内容:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.lxf.struts.form;import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;/**
* MyEclipse Struts Creation date: 09-14-2007
*
* XDoclet definition:
*
* @struts.form name="loginForm"
*/
public class LoginForm extends ActionForm {
/*
* Generated fields
*/
private Integer id; /** username property */
private String username; /** password property */
private String password; /*
* Generated Methods
*/ /**
* Method validate
*
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
} /**
* Method reset
*
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
} /**
* Returns the username.
*
* @return String
*/
public String getUsername() {
return username;
} /**
* Set the username.
*
* @param username
* The username to set
*/
public void setUsername(String username) {
this.username = username;
} /**
* Returns the password.
*
* @return String
*/
public String getPassword() {
return password;
} /**
* Set the password.
*
* @param password
* The password to set
*/
public void setPassword(String password) {
this.password = password;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
}
}5.
包:dao
文件名:UserDAO.java
内容:
package dao;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;import com.lxf.struts.form.LoginForm;public class UserDAO {
private SessionFactory sf = null; private Session session = null; public boolean save(LoginForm user) {
boolean flag = false;
try {
session = sf.openSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
session.close();
System.out.println("1111111111111111111111111"); ////////////////////////
} catch (Exception ex) {
ex.printStackTrace();
}
return flag;
} public void setSf(SessionFactory sf) {
this.sf = sf;
}
}
7.
包:config
文件名:Users.hbm.xml
内容:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.lxf.struts.form.LoginForm" table="users" catalog="test">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="identity" />
</id>
<property name="username" type="java.lang.String">
<column name="NAME" length="20" />
</property>
<property name="password" type="java.lang.String">
<column name="PWD" length="20" />
</property>
</class>
</hibernate-mapping>8.
包:config
文件名:ctx.xml
内容:
<?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 name="/login" class="com.lxf.struts.action.LoginAction">
<property name="udao">
<ref bean="udao" />
</property>
</bean> <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
</property>
<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433/spring"></property>
<property name="username" value="sql"></property>
<property name="password" value="sql"></property>
</bean>
<bean id="sf"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="ds" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>config/Users.hbm.xml</value>
</list>
</property>
</bean> <bean id="udao" class="dao.UserDAO">
<property name="sf">
<ref local="sf" />
</property>
</bean>
</beans>
在使用该例子时:
引入包没问题,我只把原来的MySql改称了SQLServer的配置,(也就是:ctx.xml文件),结果就出错了。
使用时候报错:“Servlet action is not available”!!!!!!!!因为刚接触Spring,不知道他如何用XML文件将三种技术整合的, 还望高人指教!!!!
1. struts-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
<data-sources />
<form-beans>
<form-bean name="loginForm"
type="com.lxf.struts.form.LoginForm" /> </form-beans> <global-exceptions />
<global-forwards />
<action-mappings>
<action attribute="loginForm" input="/login.jsp"
name="loginForm" path="/login" scope="request"
type="org.springframework.web.struts.DelegatingActionProxy" >
<forward name="success" path="/success.jsp" />
</action>
</action-mappings> <message-resources parameter="com.lxf.struts.msg" />
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="WEB-INF/classes/config/ctx.xml" />
</plug-in>
</struts-config>2. :
包:com.lxf.struts
文件名:msg.properties
内容:
# Resources for parameter 'com.lxf.struts.msg'
# Project SSHDemo
login.name=UserName
login.passwd=Password(以下均为Java文件)
3.
包:com.lxf.struts.action
文件名:LoginAction.java
内容:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.lxf.struts.action;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.hibernate.SessionFactory;import com.lxf.struts.form.LoginForm;import dao.UserDAO;/**
* MyEclipse Struts Creation date: 09-14-2007
*
* XDoclet definition:
*
* @struts.action path="/login" name="loginForm" input="/login.jsp"
* scope="request" validate="true"
*/
public class LoginAction extends Action {
/*
* Generated Methods
*/ /**
* Method execute
*
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/ private UserDAO udao = null; public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method
// stub
System.out.println("000000000000000000"); ////////////////////////
boolean a = udao.save(loginForm);
System.out.println(a);
return mapping.findForward("success");
} public void setUdao(UserDAO udao) {
this.udao = udao;
}
}
4.
包:com.lxf.struts.Form
文件名:LoginForm.java
内容:
/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.lxf.struts.form;import javax.servlet.http.HttpServletRequest;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;/**
* MyEclipse Struts Creation date: 09-14-2007
*
* XDoclet definition:
*
* @struts.form name="loginForm"
*/
public class LoginForm extends ActionForm {
/*
* Generated fields
*/
private Integer id; /** username property */
private String username; /** password property */
private String password; /*
* Generated Methods
*/ /**
* Method validate
*
* @param mapping
* @param request
* @return ActionErrors
*/
public ActionErrors validate(ActionMapping mapping,
HttpServletRequest request) {
// TODO Auto-generated method stub
return null;
} /**
* Method reset
*
* @param mapping
* @param request
*/
public void reset(ActionMapping mapping, HttpServletRequest request) {
// TODO Auto-generated method stub
} /**
* Returns the username.
*
* @return String
*/
public String getUsername() {
return username;
} /**
* Set the username.
*
* @param username
* The username to set
*/
public void setUsername(String username) {
this.username = username;
} /**
* Returns the password.
*
* @return String
*/
public String getPassword() {
return password;
} /**
* Set the password.
*
* @param password
* The password to set
*/
public void setPassword(String password) {
this.password = password;
} public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
}
}5.
包:dao
文件名:UserDAO.java
内容:
package dao;import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;import com.lxf.struts.form.LoginForm;public class UserDAO {
private SessionFactory sf = null; private Session session = null; public boolean save(LoginForm user) {
boolean flag = false;
try {
session = sf.openSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
session.close();
System.out.println("1111111111111111111111111"); ////////////////////////
} catch (Exception ex) {
ex.printStackTrace();
}
return flag;
} public void setSf(SessionFactory sf) {
this.sf = sf;
}
}
7.
包:config
文件名:Users.hbm.xml
内容:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.lxf.struts.form.LoginForm" table="users" catalog="test">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="identity" />
</id>
<property name="username" type="java.lang.String">
<column name="NAME" length="20" />
</property>
<property name="password" type="java.lang.String">
<column name="PWD" length="20" />
</property>
</class>
</hibernate-mapping>8.
包:config
文件名:ctx.xml
内容:
<?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 name="/login" class="com.lxf.struts.action.LoginAction">
<property name="udao">
<ref bean="udao" />
</property>
</bean> <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
</property>
<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433/spring"></property>
<property name="username" value="sql"></property>
<property name="password" value="sql"></property>
</bean>
<bean id="sf"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="ds" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>config/Users.hbm.xml</value>
</list>
</property>
</bean> <bean id="udao" class="dao.UserDAO">
<property name="sf">
<ref local="sf" />
</property>
</bean>
</beans>
在使用该例子时:
引入包没问题,我只把原来的MySql改称了SQLServer的配置,(也就是:ctx.xml文件),结果就出错了。
使用时候报错:“Servlet action is not available”!!!!!!!!因为刚接触Spring,不知道他如何用XML文件将三种技术整合的, 还望高人指教!!!!
你的web.xml中的servlet定义有问题
可查看一下几个文件:
web.xml,struts-config.xml,applicationContent.xml(及你自己添加的xml文件)
你的这句话错了,mssql 的url是这样写的吗
<bean name="/login"
class="com.lxf.struts.action.LoginAction ">
<property name="udao ">
<ref bean="udao" />
</property></bean>
你的这句话错了,mssql 的url是这样写的吗
我是用自己的sqlserver包,所以按这个规范写。除了message Servlet action is not available
没有报其他错,感觉不是Struts的错误,而是Spring整合Struts的问题,对吗?所以很郁闷,这里没有写ApplicationContext配置文件,而是在Struts-config中指定了:ctx.xml
问题在哪呢??
ctx.xml 放在 web-inf下面试下
boolean flag = false;
try {
session = sf.openSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
session.close();
System.out.println("1111111111111111111111111"); ////////////////////////
} catch (Exception ex) {
ex.printStackTrace();
}
return flag;
}还有你传过去的是 LoginForm user
那也应该是 new()个啊
内容如下:
2008-03-27 10:14:52 StandardContext[/spring]Initializing WebApplicationContext for Struts ActionServlet 'action', module ''
2008-03-27 10:14:52 StandardContext[/spring]action: null
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '/login' defined in ServletContext resource [/WEB-INF/classes/config/ctx.xml]: Cannot resolve reference to bean 'udao' while setting bean property 'udao'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'udao' defined in ServletContext resource [/WEB-INF/classes/config/ctx.xml]: Cannot resolve reference to bean 'sf' while setting bean property 'sf'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sf' defined in ServletContext resource [/WEB-INF/classes/config/ctx.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.orm.hibernate3.LocalSessionFactoryBean]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/dom4j/DocumentException
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'udao' defined in ServletContext resource [/WEB-INF/classes/config/ctx.xml]: Cannot resolve reference to bean 'sf' while setting bean property 'sf'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sf' defined in ServletContext resource [/WEB-INF/classes/config/ctx.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.orm.hibernate3.LocalSessionFactoryBean]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/dom4j/DocumentException
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sf' defined in ServletContext resource [/WEB-INF/classes/config/ctx.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.orm.hibernate3.LocalSessionFactoryBean]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/dom4j/DocumentException
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.orm.hibernate3.LocalSessionFactoryBean]: Constructor threw exception; nested exception is java.lang.NoClassDefFoundError: org/dom4j/DocumentException
Caused by: java.lang.NoClassDefFoundError: org/dom4j/DocumentException
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:164)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.class$(LocalSessionFactoryBean.java:158)
at org.springframework.orm.hibernate3.LocalSessionFactoryBean.<init>(LocalSessionFactoryBean.java:158)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:494)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:85)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:61)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:759)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:724)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:387)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:261)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:109)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1100)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:862)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:424)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:261)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:109)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1100)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:862)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:424)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
...........2008-03-27 10:14:52 StandardContext[/spring]Marking servlet action as unavailable
2008-03-27 10:14:52 StandardContext[/spring]Servlet /spring threw load() exception
javax.servlet.UnavailableException
.......
.........
.........
2008-03-27 10:14:52 StandardContext[/balancer]Exception starting filter BalancerFilter
java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
......
.......
..........
.2008-03-27 10:14:53 StandardContext[/jsp-examples]ContextListener: contextInitialized()
2008-03-27 10:14:53 StandardContext[/jsp-examples]SessionListener: contextInitialized()
2008-03-27 10:14:53 StandardContext[/servlets-examples]ContextListener: contextInitialized()
2008-03-27 10:14:53 StandardContext[/servlets-examples]SessionListener: contextInitialized()
2008-03-27 10:15:39 StandardWrapperValve[action]: Servlet action is currently unavailable
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName">
<value>org.gjt.mm.mysql.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/spring</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>root</value>
</property>
</bean>
请确定ctx.xml 练数据库这段配置是不是这种格式
WEB-INF没有使用hibernate.cfg.xml,这里用的是Spring 注入:
ctx.xml 内容如下:
<?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="/login" class="com.lxf.struts.action.LoginAction">
<property name="udao">
<ref bean="udao" />
</property>
</bean> <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
</property>
<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433/spring"></property>
<property name="username" value="sql"></property>
<property name="password" value="sql"></property>
</bean>
<bean id="sf"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="ds" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.show_sql">true</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>/config/Users.hbm.xml</value>
</list>
</property>
</bean> <bean id="udao" class="dao.UserDAO">
<property name="sf">
<ref local="sf" />
</property>
</bean>
</beans>struts配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"><struts-config>
<data-sources />
<form-beans>
<form-bean name="loginForm" type="com.lxf.struts.form.LoginForm" />
</form-beans> <global-exceptions />
<global-forwards />
<action-mappings>
<action attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy" >
<forward name="success" path="/success.jsp" />
</action>
</action-mappings> <message-resources parameter="com.lxf.struts.msg" />
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/classes/config/ctx.xml" />
</plug-in>
</struts-config>
2008-03-27 11:14:12 StandardContext[/spring]Initializing WebApplicationContext for Struts ActionServlet 'action', module ''
2008-03-27 11:14:12 StandardContext[/spring]action: null
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 6 in XML document from ServletContext resource [/WEB-INF/classes/config/ctx.xml] is invalid; nested exception is org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '/login' is not a valid value for 'NCName'.
Caused by: org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '/login' is not a valid value for 'NCName'.
at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.processOneAttribute(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.processAttributes(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source)
at org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.DOMParser.parse(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:76)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:351)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:303)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:280)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:131)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:147)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
at org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:92)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:101)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:389)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:324)
at org.springframework.web.struts.ContextLoaderPlugIn.createWebApplicationContext(ContextLoaderPlugIn.java:355)
at org.springframework.web.struts.ContextLoaderPlugIn.initWebApplicationContext(ContextLoaderPlugIn.java:296)
at org.springframework.web.struts.ContextLoaderPlugIn.init(ContextLoaderPlugIn.java:225)
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:869)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1019)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:862)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3991)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4335)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
at org.apache.catalina.core.StandardService.start(StandardService.java:476)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2298)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:284)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:422)2008-03-27 11:14:12 StandardContext[/spring]Marking servlet action as unavailable
2008-03-27 11:14:12 StandardContext[/spring]Servlet /spring threw load() exception
javax.servlet.UnavailableException
at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:880)
at org.apache.struts.action.ActionServlet.init(ActionServlet.java:336)
at javax.servlet.GenericServlet.init(GenericServlet.java:211)
..........
..............
2008-03-27 11:14:12 StandardContext[/balancer]Exception starting filter BalancerFilter
java.lang.NoClassDefFoundError: org/apache/commons/digester/Digester
...........
...........
2008-03-27 11:14:13 StandardContext[/jsp-examples]ContextListener: contextInitialized()
2008-03-27 11:14:13 StandardContext[/jsp-examples]SessionListener: contextInitialized()
2008-03-27 11:14:13 StandardContext[/servlets-examples]ContextListener: contextInitialized()
2008-03-27 11:14:13 StandardContext[/servlets-examples]SessionListener: contextInitialized()