apache - 如何使用我的前端 Controller 配置 tomcat 的 web.xml

标签 apache tomcat routes front-controller

我为我的 Java EE 应用程序编写了一个简单的前端 Controller 。该 Controller 拦截所有 url 以将它们重定向到正确类中的相应方法。

典型的 url 如下所示:http://domain.tld/appName/Controller/method

我目前面临 3 个与 tomcat 相关的问题:

  1. 如果我尝试访问我的基本 url,http://domain.tld/appName/ (有或没有结尾斜线),我的前端 Controller 没有被调用,我有一个 404。
  2. 如果我尝试访问这样的 url:domain.tld/appName/Controller/method/(注释结束斜线)与第 1 点相同。但没有结束斜线它工作正常。
  3. 最后,因为我所有的请求都路由到我的前端 Controller ,所以我必须在我的 web.xml 中定义所有要提供给默认 servlet 的静态文件。一个更少约束和丑陋的解决方案会很好。

这是我的 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_3_0.xsd" id="WebApp_ID" version="3.0">
    <servlet>
        <servlet-name>FrontController</servlet-name>
        <servlet-class>controllers.FrontController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>FrontController</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.png</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>
</web-app>

最佳答案

将此添加到您的 web.xml 文件中,在第一个 servlet 之前:

<welcome-file-list>
    <welcome-file>FrontController</welcome-file>
</welcome-file-list>

关于apache - 如何使用我的前端 Controller 配置 tomcat 的 web.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5920870/

相关文章:

apache - 安装 PPTP 后 HTTPS 连接超时

java - 我应该在 java 中导入什么来为 db2 和 tomcat 执行连接池

Apache mod_rewrite 使用 302 而不是 https 重定向到 http

maven - 如何让 Jenkins 构建正确的 .war 文件?

tomcat - javax.security.auth.login.LoginException : No LoginModules configured for PropertiesLoginModule

node.js - 从 HTML 获取动态路由输入

php - 重置密码时避免出现 "auto login"

r - 无法使用 ggmap 绘制路线。 route() 没有检索到正确的坐标?

java - 无法在我的本地主机上运行 Apache Tomcat 服务器?

apache 将 http 重定向到 https,将 www 重定向到非 www