仅在 Netbeans 中运行的 Java Web 应用程序

标签 java tomcat deployment http-status-code-404 war

我正在开发一个 Spring 网络应用程序,当我从 netbeans 运行它时一切正常。我的项目完全基于注释,context.xml 文件是空的,没有其他 XML 文件可言。构建过程产生的 war 文件在 tomcat 管理器网页下部署良好,我能够访问登录页面。一旦按下登录按钮,通常不会重定向到主页。我注意到的一件事是,当我在 tomcat 管理器中单击我的应用程序时,我被带到 localhost:8080/MDHIS_WebClient,它正确显示了登录页面。一旦我点击登录,它就会给我一个 404 错误,URL localhost:8080/login 是我的主 Controller 中执行登录过程的 post 方法的名称(注意 webapp 名称不再在 URL 中)。无论我在 URL 栏中手动输入什么,已知的有效 URL,我都没有得到一个实际的页面,而且看起来登录过程甚至没有发生。我查看了所有 Tomcat 日志,没有任何错误记录。我确实阅读了其他帖子,但没有发现类似的症状。我完全被这个弄糊涂了,我什至看不到我可以在这里发布什么相关代码。

如果您遇到过这个问题,请帮忙。

问候

* 编辑 *

这是我的 ApplicationInitializer 类中的 onStartup() 方法:

@Override
public void onStartup(ServletContext container) throws ServletException 
{
    AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
    ctx.register(ApplicationConfiguration.class);
    ctx.setServletContext(container);
    ContextLoaderListener contextLoaderListener = new ContextLoaderListener(ctx);
    ctx.getServletContext().addListener(contextLoaderListener);
    ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx));
    servlet.setLoadOnStartup(1);
    servlet.addMapping("/");
}

最佳答案

终于在另一个论坛的帖子中找到了答案:

在你的 tomcat 的 conf/server.xml 添加:

<Context path="" docBase="NameOfYourWar" debug="0" reloadable="true"></Context>

在结束标记之前的 server.xml 文件中

这将确保您的上下文在根目录中没有 war 文件名的情况下被加载。替代方法是将您的 war 文件重命名为 ROOT.war 并删除 webapps 中的 ROOT 文件夹,然后部署您自己的 ROOT.war 文件。

我可以确认这有效!

关于仅在 Netbeans 中运行的 Java Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48890657/

相关文章:

azure - 部署 Meteorjs 时在 web.config 中使用的路径

java - Maven部署,指定端口

java - 使用 PD4ML 将 HTML 转换为带有动态图像的 PDF

java - 将用户输入的特定数量的字符存储在变量中#java

tomcat - "request.getRemoteAddr()"的结果在不同的浏览器中是不一样的

apache - 是否有类似于 SQL Server 2008 R2 Express 静默安装的 Apache Tomcat 7.0.34 批量静默安装指南?

deployment - 在 SSRS 中为不同的配置使用不同的数据源

java - 如何通过 XA 数据源调用 DBlink

java - 内存不足错误: Could not allocate JNI Env

java - tomcat中带有命名参数的IllegalStateException