小编典典

部署简单的Spring MVC应用程序(无web.xml)后出现错误404

java

我想学习完全基于注释的Spring MVC的一些基础知识。我从本教程开始。

克隆存储库后

hg clone https://bitbucket.org/arnelism/snoutbook

并建立war文件

mvn package

我通过简单地将war文件复制到webapps我的Apache Tomcat 7.0.12实例的目录中来部署该应用程序。我正在停止并启动服务器。

信息:启动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应用程序时,控制台中会打印更多信息。

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。


阅读 180

收藏
2020-11-30

共1个答案

小编典典

尝试使用 http://localhost:8080/Snoutbook-1.0.0-SNAPSHOT/owners

将war文件上传到tomcat的webapp文件夹时,默认情况下,tomcat使您可以使用war的名称访问webapp。然后,当您查看Web应用程序的初始值设定项(的替代项web.xml)时,它正在注册DispatcherServletwith
/映射。接下来,您看一下它所指向的控制器。因此,路径为:@RequestMapping``/owners

host:port+ war-name+ servlet-mapping+controller-mapping

等于

localhost:8080/+ Snoutbook-1.0.0-SNAPSHOT/+ /+owners

等于

http://localhost:8080/Snoutbook-1.0.0-SNAPSHOT/owners

2020-11-30