为什么在 JBOSS 服务器上的浏览器 angular 7 中手动刷新 URL 时页面显示 404?

why page show 404 when manually refreshing URL in browser angular 7 on JBOSS server?

当我在浏览器中执行我的应用程序时,它按预期完美运行,但是当我按 F5 or refresh page 时,它会显示 404 server error.

我为这个问题搜索了很长时间,我找到了很多答案,但 none 对我有用。

我已经实现了HashLocationStrategy。下面是代码:

App.module.ts

import {LocationStrategy, HashLocationStrategy} from '@angular/common';

imports: [
NgbModule.forRoot()],
providers:[{provide: LocationStrategy, useClass: HashLocationStrategy}]

Routing.module.ts (Create separated file for Routing)

@NgModule({
imports:[
    RouterModule.forRoot(appRoutes, { useHash: true })
],
exports:[RouterModule]
})

注意 1 :如果您需要更多说明,请不要标记 "Negative",请问我任何问题。

注意 2:我是新手,不了解服务器端或 JAVA 语言

您需要在服务器中添加一个web.config文件。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="AngularJS" stopProcessing="true">
          <match url=".*" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
          </conditions>
          <action type="Rewrite" url="/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

我找到了问题的答案。

我在 web.xml 文件中添加的以下代码仅适用于我。

<servlet>
<servlet-name>page</servlet-name>
<jsp-file>/WebClientV2/index.html</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>page</servlet-name>
<url-pattern>/WebClientV2</url-pattern>
<url-pattern>/WebClientV2/login</url-pattern>
<url-pattern>/WebClientV2/messages</url-pattern>
<url-pattern>/WebClientV2/contacts</url-pattern>
<url-pattern>/WebClientV2/staff-assignment</url-pattern>
<url-pattern>/WebClientV2/nurse-rounding</url-pattern>
<url-pattern>/WebClientV2/myPatient</url-pattern>
</servlet-mapping>