web.xml和/或过滤器返回welcome-file

IAm*_*aja 7 java tomcat web.xml servlets servlet-filters

我需要为特定功能配置我的Tomcat WAR,并且不确定它是否可以通过实现web.xml,或者我是否需要实现1+自定义Filter,或使用其他类型的hackery.

我的应用程序打包为myapp.war.因此,当它从本地Tomcat实例提供时,我可以通过访问它来访问它http://localhost:8080/myapp.

很简单,如果Tomcat收到以下请求,我有一个welcome-file(myapp.html)我希望服务:

  • 本地主机:8080/MYAPP
  • 本地主机:8080/MyApp的/
  • 本地主机:8080/MyApp的/#
  • 本地主机:8080/MyApp的/#<嗒嗒>

...在<blah>井号(#)之后的任何字符串/正则表达式中.

因此,如果用户前往http://localhost:8080/myapp,则返回myapp.html.如果用户去http://localhost:8080/myapp/#fjrifjri,那猜猜是什么?服回来myapp.html.

但是,如果用户去,比方说,http://localhost:8080/myapp/fizz那么我想要正常的web.xml servlet-mapping逻辑,我希望Tomcat服务于任何servlet映射到的/fizz等等.

目前我web.xml看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
        http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
        version="2.5"
        xmlns="http://java.sun.com/xml/ns/javaee">
    <welcome-file-list>
        <welcome-file>myapp.html</welcome-file>
    </welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud)

我怎么能做到这一点?

And*_*lin 11

如果您需要使用URL,则需要使用 servletservlet-mapping标记:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    version="2.5"
    xmlns="http://java.sun.com/xml/ns/javaee">
  <welcome-file-list>
    <welcome-file>myapp.html</welcome-file>
  </welcome-file-list>

  <servlet>
    <servlet-name>fizz</servlet-name>
    <servlet-class>demo.fizz</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>fizz</servlet-name>
    <url-pattern>/fizz</url-pattern>
  </servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

你的包是demo和fizz你的fizz.java
要修改附加到当前url的url和文件,你需要使用servlet-mapping标签,其中servlet名为fizz被映射到/ fizz

这将允许您更改要查找的设置.

希望能帮助到你...