新手学习遇见问题,请教大家SSH报No bean named 'customerService' is defined!分数不是问题有要求再追加100

tkinjava 2009-11-06 02:22:59
报错如下:
javax.servlet.ServletException: No bean named 'customerService' is defined
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'customerService' is defined
org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:387)
org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:971)
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:246)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:880)
com.test.struts.action.LoginAction.execute(LoginAction.java:48)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)



附代码:

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.5" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/WEB-INF/spring/applicationContext-*.xml</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

</web-app>




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="org.apache.struts.action.DynaActionForm">
<form-property name="password" type="java.lang.String" />
<form-property name="user" type="java.lang.String" />
</form-bean>
</form-beans>
<global-exceptions />
<global-forwards />

<action-mappings >
<action
attribute="loginForm"
input="/login.jsp"
name="loginForm"
path="/login"
scope="request"
type="com.test.struts.action.LoginAction">
<set-property property="cancellable" value="true" />
</action>

</action-mappings>

<message-resources parameter="com.test.struts.ApplicationResources" />
</struts-config>




applicationContext-hibernate.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-2.5.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:@localhost:1521:test">
</property>
<property name="username" value="test"></property>
<property name="password" value="test"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/test/hibernate/entity/Customer.hbm.xml</value>
</list>
</property>
</bean>

<bean id="CustomerDAO" class="com.test.dao.impl.CustomerDAOImpl">
<property name="sessionFactory" ref="sessionFactory" />
</bean>


</beans>



applicationContext-spring.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-2.5.xsd">

<bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
</bean>

<bean id="customerService" parent="txProxyTemplate" lazy-init="default" autowire="default" dependency-check="default">
<property name="target">
<bean class="com.test.service.impl.CustomerServiceImpl" lazy-init="default" autowire="default" dependency-check="default">
<property name="customerDAO">
<ref bean="CustomerDAO" />
</property>
</bean>
</property>
</bean>

</beans>



CustomerDAO

package com.test.dao;

import com.test.hibernate.entity.Customer;

public interface CustomerDAO {


public void save(Customer cus);

public void delete(Integer id);

public void update(Integer id);

public Customer getCustomerById(Integer id);

public Customer getCustomerByLoginId(String loginId);
}




CustomerDAOImpl

package com.test.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.test.dao.CustomerDAO;
import com.test.hibernate.entity.Customer;

public class CustomerDAOImpl extends HibernateDaoSupport implements CustomerDAO {

public void delete(Integer id) {
// TODO Auto-generated method stub
this.getHibernateTemplate().delete(this.getCustomerById(id));
}

public void save(Customer cus) {
// TODO Auto-generated method stub
this.getHibernateTemplate().save(cus);
}


public void update(Integer id) {
// TODO Auto-generated method stub
this.getHibernateTemplate().update(this.getCustomerById(id));
}

public Customer getCustomerById(Integer id) {
// TODO Auto-generated method stub
return (Customer) this.getHibernateTemplate().get(Customer.class, id);
}

public Customer getCustomerByLoginId(String loginId) {
// TODO Auto-generated method stub
String hql="from Customer c where c.loginId = ?";
List <Customer> list=this.getHibernateTemplate().find(hql);
Customer cus = list.get(0);
return cus;
}


}

...全文
2679 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
taizhoufox 2010-03-30
  • 打赏
  • 举报
回复
mark..
hpym365 2009-11-07
  • 打赏
  • 举报
回复
1、删除重复的包
2、检查web.xml配置文件 加上着句
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
tkinjava 2009-11-06
  • 打赏
  • 举报
回复
没解决继续求助!!
97095639 2009-11-06
  • 打赏
  • 举报
回复
customerService 没被spring管理
guodong66 2009-11-06
  • 打赏
  • 举报
回复
配置的Bean没有找到,注入有问题吧。内容太多了 只是根据错误信息提出个人看法。
  • 打赏
  • 举报
回复
请问你的private CustomerDAO dao的set()方法了?
Customersrvice 的set()方法了?

Spring通过反射的方式拿实例,你不提供set()方法能拿到customerService ?
APOLLO_TS 2009-11-06
  • 打赏
  • 举报
回复
asm 相关包冲突也出这种错误,要没有版本依赖的那个jar
zealVampire 2009-11-06
  • 打赏
  • 举报
回复
BTW, 你可以顺便debug或打印下ApplicationContext 所有的bean信息, 估计是没东西里面
zealVampire 2009-11-06
  • 打赏
  • 举报
回复
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/WEB-INF/spring/applicationContext-*.xml</param-value>
</context-param>
<param-value>这个可能有问题 换成 /WEB-INF/xxxxxx
tkinjava 2009-11-06
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 sangshusen_1988 的回复:]
<context-param>
    <param-name>contextConfigLocation </param-name>
    <param-value>/WEB-INF/spring/applicationContext-*.xml </param-value>
  </context-param>
直接这样写就成了吧,你那样写是不是去WEB-INF下去查找配置文件?

[/Quote]

朋友现在是可以跑了 但是启动报错 能告诉我下联系方式加你下给我看看好吗
tkinjava 2009-11-06
  • 打赏
  • 举报
回复
目前已经可以正常读取配置文件了 但是报错

[code=tomcat]
2009-11-6 20:50:13 org.apache.coyote.http11.Http11Protocol init
信息: Initializing Coyote HTTP/1.1 on http-8080
2009-11-6 20:50:13 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 579 ms
2009-11-6 20:50:13 org.apache.catalina.core.StandardService start
信息: Starting service Catalina
2009-11-6 20:50:13 org.apache.catalina.core.StandardEngine start
信息: Starting Servlet Engine: Apache Tomcat/5.0.30
2009-11-6 20:50:13 org.apache.catalina.core.StandardHost start
信息: XML validation disabled
2009-11-6 20:50:13 org.apache.catalina.core.StandardHost getDeployer
信息: Create Host deployer for direct deployment ( non-jmx )
2009-11-6 20:50:13 org.apache.catalina.core.StandardHostDeployer install
信息: Processing Context configuration file URL file:D:\server\Tomcat 5.0\conf\Catalina\localhost\admin.xml
2009-11-6 20:50:14 org.apache.catalina.core.StandardHostDeployer install
信息: Processing Context configuration file URL file:D:\server\Tomcat 5.0\conf\Catalina\localhost\balancer.xml
2009-11-6 20:50:14 org.apache.catalina.core.StandardHostDeployer install
信息: Processing Context configuration file URL file:D:\server\Tomcat 5.0\conf\Catalina\localhost\manager.xml
2009-11-6 20:50:14 org.apache.catalina.core.StandardHostDeployer install
信息: Installing web application at context path /jsp-examples from URL file:D:\server\Tomcat 5.0\webapps\jsp-examples
2009-11-6 20:50:14 org.apache.catalina.core.StandardHostDeployer install
信息: Installing web application at context path /servlets-examples from URL file:D:\server\Tomcat 5.0\webapps\servlets-examples
2009-11-6 20:50:14 org.apache.catalina.core.StandardHostDeployer install
信息: Installing web application at context path /test1106 from URL file:D:\server\Tomcat 5.0\webapps\test1106
2009-11-6 20:50:14 org.apache.catalina.loader.WebappClassLoader validateJarFile
信息: validateJarFile(D:\server\Tomcat 5.0\webapps\test1106\WEB-INF\lib\javaee.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.ConvertUtils).
log4j:WARN Please initialize the log4j system properly.
2009-11-6 20:50:15 org.apache.catalina.core.StandardContext listenerStart
严重: Skipped installing application listeners due to previous error(s)2009-11-6 20:50:15 org.apache.catalina.core.StandardContext start
严重: Error listenerStart2009-11-6 20:50:15 org.apache.catalina.core.StandardContext start
严重: Context startup failed due to previous errors2009-11-6 20:50:15 org.apache.catalina.core.StandardHostDeployer install
信息: Installing web application at context path /tomcat-docs from URL file:D:\server\Tomcat 5.0\webapps\tomcat-docs
2009-11-6 20:50:15 org.apache.catalina.core.StandardHostDeployer install
信息: Installing web application at context path /webdav from URL file:D:\server\Tomcat 5.0\webapps\webdav
2009-11-6 20:50:15 org.apache.coyote.http11.Http11Protocol start
信息: Starting Coyote HTTP/1.1 on http-8080
2009-11-6 20:50:15 org.apache.jk.common.ChannelSocket init
信息: JK2: ajp13 listening on /0.0.0.0:8009
2009-11-6 20:50:15 org.apache.jk.server.JkMain start
信息: Jk running ID=0 time=0/31 config=D:\server\Tomcat 5.0\conf\jk2.properties
2009-11-6 20:50:15 org.apache.catalina.startup.Catalina start
信息: Server startup in 2218 ms

[/code]
JavaAlpha 2009-11-06
  • 打赏
  • 举报
回复
配置文件没有找到 需要的类
sangshusen_1988 2009-11-06
  • 打赏
  • 举报
回复
<context-param>
<param-name>contextConfigLocation </param-name>
<param-value>/WEB-INF/spring/applicationContext-*.xml </param-value>
</context-param>
直接这样写就成了吧,你那样写是不是去WEB-INF下去查找配置文件?
欢天xi地 2009-11-06
  • 打赏
  • 举报
回复
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/WEB-INF/spring/applicationContext-*.xml</param-value>
</context-param>

貌似不是这样写的
beiouwolf 2009-11-06
  • 打赏
  • 举报
回复
applicationContext.xml那??
你不是从标准路径读的?
我也没看到你的配置文件有import
你怎么读配置的
shengchuang 2009-11-06
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 drykilllogic 的回复:]
customerService没有指定class吧?所以Spring会不认识
XML code<beanid="customerService" parent="txProxyTemplate" lazy-init="default" autowire="default" dependency-check="default"><propertyname="target"><beanclass="com.test.service.impl.CustomerServiceImpl" lazy-init="default" autowire="default" dependency-check="default"><propertyname="customerDAO"><refbean="CustomerDAO"/></property></bean></property></bean>
[/Quote]
他用的是事务模板 有这个parent="txProxyTemplate"就行了。
shengchuang 2009-11-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 mawenwu281107072139 的回复:]
请问你的private CustomerDAO dao的set()方法了?
Customersrvice 的set()方法了?

Spring通过反射的方式拿实例,你不提供set()方法能拿到customerService ?
[/Quote]

并且把属性dao 该为customerDao 再提供去set()方法,就可以了
tkinjava 2009-11-06
  • 打赏
  • 举报
回复

CustomerService

package com.test.service;

import com.test.hibernate.entity.Customer;

public interface CustomerService {

public boolean checkLogin(String loginId,String pass);

public void addUser(Customer user);

public Customer getCustomer(Integer id);

}



CustomerServiceImpl

package com.test.service.impl;

import com.test.dao.CustomerDAO;
import com.test.hibernate.entity.Customer;
import com.test.service.CustomerService;

public class CustomerServiceImpl implements CustomerService {

private CustomerDAO dao;

public void addUser(Customer user) {
// TODO Auto-generated method stub
dao.save(user);
}

public boolean checkLogin(String loginId, String pass) {
// TODO Auto-generated method stub
Customer cus=dao.getCustomerByLoginId(loginId);

if(cus!=null && cus.getPassword().equals(pass))
return true;

return false;
}

public Customer getCustomer(Integer id) {
// TODO Auto-generated method stub
return dao.getCustomerById(id);
}

}



Customer

package com.test.hibernate.entity;

import java.math.BigDecimal;

/**
* Customer entity. @author MyEclipse Persistence Tools
*/

public class Customer implements java.io.Serializable {

// Fields

/**
*
*/
private static final long serialVersionUID = 1L;
private String loginid;
private BigDecimal id;
private String password;
private String privilege;
private String status;

// Constructors

/** default constructor */
public Customer() {
}

/** full constructor */
public Customer(BigDecimal id, String password, String privilege,
String status) {
this.id = id;
this.password = password;
this.privilege = privilege;
this.status = status;
}

// Property accessors

public String getLoginid() {
return this.loginid;
}

public void setLoginid(String loginid) {
this.loginid = loginid;
}

public BigDecimal getId() {
return this.id;
}

public void setId(BigDecimal id) {
this.id = id;
}

public String getPassword() {
return this.password;
}

public void setPassword(String password) {
this.password = password;
}

public String getPrivilege() {
return this.privilege;
}

public void setPrivilege(String privilege) {
this.privilege = privilege;
}

public String getStatus() {
return this.status;
}

public void setStatus(String status) {
this.status = status;
}

}



Customer.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.test.hibernate.entity.Customer" table="CUSTOMER" schema="HP">
<id name="loginid" type="string">
<column name="LOGINID" length="10" />
<generator class="identity"></generator>
</id>
<property name="id" type="big_decimal">
<column name="ID" precision="22" scale="0" />
</property>
<property name="password" type="string">
<column name="PASSWORD" length="10" />
</property>
<property name="privilege" type="string">
<column name="PRIVILEGE" length="10" />
</property>
<property name="status" type="string">
<column name="STATUS" length="10" />
</property>
</class>
</hibernate-mapping>



LoginAction

/*
* Generated by MyEclipse Struts
* Template path: templates/java/JavaClass.vtl
*/
package com.test.struts.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.apache.struts.action.DynaActionForm;
import org.apache.struts.actions.DispatchAction;
import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.test.service.CustomerService;

/**
* MyEclipse Struts
* Creation date: 11-05-2009
*
* XDoclet definition:
* @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request" validate="true"
*/
public class LoginAction extends DispatchAction {
/*
* Generated Methods
*/

/**
* Method execute
* @param mapping
* @param form
* @param request
* @param response
* @return ActionForward
*/
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
DynaActionForm loginForm = (DynaActionForm) form;// TODO Auto-generated method stub
String loginId = loginForm.getString("user");
String pass = loginForm.getString("password");


ApplicationContext ctx =
WebApplicationContextUtils.getRequiredWebApplicationContext(servlet.getServletContext());
CustomerService svc = (CustomerService) ctx.getBean("customerService");
boolean login = svc.checkLogin(loginId, pass);


System.out.println(login==true?"true":"false");

return null;
}
}



login.jsp

<%@ page language="java" pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>

<html>
<head>
<title>JSP for DynaActionForm form</title>
</head>
<body>
<html:form action="/login">
password : <html:password property="password"/><html:errors property="password"/><br/>
user : <html:text property="user"/><html:errors property="user"/><br/>
<html:submit/><html:cancel/>
</html:form>
</body>
</html>



附工程结构图



希望有朋友可以帮帮我 我的Q:949246452 先谢谢大家了!
ABAP1314 2009-11-06
  • 打赏
  • 举报
回复
你写的 这个 流程 思想 很有问题啊 建议贯通下
DryKillLogic 2009-11-06
  • 打赏
  • 举报
回复
customerService没有指定class吧?所以Spring会不认识

<bean id="customerService" parent="txProxyTemplate" lazy-init="default" autowire="default" dependency-check="default">
<property name="target">
<bean class="com.test.service.impl.CustomerServiceImpl" lazy-init="default" autowire="default" dependency-check="default">
<property name="customerDAO">
<ref bean="CustomerDAO" />
</property>
</bean>
</property>
</bean>
加载更多回复(5)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧