我想学习完全基于注释的Spring MVC的一些基础知识。我从本教程开始。
克隆存储库后
hg clone https://bitbucket.org/arnelism/snoutbook
并建立war文件
war
mvn package
我通过简单地将war文件复制到webapps我的Apache Tomcat 7.0.12实例的目录中来部署该应用程序。我正在停止并启动服务器。
webapps
信息:启动Servlet引擎:Apache Tomcat / 7.0.12 2014年9月12日3:37:18 PM org.apache.catalina.startup.HostConfig deployWAR 信息:部署Web应用程序存档Snoutbook-1.0.0-SNAPSHOT.war 2014年9月12日下午3:37:27 org.apache.catalina.startup.HostConfig deployDirectory 信息:部署Web应用程序目录文档 2014年9月12日下午3:37:27 org.apache.catalina.startup.HostConfig deployDirectory 信息:部署Web应用程序目录示例 2014年9月12日下午3:37:27 org.apache.catalina.startup.HostConfig deployDirectory 信息:部署Web应用程序目录主机管理器 2014年9月12日下午3:37:27 org.apache.catalina.startup.HostConfig deployDirectory 信息:部署Web应用程序目录管理器 2014年9月12日下午3:37:27 org.apache.catalina.startup.HostConfig deployDirectory 信息:部署Web应用程序目录ROOT 2014年9月12日下午3:37:27 org.apache.coyote.AbstractProtocolHandler开始 信息:启动ProtocolHandler [“ http-bio-8080”] 2014年9月12日下午3:37:27 org.apache.coyote.AbstractProtocolHandler开始 信息:启动ProtocolHandler [“ ajp-bio-8009”] 2014年9月12日3:37:27 PM org.apache.catalina.startup.Catalina开始 信息:服务器启动时间为8826毫秒
不幸的是,执行此操作后,我通过显示页面收到错误404。
http://localhost:8080/Snoutbook-1.0.0-SNAPSHOT/
我一直在寻找解决方案超过2个小时,但未能找到原因。有人有类似的问题吗?
我尝试使用最新的Tomcat版本apache-tomcat-8.0.12。问题仍然存在。但是,在部署Web应用程序时,控制台中会打印更多信息。
apache-tomcat-8.0.12
2014年9月12日17:13:20.038信息[localhost-startStop-1] org.apache.catalina.startu p.HostConfig.deployWAR部署Web应用程序存档D:\ Users \ b21090094 \ apac he-tomcat-8.0.12 \ webapps \ Snoutbook-1.0.0-SNAPSHOT.war 2014年9月12日17:13:23.132信息[localhost-startStop-1] org.apache.catalina.util.S essionIdGeneratorBase.createSecureRandom为s创建SecureRandom实例 使用[SHA1PRNG]生成ession ID花费了[255]毫秒。 2014年9月12日17:13:23.169信息[localhost-startStop-1] org.springframework.web.se rvlet.FrameworkServlet.initServletBean FrameworkServlet'dispatcher':初始化 开始 2014年9月12日17:13:23.182信息[localhost-startStop-1] org.springframework.contex t.support.AbstractApplicationContext.prepareRefresh刷新WebApplicationCon 名称空间“ dispatcher-servlet”的文本:启动日期[周五9月12日17:13:23 CEST 2014];上下文层次结构的根 2014年9月12日17:13:23.278 INFO [localhost-startStop-1] org.springframework.contex t.annotation.ClassPathScanningCandidateComponentProvider.registerDefaultFilters 找到并支持组件scannin的JSR-250'javax.annotation.ManagedBean' G 2014年9月12日17:13:23.281信息[localhost-startStop-1] org.springframework.web.co ntext.support.AnnotationConfigWebApplicationContext.loadBeanDefinitions注册 注释的类:[类com.zeroturnaround.snoutbook.init.WebappConfigJpa] 2014年9月12日17:13:23.429 INFO [localhost-startStop-1] org.springframework.contex t.annotation.ClassPathScanningCandidateComponentProvider.registerDefaultFilters 找到并支持组件scannin的JSR-250'javax.annotation.ManagedBean' G 2014年9月12日17:13:23.921信息[localhost-startStop-1] org.springframework.beans。 factory.support.DefaultListableBeanFactory.preInstantiateSingletons预先安装 在org.springframework.beans.factory.support.DefaultListableBea中设置单例 nFactory @ 7169a1:定义bean [org.springframework.context.annotation.internal ConfigurationAnnotationProcessor,org.springframework.context.annotation.internal AutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequ iredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnn otationProcessor,org.springframework.context.annotation.internalPersistenceAnnot ationProcessor,webappConfigJpa,org.springframework.context.annotation.Configurat ionClassPostProcessor $ ImportAwareBeanPostProcessor#0,addPetForm,snoutContoller,s noutDao,org.springframework.aop.config.internalAutoProxyCreator,delegatingWebMvc 配置,requestMappingHandlerMapping,viewControllerHandlerMapping,beanName HandlerMapping,resourceHandlerMapping,defaultServletHandlerMapping,requestMappin gHandlerAdapter,mvcConversionService,mvcValidator,httpRequestHandlerAdapter,simp leControllerHandlerAdapter,handlerExceptionResolver,proxyTransactionManagementCo nfiguration,org.springframework.transaction.config.internalTransactionAdvisor,tr ansactionAttributeSource,transactionInterceptor,transactionManager,entityManager Factory,setupViewResolver,getDataSource]; 工厂层次结构的根 2014年9月12日17:13:24.225信息[localhost-startStop-1] org.springframework.orm.jp a.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory Buildi ng用于持久性单元“默认”的JPA容器EntityManagerFactory 2014年9月12日17:13:24.657 INFO [localhost-startStop-1] org.hibernate.annotations。 common.Version。HCANN000001:休眠公用注释{4.0.1.Final} 2014年9月12日17:13:24.676 INFO [localhost-startStop-1] org.hibernate.Version.logV ersion HHH000412:Hibernate Core {4.1.2} 2014年9月12日17:13:24.681信息[localhost-startStop-1] org.hibernate.cfg.Environm 耳鼻喉科。HHH000206:找不到hibernate.properties 2014年9月12日17:13:24.686信息[localhost-startStop-1] org.hibernate.cfg.Environm ent.buildBytecodeProvider HHH000021:字节码提供者名称:javassist 2014年9月12日17:13:24.772信息[localhost-startStop-1] org.hibernate.ejb.Ejb3Conf iguration.configure HHH000204:处理PersistenceUnitInfo [ 名称:默认 ...] 2014年9月12日17:13:25.524信息[localhost-startStop-1] org.hibernate.service.jdbc .connections.internal.ConnectionProviderInitiator.instantiateExplicitConnectionP rovider HHH000130:实例化显式连接提供程序:org.hibernate.ejb .connection.InjectedDataSourceConnectionProvider 2014年9月12日17:13:26.275信息[localhost-startStop-1] org.hibernate.dialect.Dial 等等。HHH000400:使用方言:org.hibernate.dialect.HSQLDialect 2014年9月12日17:13:26.356 INFO [localhost-startStop-1] org.hibernate.engine.trans action.internal.TransactionFactoryInitiator.initiateService HHH000268:Transacti 策略上:org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFacto 瑞 2014年9月12日17:13:26.374 INFO [localhost-startStop-1] org.hibernate.hql.internal .ast.ASTQueryTranslatorFactory。HHH000397:使用ASTQueryTranslatorFactory 2014年9月12日17:13:26.498 INFO [localhost-startStop-1]。HV0000 01:Hibernate Validator 4.3.0.Final 2014年9月12日17:13:27.699 INFO [localhost-startStop-1] org.springframework.web.se rvlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod映射为“ {[/ addP 等],方法= [获取],参数= [],标题= [],消费= [],生产= [],自定义= []}”到 公共java.lang.String com.zeroturnaround.snoutbook.controllers.AddPetForm.setu pForm(org.springframework.ui.Model) 2014年9月12日17:13:27.700信息[localhost-startStop-1] org.springframework.web.se rvlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod映射为“ {[/ addP 等],方法= [POST],参数= [],标题= [],消费= [],产生= [],自定义= []}”到 公共java.lang.String com.zeroturnaround.snoutbook.controllers.AddPetForm.han dleSubmit(com.zeroturnaround.snoutbook.form.PetForm,org.springframework.validati on.BindingResult,org.springframework.web.bind.support.SessionStatus) 2014年9月12日17:13:27.701 INFO [localhost-startStop-1] org.springframework.web.se rvlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod映射为“ {[/ pet / {petId}],方法= [],参数= [],标题= [],消费= [],生产= [],自定义= []}“” ont o公共java.lang.String com.zeroturnaround.snoutbook.controllers.SnoutContolle r.pet(java.lang.Long,org.springframework.ui.Model) 2014年9月12日17:13:27.702信息[localhost-startStop-1] org.springframework.web.se rvlet.handler.AbstractHandlerMethodMapping.registerHandlerMethod映射为“ {[/ owne rs],methods = [],params = [],headers = [],consumes = [],produces = [],custom = []}“”到发布 lic java.lang.String com.zeroturnaround.snoutbook.controllers.SnoutContoller.lis tOwners(org.springframework.ui.Model) 2014年9月12日17:13:27.762信息[localhost-startStop-1] org.springframework.web.se rvlet.handler.AbstractUrlHandlerMapping.registerHandler映射的URL路径[/ **]在 到类型[类org.springframework.web.servlet.resource.DefaultServle的处理程序 [tHttpRequestHandler] 2014年9月12日17:13:28.129信息[localhost-startStop-1] org.springframework.web.se rvlet.FrameworkServlet.initServletBean FrameworkServlet'dispatcher':初始化 在4960毫秒内完成 2014年9月12日17:13:28.140信息[localhost-startStop-1] org.apache.catalina.startu p.HostConfig.deployWAR部署Web应用程序存档D:\ Users \ b21090094 \ apache-tomcat-8.0.12 \ webapps \ Snoutbook-1.0.0-SNAPSHOT.war已在8,103中完成 多发性硬化症 2014年9月12日17:13:28.141信息[localhost-startStop-1] org.apache.catalina.startu p.HostConfig.deployDirectory部署Web应用程序目录D:\ Users \ b21090 094 \ apache-tomcat-8.0.12 \ webapps \ docs 2014年9月12日17:13:28.167信息[localhost-startStop-1] org.apache.catalina.startu p.HostConfig.deployDirectory部署Web应用程序目录D:\ Users \ b2 1090094 \ apache-tomcat-8.0.12 \ webapps \ docs已在26毫秒内完成 2014年9月12日17:13:28.168信息[localhost-startStop-1] org.apache.catalina.startu p.HostConfig.deployDirectory部署Web应用程序目录D:\ Users \ b21090 094 \ apache-tomcat-8.0.12 \ webapps \ examples 2014年9月12日17:13:28.537信息[localhost-startStop-1] org.apache.catalina.startu p.HostConfig.deployDirectory部署Web应用程序目录D:\ Users \ b2 1090094 \ apache-tomcat-8.0.12 \ webapps \ examples已在370毫秒内完成 2014年9月12日17:13:28.538信息[localhost-startStop-1] org.apache.catalina.startu p.HostConfig.deployDirectory部署Web应用程序目录D:\ Users \ b21090 094 \ apache-tomcat-8.0.12 \ webapps \ host-manager 2014年9月12日17:13:28.572信息[localhost-startStop-1] org.apache.catalina.startu p.HostConfig.deployDirectory部署Web应用程序目录D:\ Users \ b2 1090094 \ apache-tomcat-8.0.12 \ webapps \ host-manager已在34毫秒内完成 2014年9月12日17:13:28.573信息[localhost-startStop-1] org.apache.catalina.startu p.HostConfig.deployDirectory部署Web应用程序目录D:\ Users \ b21090 094 \ apache-tomcat-8.0.12 \ webapps \ manager 2014年9月12日17:13:28.633信息[localhost-startStop-1] org.apache.catalina.startu p.HostConfig.deployDirectory部署Web应用程序目录D:\ Users \ b2 1090094 \ apache-tomcat-8.0.12 \ webapps \ manager已在61毫秒内完成 2014年9月12日17:13:28.633信息[localhost-startStop-1] org.apache.catalina.startu p.HostConfig.deployDirectory部署Web应用程序目录D:\ Users \ b21090 094 \ apache-tomcat-8.0.12 \ webapps \ ROOT 2014年9月12日17:13:28.659信息[localhost-startStop-1] org.apache.catalina.startu p.HostConfig.deployDirectory部署Web应用程序目录D:\ Users \ b2 1090094 \ apache-tomcat-8.0.12 \ webapps \ ROOT已在26毫秒内完成 2014年9月12日17:13:28.663 INFO [main] org.apache.coyote.AbstractProtocol.start St arting ProtocolHandler [“ http-nio-8080”] 2014年9月12日17:13:28.676 INFO [main] org.apache.coyote.AbstractProtocol.start St arting ProtocolHandler [“ ajp-nio-8009”] 2014年9月12日17:13:28.682信息[主要] org.apache.catalina.startup.Catalina.start 服务器在8701毫秒内启动
之后,我仍然收到错误404。
尝试使用 http://localhost:8080/Snoutbook-1.0.0-SNAPSHOT/owners
http://localhost:8080/Snoutbook-1.0.0-SNAPSHOT/owners
将war文件上传到tomcat的webapp文件夹时,默认情况下,tomcat使您可以使用war的名称访问webapp。然后,当您查看Web应用程序的初始值设定项(的替代项web.xml)时,它正在注册DispatcherServletwith /映射。接下来,您看一下它所指向的控制器。因此,路径为:@RequestMapping``/owners
web.xml
DispatcherServlet
/
@RequestMapping``/owners
host:port+ war-name+ servlet-mapping+controller-mapping
host:port
war-name
servlet-mapping
controller-mapping
等于
localhost:8080/+ Snoutbook-1.0.0-SNAPSHOT/+ /+owners
localhost:8080/
Snoutbook-1.0.0-SNAPSHOT/
owners