我创建了一web工程, 开始用struts2+spring2配置, 能正常运行及输出, 在界面输入登陆信息后, 也能跳转到相应的页面. 但在我在把hibernate也加入后, 就出现了上述错误, 在网上找了好多方法都不能解决.struts.xml:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
<package name="struts2" extends="struts-default">
<action name="login" class="loginAction" >
<result name="success">/index.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>LoginAction.javapackage com.test.action;import com.test.bean.LoginServiceBean;public class LoginAction
{
private static final long serialVersionUID = 1L;
private String username;
private String password;
private LoginServiceBean loginService;
public String execute() throws Exception
{
boolean result = loginService.validate(username, password);
if (result == true)
{
return "success";
}
else
{
return "input";
}
}
public LoginServiceBean getLoginService()
{
return loginService;
}
public void setLoginService(LoginServiceBean loginService)
{
this.loginService = loginService;
}
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;
}
}
LoginServiceBean.javapackage com.test.bean;public class LoginServiceBean
{
/*
* 我们这只是一个小的例子,不与数据库打交到
* 若有数据库操作,那么在这个LoginService就是操作具体Dao类实现登录的相关操作
*/
public boolean validate(String username, String password) throws Exception
{
boolean flag = false;
if (! "aaa".equals(username))
{
flag = false;
}
else if (! "123".equals(password))
{
flag = false;
//throw new PasswordException("密码不正确");
}
else
{
flag = true;
}
return flag;
}
}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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="DataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@192.168.1.66:1521:orcl">
</property>
<property name="username" value="Gengoo"></property>
<property name="password" value="111111"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="DataSource"></ref>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
</bean> <bean name="loginService" class="com.test.bean.LoginServiceBean"/>
<bean name="loginAction" class="com.test.action.LoginAction">
<property name="loginService">
<ref bean="loginService"/>
</property>
</bean>
</beans>问题是我把web.xml中的
<bean id="DataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@192.168.1.66:1521:orcl">
</property>
<property name="username" value="Gengoo"></property>
<property name="password" value="111111"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="DataSource"></ref>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
</bean>
这段注销掉后, 发布程序能正常运行, 如果不注销, 就会报错
2009-3-10 0:14:22 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2009-3-10 0:14:22 org.apache.catalina.core.StandardContext start
严重: Context [/Test2] startup failed due to previous errors
2009-3-10 0:14:23 org.apache.coyote.http11.Http11BaseProtocol start找了很久没有找到解决办法, 希望大牛们给我看看这倒底是怎么回事
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
<package name="struts2" extends="struts-default">
<action name="login" class="loginAction" >
<result name="success">/index.jsp</result>
<result name="input">/login.jsp</result>
</action>
</package>
</struts>LoginAction.javapackage com.test.action;import com.test.bean.LoginServiceBean;public class LoginAction
{
private static final long serialVersionUID = 1L;
private String username;
private String password;
private LoginServiceBean loginService;
public String execute() throws Exception
{
boolean result = loginService.validate(username, password);
if (result == true)
{
return "success";
}
else
{
return "input";
}
}
public LoginServiceBean getLoginService()
{
return loginService;
}
public void setLoginService(LoginServiceBean loginService)
{
this.loginService = loginService;
}
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;
}
}
LoginServiceBean.javapackage com.test.bean;public class LoginServiceBean
{
/*
* 我们这只是一个小的例子,不与数据库打交到
* 若有数据库操作,那么在这个LoginService就是操作具体Dao类实现登录的相关操作
*/
public boolean validate(String username, String password) throws Exception
{
boolean flag = false;
if (! "aaa".equals(username))
{
flag = false;
}
else if (! "123".equals(password))
{
flag = false;
//throw new PasswordException("密码不正确");
}
else
{
flag = true;
}
return flag;
}
}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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="DataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@192.168.1.66:1521:orcl">
</property>
<property name="username" value="Gengoo"></property>
<property name="password" value="111111"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="DataSource"></ref>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
</bean> <bean name="loginService" class="com.test.bean.LoginServiceBean"/>
<bean name="loginAction" class="com.test.action.LoginAction">
<property name="loginService">
<ref bean="loginService"/>
</property>
</bean>
</beans>问题是我把web.xml中的
<bean id="DataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@192.168.1.66:1521:orcl">
</property>
<property name="username" value="Gengoo"></property>
<property name="password" value="111111"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="DataSource"></ref>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
</bean>
这段注销掉后, 发布程序能正常运行, 如果不注销, 就会报错
2009-3-10 0:14:22 org.apache.catalina.core.StandardContext start
严重: Error listenerStart
2009-3-10 0:14:22 org.apache.catalina.core.StandardContext start
严重: Context [/Test2] startup failed due to previous errors
2009-3-10 0:14:23 org.apache.coyote.http11.Http11BaseProtocol start找了很久没有找到解决办法, 希望大牛们给我看看这倒底是怎么回事
解决方案 »
- Tomcat虚拟目录下编写servlet有问?
- JavaMail本机测试发邮件成功,上传到主机空间后程序运行成功,但收不到邮件了
- 如何使用EL输出报头数据
- 新手问题
- JSP新闻发布系统
- 问一个关于多行文本的简单的问题
- 郁闷,焦急,烦,我在多行的文本框中输入带有“回车符”,“空格符”的新闻内容后保存到mysql数据库,然后在其他的页面查看时却变成了一行
- 请问谁知道这段代码是什么意思?set Recordset1 = Server.CreateObject("ADODB.Recordset")一百分相谢
- 求助:我建的TOMCAT服务器,下显示的JSP都是乱码,必须在IE中手工选择简体中文才可以,请问怎么解决?
- 一个关于复选框的问题。。。
- session.getAttribute()值转换问题
- 有关hibernate 一对多(多为无主键表) 查询,集合没有值的问题
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@192.168.1.66:1521:orcl">
</property>
<property name="username" value="Gengoo"></property>
<property name="password" value="111111"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="DataSource"></ref>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
</bean>这段注销掉后, 发布程序能正常运行, 如果不注销, 就会报错这是spring中数据源跟hibernate等的配置,这些applicationContext.xml的东西怎么能写到web.xml中呢?是LZ发错了还是确实写错地方了,这种错误我觉得不应该吧顺便贴下你的完整web.xml,最好加个代码框
applicationContext.xml是用来管理STRUTS2的里ACTION的 跟他的错误没关系 但你加入HIBERNATE没理由会出错啊 你把主要的问题说说看 大家一起看看
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="oracle.jdbc.driver.OracleDriver">
</property>
<property name="url"
value="jdbc:oracle:thin:@192.168.1.66:1521:orcl">
</property>
<property name="username" value="Gengoo"></property>
<property name="password" value="111111"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="DataSource"></ref>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
</bean>这段代码是applicationContext.xml文件内容, 错写成了web.xml文件.下面是web.xml文件内容:<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name></display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext*.xml</param-value>
</context-param>
<!-- Listeners -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>同时一直很奇怪, 在tomcat/logs/目录下面, 一直都没有日志生成, 不知道是什么原因.
<listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>
</listener> 改成:
<servlet>
<servlet-name>SpringContextServlet</servlet-name>
<servlet-class>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
信息: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: G:\eclipse\bin;G:\Tomcat5.5\bin
2009-3-10 10:00:40 org.apache.coyote.http11.Http11BaseProtocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2009-3-10 10:00:40 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 672 ms
2009-3-10 10:00:40 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2009-3-10 10:00:41 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.5.17
2009-3-10 10:00:41 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
2009-3-10 10:00:41 org.apache.catalina.startup.HostConfig deployWAR
信息: Deploying web application archive sitemesh-example.war
2009-3-10 10:00:41 org.apache.catalina.core.ApplicationContext log
信息: org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]
2009-3-10 10:00:42 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2009-3-10 10:00:42 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()
2009-3-10 10:00:42 org.apache.catalina.core.ApplicationContext log
信息: ContextListener: contextInitialized()
2009-3-10 10:00:42 org.apache.catalina.core.ApplicationContext log
信息: SessionListener: contextInitialized()
2009-3-10 10:00:44 org.apache.catalina.core.StandardContext start
严重: Error filterStart
2009-3-10 10:00:44 org.apache.catalina.core.StandardContext start
严重: Context [/Test2] startup failed due to previous errors
2009-3-10 10:00:44 org.apache.coyote.http11.Http11BaseProtocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2009-3-10 10:00:45 org.apache.jk.common.ChannelSocket init
信息: JK: ajp13 listening on /0.0.0.0:8009
2009-3-10 10:00:45 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/31 config=null
2009-3-10 10:00:45 org.apache.catalina.storeconfig.StoreLoader load
信息: Find registry server-registry.xml at classpath resource
2009-3-10 10:00:45 org.apache.catalina.startup.Catalina start
信息: Server startup in 4500 ms
用log4j打印来的日志信息是:[INFO ] 2009-03-10 10:00:43 Method:com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:140)
Parsing configuration file [struts-default.xml]
.[INFO ] 2009-03-10 10:00:44 Method:com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:140)
Parsing configuration file [struts-plugin.xml]
.[INFO ] 2009-03-10 10:00:44 Method:com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.register(XmlConfigurationProvider.java:140)
Parsing configuration file [struts.xml]
.[WARN ] 2009-03-10 10:00:44 Method:org.apache.struts2.config.Settings.getLocale(Settings.java:143)
Settings: Could not parse struts.locale setting, substituting default VM locale
.[INFO ] 2009-03-10 10:00:44 Method:org.apache.struts2.config.BeanSelectionProvider.register(BeanSelectionProvider.java:185)
Loading global messages from globalmessages
.[INFO ] 2009-03-10 10:00:44 Method:org.apache.struts2.spring.StrutsSpringObjectFactory.<init>(StrutsSpringObjectFactory.java:55)
Initializing Struts-Spring integration...
.[FATAL] 2009-03-10 10:00:44 Method:org.apache.struts2.spring.StrutsSpringObjectFactory.<init>(StrutsSpringObjectFactory.java:67)
********** FATAL ERROR STARTING UP STRUTS-SPRING INTEGRATION **********
Looks like the Spring listener was not configured for your web app!
Nothing will work until WebApplicationContextUtils returns a valid ApplicationContext.
You might need to add the following to web.xml:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
.[ERROR] 2009-03-10 10:00:44 Method:org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3604)
Exception starting filter struts2
.java.lang.NullPointerException
at com.opensymphony.xwork2.spring.SpringObjectFactory.getClassInstance(SpringObjectFactory.java:188)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.verifyResultType(XmlConfigurationProvider.java:479)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addResultTypes(XmlConfigurationProvider.java:450)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addPackage(XmlConfigurationProvider.java:407)
at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadPackages(XmlConfigurationProvider.java:239)
at org.apache.struts2.config.StrutsXmlConfigurationProvider.loadPackages(StrutsXmlConfigurationProvider.java:111)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:152)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:52)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:395)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:452)
at org.apache.struts2.dispatcher.FilterDispatcher.init(FilterDispatcher.java:201)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:223)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:304)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:77)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3600)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4193)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:759)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:739)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:524)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:904)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:867)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1122)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:310)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1021)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1013)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
at org.apache.catalina.core.StandardService.start(StandardService.java:450)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:709)
at org.apache.catalina.startup.Catalina.start(Catalina.java:551)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:294)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:432)
点击"开始"-->"运行"-->"输入netstat -an"查看你的8080端口被占用没