【问题标题】:spring MVC web app works perfectly on Windows but not on Linuxspring MVC Web 应用程序在 Windows 上完美运行,但在 Linux 上却不行
【发布时间】: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


【解决方案1】:

尝试在 web.xml 中像这样初始化 servlet,

<servlet>
    <servlet-name>Name</servlet-name>
    <servlet-class>ServletClass</servlet-class>
    <load-on-startup>0</load-on-startup>
  </servlet>

然后将该 servlet 映射到您的 JSP

<servlet-mapping>
    <servlet-name>Name</servlet-name>
    <url-pattern>/samplePage</url-pattern>
  </servlet-mapping>

然后您可以在以下位置找到该页面,

http://localhost:8080/ProjectName/samplePage.jsp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-26
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2019-03-12
    • 1970-01-01
    • 2016-11-18
    • 1970-01-01
    相关资源
    最近更新 更多