【问题标题】:Apache-Tomcat Servlet-mapping through url-pattern fails (404-Error)通过 url 模式的 Apache-Tomcat Servlet 映射失败(404 错误)
【发布时间】:2020-12-16 21:05:44
【问题描述】:

我在通过 url 模式映射 Apache-Tomcat Servlet 时遇到问题。 直到去年它一直工作得很好。 最近我尝试登录,突然出现 404 Not Found 错误。 我仍然可以看到所有其他页面。我不知道服务器端发生了什么变化,因为我从 vultr 借了一个 linux-server。 由于我在编码中没有触及任何东西,而且对我来说一切都很好,所以我不知道。 对于专家来说似乎很容易解决。谁能帮我解决这个问题?

- 错误信息

Not Found
The requested URL /login.do was not found on this server.
Apache/2.4.12 (Ubuntu) Server at xx.xx.xx.xx Port 80

这里xx是我服务器的ip地址

- tomcat/conf/server.xml

...
<Context path="" docBase="/.../tomcat/webapps/.../WebContent" reloadable="true"></Context>
...

- tomcat/conf/web.xml

...
    <servlet>
        <servlet-name>default</servlet-name>
        <servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
        <init-param>
            <param-name>debug</param-name>
            <param-value>0</param-value>
        </init-param>
        <init-param>
            <param-name>listings</param-name>
            <param-value>false</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
...
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
...

- myapp/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>myapp</display-name>
...
    <servlet>
        <servlet-name>URIController</servlet-name>
        <servlet-class>myapp.mvc.control.URIController</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>
                /WEB-INF/commandHandler.properties
            </param-value>
        </init-param>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>URIController</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>
...

- myapp/WEB-INF/commandHandler.properties

/login.do=myapp.mvc.command.Login

当我尝试登录时,它显示“在此服务器上找不到请求的 URL /login.do”。 它一直像这样工作正常:当点击“登录”按钮时,它将 commandHandler.properties 中的内容传递给控件类(myapp.mvc.control.URIController),该类获取登录类的名称(myapp.mvc .command.Login) 以便将请求分派给登录类。

如果这个问题与 Apache 有关,我不知道(甚至不知道在这里展示什么),因为它是由 5 年前的付费专家完成的。

提前非常感谢!!

【问题讨论】:

    标签: apache tomcat webserver http-status-code-404


    【解决方案1】:

    这是一条 httpd 错误消息,而不是 Apache Tomcat 错误消息。看起来有些东西(无法从提供的信息中看出什么)破坏了从 httpd 到 Tomcat 的反向代理。您需要与为您设置反向代理的人交谈。

    【讨论】:

    • 谢谢。从您的回答中,我得到了一个提示,并研究了付费专家为服务器做了什么,并自己解决了这个问题。我在 Apache(确切地说是 apache2)的 JkMount 中添加了“.do”模式。
    猜你喜欢
    • 2018-11-24
    • 2016-10-28
    • 2011-05-12
    • 2017-03-27
    • 2011-02-24
    • 2010-11-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-06
    相关资源
    最近更新 更多