2017-08-12 285 views
-1

我想運行簡單的彈簧crud操作。但得到例外: - 我得到錯誤HTTP狀態500 - Servlet.init()對於servlet Dispatcher在我的瀏覽器中拋出異常。HTTP狀態500 - Servlet.init()異常

log4j:WARN No appenders could be found for logger(org.springframework.web.servlet.dispatcherservlet) 


javax.servlet.ServletException: Servlet.init() for servlet [dispatcher] threw exception 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) 
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) 
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457) 
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:748) 

rootCause: 

java.lang.IllegalArgumentException 
    org.springframework.asm.ClassReader.<init>(Unknown Source) 
    org.springframework.asm.ClassReader.<init>(Unknown Source) 
    org.springframework.asm.ClassReader.<init>(Unknown Source) 
    org.springframework.core.type.classreading.SimpleMetadataReader.<init>(SimpleMetadataReader.java:52) 
    org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:80) 
    org.springframework.core.type.classreading.CachingMetadataReaderFactory.getMetadataReader(CachingMetadataReaderFactory.java:101) 
    org.springframework.core.type.classreading.SimpleMetadataReaderFactory.getMetadataReader(SimpleMetadataReaderFactory.java:76) 
    org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:298) 
    org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300) 
    org.springframework.context.annotation.ConfigurationClassParser.getImports(ConfigurationClassParser.java:300) 
    org.springframework.context.annotation.ConfigurationClassParser.doProcessConfigurationClass(ConfigurationClassParser.java:230) 
    org.springframework.context.annotation.ConfigurationClassParser.processConfigurationClass(ConfigurationClassParser.java:153) 
    org.springframework.context.annotation.ConfigurationClassParser.parse(ConfigurationClassParser.java:130) 
    org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:285) 
    org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:223) 
    org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:630) 
    org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:461) 
    org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:647) 
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:598) 
    org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:661) 
    org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:517) 
    org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:458) 
    org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:138) 
    javax.servlet.GenericServlet.init(GenericServlet.java:158) 
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478) 
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80) 
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650) 
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) 
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:799) 
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) 
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868) 
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1457) 
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 
    java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
    java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    java.lang.Thread.run(Thread.java:748) 

my code : - 





UserController.java 

@Controller 
public class UserController 
{ 

    @Autowired 
    private UserServices userServices; 

    @Autowired 
    private UserValidater userValidater; 

    @RequestMapping("viewuser") 
    public ModelAndView viewUserInfo() 
    { 
     List<UserData> list=userServices.viewUserInfo(); 
     return new ModelAndView("viewuser","userList",list); 
    } 

    @RequestMapping("registeruser") 
    public ModelAndView registerUser(Model model) 
    { 
     model.addAttribute("UserData", new UserData()); 
     return new ModelAndView("registernewuser"); 
    } 

    @RequestMapping(value="registeruserinfo",method=RequestMethod.POST) 
    public ModelAndView registeruserinfo(@ModelAttribute("UserData") UserData userData, BindingResult result) 
    { 
     userValidater.validate(userData, result); 
     if(result.hasErrors()) 
     { 
      return new ModelAndView("registernewuser"); 
     } 

     int n=userServices.registerUser(userData); 
     String msg="Your Registration is fail ! "; 
     if(n>0) 
     { 
      msg="Your Registration is success ! "; 
     } 
     return new ModelAndView("registernewuser","msg",msg); 
    } 

    @RequestMapping("updateuser") 
    public ModelAndView updateUser(Model model) 
    { 
     model.addAttribute("UserData", new UserData()); 
//  List<UserData> list=userServices.viewUserInfo(); 
//  return new ModelAndView("updateuserinfo","userList",list); 
     return new ModelAndView("updateuserinfo"); 
    } 

    @RequestMapping(value="updateuserinfo", method = { RequestMethod.GET, RequestMethod.POST }) 
    public ModelAndView updateUserInfo(@ModelAttribute("UserData") UserData userData, BindingResult result) 
    { 
     userValidater.validate(userData, result); 
     if(result.hasErrors()) 
     { 
      return new ModelAndView("updateuserinfo"); 
     } 
     boolean b=userServices.updateUserInfo(userData); 
     String msg="Updation is fail ! "; 
     if(b==true) 
     { 
      msg="Updation is success ! "; 
     } 

     return new ModelAndView("updateuserinfo","msg",msg); 
    } 

    @RequestMapping("loginpage") 
    public ModelAndView loginPage(Model model) 
    { 
     model.addAttribute("UserData", new UserData()); 
     return new ModelAndView("loginuser"); 
    } 

    @RequestMapping(value="loginuser", method=RequestMethod.POST) 
    public String loginUser(@ModelAttribute("UserData") UserData userData, RedirectAttributes attributes) 
    { 
     userData=userServices.loginUser(userData); 
     String page=""; 
     if(userData==null) 
     { 
      String msg="Login Fail ! "; 
      attributes.addFlashAttribute("msg",msg); 
      page="redirect:loginpage.do"; 
     } 
     else 
     { 
      page="redirect:viewuser.do"; 
     } 
     return page; 
    } 

    @RequestMapping("deleteuserinfo") 
    public String deleteUser(@RequestParam("userId") String userId,UserData userData,RedirectAttributes attributes) 
    { 
     userData.setUserId(Integer.parseInt(userId)); 
     boolean b=userServices.deleteUserInfo(userData); 
     String msg="Data Not Deleted"; 
     if(b==true) 
     { 
      msg="Data Deleted"; 
     } 
     attributes.addFlashAttribute("msg",msg); 
     return "redirect:viewuser.do"; 
    } 




web.xml 






<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <display-name>Archetype Created Web Application</display-name> 

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

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext-dao.xml</param-value> 
    </context-param> 

    <welcome-file-list> 
     <welcome-file>index.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 

</web-app> 





applicationContext-dao.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:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"> 

<context:annotation-config /> 

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> 
<property name="packagesToScan"> 
<list> 
<value>com.really.model</value> 
</list> 
</property> 
<property name="dataSource"><ref bean="dataSource"/></property> 

<property name="hibernateProperties"> 
      <ref bean="hibernateProperties" /> 
     </property> 

</bean> 

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
     <list> 
     <value>classpath:hibernate.properties</value> 
     </list> 
    </property> 
</bean> 


<bean id="messageSource" 
     class="org.springframework.context.support.ResourceBundleMessageSource"> 
     <property name="basenames"> 
      <list> 
       <value>message</value> 
      </list> 
     </property> 
    </bean> 

<!-- creating connection pool --> 
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> 
    <property name="driverClassName"> 
    <value>${connection.driver_class}</value> 
    </property> 

    <property name="url"> 
    <value>${connection.url}</value> 
    </property> 

    <property name="username"> 
    <value>${connection.username}</value> 
    </property> 

    <property name="password"> 
    <value>${connection.password}</value> 
    </property> 
</bean> 

<bean id="hibernateProperties" 
     class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 
     <property name="properties"> 
      <props> 
       <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
       <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
       <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> 
      </props> 
     </property> 
    </bean> 

<!-- hibernate template --> 
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> 
<property name="sessionFactory"> 
<ref bean="sessionFactory"/> 
</property> 
</bean> 

<!-- transactionmanager --> 
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
    </bean> 


</beans> 




dispatcher-servlet.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:context="http://www.springframework.org/schema/context" 
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd 
     http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd"> 

    <context:component-scan base-package="com.really.controller" /> 
    <context:component-scan base-package="com.really.validator" /> 
    <context:component-scan base-package="com.really.services" /> 
    <context:component-scan base-package="com.really.servicesimpl" /> 
    <context:component-scan base-package="com.really.repository" /> 
    <context:component-scan base-package="com.really.repositoryimpl" /> 

    <mvc:annotation-driven /> 
    <context:annotation-config /> 

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/jsp/" /> 
     <property name="suffix" value=".jsp"/> 
    </bean> 

</beans>  





pom file dependencies are 






<properties> 
     <spring.version>3.2.0.RELEASE</spring.version> 
     <log4j.version>1.2.17</log4j.version> 
     <junit.version>4.11</junit.version> 
     <jdk.version>1.7.0</jdk.version> 
    </properties> 

    <dependencies> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>3.8.1</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 


     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.4</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>${spring.version}</version> 
     </dependency> 


     <dependency> 
      <groupId>javax.portlet</groupId> 
      <artifactId>portlet-api</artifactId> 
      <version>2.0</version> 
      <scope>provided</scope> 
     </dependency> 


     <!-- Hibernate Dependencies Start --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-annotations</artifactId> 
      <version>3.5.6-Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>3.5.6-Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-ehcache</artifactId> 
      <version>3.5.6-Final</version> 
      <exclusions> 
       <exclusion> 
        <groupId>net.sf.ehcache</groupId> 
        <artifactId>ehcache</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>3.5.6-Final</version> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-c3p0</artifactId> 
      <version>3.5.6-Final</version> 
     </dependency> 
     <!-- Hibernate Dependencies End --> 

     <dependency> 
      <groupId>commons-codec</groupId> 
      <artifactId>commons-codec</artifactId> 
      <version>1.2</version> 
     </dependency> 


     <dependency> 
      <groupId>commons-digester</groupId> 
      <artifactId>commons-digester</artifactId> 
      <version>2.1</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-logging</groupId> 
      <artifactId>commons-logging</artifactId> 
      <version>1.1.1</version> 
     </dependency> 


     <!-- Servlet --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
      <scope>provided</scope> 
     </dependency> 

     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <!-- <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> 
      <version>5.0.8</version> </dependency> --> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version> 5.1.14</version> 
     </dependency> 




     <!-- Display TAG Libeary --> 

     <dependency> 
      <groupId>displaytag</groupId> 
      <artifactId>displaytag</artifactId> 
      <version>1.1.1</version> 
     </dependency> 

     <dependency> 
      <groupId>displaytag</groupId> 
      <artifactId>displaytag-export-poi</artifactId> 
      <version>1.1.1</version> 
     </dependency> 
     <!-- End --> 



     <!-- Log4j --> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>${log4j.version}</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.activation</groupId> 
      <artifactId>activation</artifactId> 
      <version>1.1.1</version> 
     </dependency> 

     <dependency> 
      <groupId>commons-fileupload</groupId> 
      <artifactId>commons-fileupload</artifactId> 
      <version>1.2.2</version> 
     </dependency> 
     <dependency> 
      <groupId>commons-io</groupId> 
      <artifactId>commons-io</artifactId> 
      <version>1.4</version> 
     </dependency> 

    </dependencies> 

我正在使用spring MVC 3.2,springTomcat 8.5並在我的項目中使用maven。我已經找到了這個,但沒有得到合適的答案。

+0

當發生這個錯誤?在編譯時或點擊任何網址時? – sunkuet02

+0

在點擊任何網址時。 –

+0

我已經回答了你的問題,你會檢查它嗎? – sunkuet02

回答

0

問題是因爲

  • servlet-mapping造成不正確。

  • 你沒有在你的web.xml

爲了解決這個添加dispatcher-servlet.xmlcontext-param

  • 你可以改變你servlet-mappingweb.xml文件

    <servlet-mapping> 
        <servlet-name>dispatcher</servlet-name> 
        <url-pattern>/</url-pattern> 
    </servlet-mapping> 
    

    其他E(如果你不想改變你的servlet-mapping),可以將每個控制器映射值之後添加.do。像:

    @RequestMapping("/viewuser.do") 
    
  • 編輯你在你的web.xml文件context-param

    <context-param> 
        <param-name>contextConfigLocation</param-name> 
        <param-value> 
         /WEB-INF/applicationContext-dao.xml 
         /WEB-INF/dispatcher-servlet.xml 
        </param-value> 
    </context-param> 
    
+0

仍然沒有工作.. –

+0

如果我在web.xml改變了我的映射爲<的context-param> \t \t​​contextConfigLocation的 \t \t \t \t \t /WEB-INF/applicationContext-dao.xml \t \t \t /WEB-INF/dispatcher-servlet.xml \t \t \t比在瀏覽器上獲取404錯誤並在控制檯上獲取錯誤SEVERE:異常發送上下文itialized事件監聽器類[org.springframework.web.context.ContextLoaderListener] java.lang.IllegalArgumentException異常 –

+0

的情況下你做控制器的任何變化? – sunkuet02

相關問題