各位高手:
    小弟刚开始学习spring,照着书编的,除了逻辑上改动一下之外,就没什么改动了,但是他一直说我有下面这个错误。严重: Servlet.service() for servlet jsp threw exception
java.lang.IllegalStateException: No WebApplicationContext found: no ContextLoaderListener registered?
at org.springframework.web.servlet.support.RequestContextUtils.getWebApplicationContext(RequestContextUtils.java:84)
at org.springframework.web.servlet.support.RequestContext.initContext(RequestContext.java:216)
at org.springframework.web.servlet.support.JspAwareRequestContext.initContext(JspAwareRequestContext.java:75)
at org.springframework.web.servlet.support.JspAwareRequestContext.<init>(JspAwareRequestContext.java:49)
at org.springframework.web.servlet.tags.RequestContextAwareTag.doStartTag(RequestContextAwareTag.java:74)
at org.apache.jsp.index_jsp._jspService(index_jsp.java:106)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:216)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
at java.lang.Thread.run(Thread.java:619)
之后附上小弟的配置文件在web.xml中<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>sys-rectify</display-name>
  <servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcherServlet-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.jspf</url-pattern>
    </servlet-mapping>
    <jsp-config>
    <taglib>
    <taglib-uri>/spring</taglib-uri>
    <taglib-location>/WEB-INF/spring.tld</taglib-location>
    </taglib>
    </jsp-config>
     <!-- <listener> 
    <listener-class> 
    org.springframework.web.context.ContextLoaderListener </listener-class> 
    </listener>   -->
    
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>在dispatcherServlet-servlet.xml中<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="LoginController.do">LoginController</prop>
</props>
</property>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass">
<value>org.springframework.web.servlet.view.InternalResourceView</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<bean id="LoginController" class="org.login.LoginController">
<property name="commandClass">
<value>org.login.LoginForm</value>
</property>
<property name="validator">
<ref bean="LoginValidator"/>
</property>
<property name="formView">
<value>index</value>
</property>
<property name="successView">
<value>/mainFrame/mainFrame</value>
</property>
</bean>
<bean id="LoginValidator" class="org.login.LoginValidator"/>
</beans>
真是不知道为什么会有上面那个问题  麻烦高手帮帮忙了,小弟的信心被这东西打击到谷底了

解决方案 »

  1.   

    在jsp页面中,我用到了spring:bind
    如下<spring:bind path="command.password">
    密&nbsp;&nbsp;码:
    <input type="password" name="${status.expression}" value="${status.value}" size="14" maxlength="50" style="font-family:arial;font-size:13px;height:20px"/>
    <br>
    <span style="color:red font-size:11px"><c:out value="${status.errorMessage}"></c:out></span>
    </spring:bind>要是我不用<spring:bind path="command.password">的话,就不会出现上述错误了,只要一用,就会有这个错误
      

  2.   


      <context-param>
       <param-name>contextConfigLocation</param-name>
       <param-value>classpath*:applicationContext.xml</param-value>
      </context-param>
      
      <listener>
       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
      </listener>你的spring配置文件配置到web容器里去了么?好像你注释掉了
      

  3.   

    我一直没搞清楚,applicationContext.xml的作用是什么呀?有了dispatcherServlet-servlet.xml,为什么还要applicationContext.xml呢??然后,applicationContext.xml是怎么编写的呀?我不是很清楚这里边应该怎么写呢,麻烦指教一下啦,谢谢
      

  4.   

    ApplicationContext.xml 几乎配置整个项目的80%的部分 , 首先就是dateSource 和 SessionFactory 吧 以前hibernate的工作托管了
      

  5.   

    需要配置ContextLoaderListener简单的说,ContextLoaderListener是负责加载spring的bean初始化applicationContext的
    而DispatcherServlet是用来加载spring的mvc的,如果不用spring mvc而是用struts等mvc框架,那么DispatcherServlet 的配置可以去掉
      

  6.   

    在ssh中用于托管hibernate、sruts中配置吧
      

  7.   

    在web.xml里面  <!-- Spring的ApplicationContext.xml的载入 -->    <listener>       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener>  加上这句,,,如果你的applicationContext.xml没有改名的话,他会在/WEB-INF下找你的这个文件/WEB-INF/applicationContext.xml找不到你启动TOMCAT的时候又会警告..郁闷啊...<!-- Spring ApplicationContext配置文件的路径,可使用通配符,多个路径用,号分隔      此参数用于后面的Spring-Context loader -->    <context-param>       <param-name>contextConfigLocation</param-name>       <param-value>classpath*:spring/*.xml</param-value>    </context-param>这段代码相信大家一看就清楚是啥回事,对就是把spring/下的所有XML文件都加到classpath里面去..