Struts.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="globalResource" />

<package name="TestSSH" extends="json-default">
<interceptors> <!-- interceptors拦截器 -->
<interceptor name="authorization"
class="interceptor.AuthorizationInterceptor" />
<interceptor-stack name="myStack">
<interceptor-ref name="authorization">
<param name="ignoreActions">
validate_code,register.*,.*login.* 
</param> 
</interceptor-ref>
<interceptor-ref name="defaultStack" />
</interceptor-stack>
</interceptors>

<default-interceptor-ref name="myStack" />
<global-results>
<result name="success">/WEB-INF/jsp/result_json.jsp</result>
<result name="error">/WEB-INF/jsp/result_json.jsp</result>
<result name="login" type="redirectAction">login_page</result>
</global-results>

<!-- LoginAction类的配置 -->
<action name="login" class="action.LoginAction">
<result name="success">main_page.action</result>
<result name="input">/WEB-INF/jsp/login.jsp</result>
</action>
<action name="*_jsp">
<result>/META-INF/jsp/{1}.jsp</result>
</action>
<!-- RegisterAction类的配置 -->
<action name="register" class="action.RegisterAction">
<result name="success">/WEB-INF/jsp/result.jsp</result>
<result name="input">/WEB-INF/jsp/register.jsp</result>
</action>

<!-- CreateDirAction配置文件 -->
<action name="crateDir" class="action.CreateDirAction">
<result name="success">/WEB-INF/jsp/create_dir_result.jsp</result>
</action>

<!-- UploadAction配置文件 -->
<action name="upload" class="action.UploadAction">
<result name="success">/WEB-INF/jsp/upload_success.jsp</result>
</action>

<!-- DownloadFileAction配置文件 -->
<action name="downloadFile" class="action.DownloadFileAction"></action>

<!-- DownloadMoreFileAction配置文件 -->
<action name="downloadMoreFile" class="action.DownloadMoreFileAction"></action>


</package>

</struts>    
applicationContext.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"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 指定hibernate的配置文件 -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation"
value="classpath:hibernate.cfg.xml">
</property>
</bean>
<!-- 装配Hibernate对象 -->
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<!-- 装配事务管理对象 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref bean="sessionFactory"/>
</property>
</bean>
<!-- 装配事务拦截器 -->
<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager"> <!-- 为transactionManager指定事务管理对象 -->
<ref bean="transactionManager"/>
</property>
<property name="transactionAttributes"> <!-- 设置事务属性 -->
<props>
<prop key="get*">PROPAGATION_REQURID, readOnly</prop>
<prop key="getDirInfo">PROPAGATION_REQUIRED</prop>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>

<!-- 通过Bean名自动代理数据访问层对象 -->
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<!-- 指定需要代码类的实现的接口 -->
<property name="beanNames">
<list>
<value>useDAO</value>
<value>directoryDAO</value>
<value>fileDAO</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
<!-- 下面的代码装配数据库访问层 -->
<!-- 装配UserDAOImpl类 -->
<bean id="userDao" class="dao.UserDAOImpl">
<constructor-arg>
<ref bean="hibernateTemplate"/>
</constructor-arg>
</bean>
<!-- 装配DirectoryDAOImpl类 -->
<bean id="directoryDAO" class="dao.DirectoryDAOImpl">
<constructor-arg>
<ref bean="hibernateTemplate"/>
</constructor-arg>
</bean>
<!-- 装配FileDAOImpl类 -->
<bean id="fileDAO" class="dao.FileDAOImpl">
<constructor-arg>
<ref bean="hibernateTemplate"/>
</constructor-arg>
</bean>
<!-- 下面的代码装配业务逻辑访问层 -->
<!-- 装配UserServiceImpl类 -->
<bean id="userService" class="service.UserServiceImpl">
<constructor-arg>
<ref bean="userDAO"/>
</constructor-arg>
</bean>
<!-- 装配DirectoryDAOImpl类 -->
<bean id="directoryService" class="service.DirectoryServiceImpl">
<constructor-arg>
<ref bean="directoryDAO"/>
</constructor-arg>
<constructor-arg>
<ref bean="fileDAO"/>
</constructor-arg>
</bean>
<!-- 装配FileServiceImpl类 -->
<bean id="fileService" class="service.FileServiceImpl">
<constructor-arg>
<ref bean="fileDAO"/>
</constructor-arg>
</bean>
<!-- 装配ServiceManage类 -->
<bean id="serviceManage" class="service.ServiceManage">
<property name="userService"> <!-- 装配userService属性 -->
<ref bean="userService"/>
</property>
<property name="directoryService"> <!-- 装配directoryService属性 -->
<ref bean="directoryService"/>
</property>
<property name="fileService"> <!-- 装配fileService属性 -->
<ref bean="fileService"/>
</property>
</bean>

<!-- 指定外部的资源文件,在该文件中配置网络硬盘的根目录 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location">
<value>WEB-INF\TestSSH.properties</value>
</property>
</bean>
<bean id="userInfo" class="common.UserInfo" scope="prototype">
<property name="root" value="${TestSSH.root"></property>
</bean>
</beans>

解决方案 »

  1.   

    启动Tomcat6.0出错
    错误提示
    2012-1-13 9:35:05 org.apache.catalina.core.StandardContext filterStart
    严重: Exception starting filter struts2
    Class: com.opensymphony.xwork2.spring.SpringObjectFactory
    File: SpringObjectFactory.java
    Method: getClassInstance
    Line: 209 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:209:-1
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:431)
    at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:69)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:295)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4038)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4692)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
    at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041)
    at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1061)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:701)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:585)
    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:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
    Caused by: java.lang.NullPointerException
    at com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:209)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyResultType(XmlConfigurationProvider.java:519)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addResultTypes(XmlConfigurationProvider.java:490)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:446)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:264)
    at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
    at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:193)
    at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
    at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:374)
    at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:418)
    ... 29 more
    2012-1-13 9:35:05 org.apache.catalina.core.StandardContext start
    严重: Error filterStart
    2012-1-13 9:35:05 org.apache.catalina.core.StandardContext start
    严重: Context [/TestSSH] startup failed due to previous errors
    2012-1-13 9:35:05 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
    严重: The web application [/TestSSH] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@f804ee]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@10babe8]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
    2012-1-13 9:35:05 org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap
    严重: The web application [/TestSSH] created a ThreadLocal with key of type [com.opensymphony.xwork2.inject.ContainerImpl$10] (value [com.opensymphony.xwork2.inject.ContainerImpl$10@143454c]) and a value of type [java.lang.Object[]] (value [[Ljava.lang.Object;@17ab58a]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak.
    2012-1-13 9:35:05 org.apache.catalina.startup.HostConfig deployDirectory
    我包都有引入
      

  2.   

    java.lang.NullPointerException空指针异常?
      

  3.   

    Line: 209 - com/opensymphony/xwork2/spring/SpringObjectFactory.java:209:-1   这209行是什么
      

  4.   

    还有 我觉得sessionfactory应该是要ref到database的吧  我在spring里怎么没见到连接数据库?
      

  5.   

    你在web.xml中配制 监听器了没有呢?
      

  6.   

    好像没有交给spring管理
    <constant name="struts.objectFactory" value="spring"/>
      

  7.   


    <constant name="struts.objectFactory" value="spring"></constant>在struts.xml最上面加这个看看,我也是初学者, 不是很确定, 
    但是从堆栈信息可以看出, 程序已经进入到struts(struts是一个过滤器)了,而且在struts2里出问题了, 根据错误信息似乎因为上面那段代码缺少吧? 试试看吧
      

  8.   

    hibernate 和 spring  我都还没有学  但是看上面提示错误:Java code
    2012-1-13 9:35:05 org.apache.catalina.core.StandardContext filterStart
    严重: Exception starting filter struts2
    Class: com.opensymphony.xwork2.spring.SpringObjectFactory应该是  web.xml里面确实filter拦截器 来过滤
      

  9.   

    <bean id="userInfo" class="common.UserInfo" scope="prototype">
            <property name="root" value="${TestSSH.root"></property>
        </bean>
    value 那少个大括号吧?
      

  10.   

    web.xml
    里面配置没有?