【发布时间】:2017-06-23 10:53:27
【问题描述】:
你好:
我是 Spring MVC Web 开发的初学者。最近我用Spring MVC框架写了第一个web app,但是没有任何.xml配置(纯Java注解配置),我的web.xml如图here。这很奇怪,因为 Web 应用程序可以在带有 Tomcat 的 Windows 上正常运行,但不能在 Linux 上运行。
具体来说,当它在 Linux(Ubuntu 或 Redhat)上的 tomcat 中运行时,我可以通过在其他机器上输入 ip:port 来看到 tomcat 的欢迎页面,而不是在我的 web 项目中 index.jsp 的第一页.如果我在 web 项目中请求其他 url,它会响应 404 错误。
所以我认为,显然,web 应用程序根本没有加载到 tomcat 中(为不专业的描述道歉)。我将项目注入 tomcat 的方式与在 Windows 上相同,都是将 war 包复制到 webapps 文件夹中。启动tomcat后我什至可以看到解压后的文件夹,这说明小老虎确实认出来了,对吧?而环境变量(jdk或tomcat)的问题也不是问题,因为tomcat确实启动了。
我想原因是,我的web.xml文件中没有任何内容,因为我使用纯Java注释方法配置,导致tomcat不知道要加载哪个servlet~~(纯猜测XD)。或者在 Linux 上是否有任何特定的东西需要为此进行配置?我很困惑。
这个项目在 gihub 上的仓库是here。
如果您对此问题有任何想法,请帮助我。
谢谢!
【问题讨论】:
-
如果部署到tomcat服务器,访问应用的方式是ip:port/application-name。对于您的情况,您应该执行 ip:port/promotion-tool-core/index.jsp。顺便说一句,有什么理由在 pom.xml 和 /lib 中都包含 mysql 连接器?该依赖项应由 maven 管理。
-
天啊!的确!如果我在 url 中添加 /promotion-tool-core/ 它将起作用。但是为什么在 windows 上不需要呢?
-
我把mysql驱动复制到lib文件夹是因为我使用mybatis-generator插件自动生成模型,所以放在这里只是为了方便在mybatis中配置~~
-
在windows和linux下应该是一样的。其实你通过ip:port访问tomcat服务器,但是接下来需要指向一个应用..
-
您的应用可以映射到
/,如果您将其命名为ROOT.war并删除由tomcat 创建的默认webapps/ROOT目录
标签: java linux spring spring-mvc tomcat