Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsp 如何将URL/foo/*映射到Google App Engine上的静态文件/foo.html?_Jsp_Google App Engine_Servlets - Fatal编程技术网

Jsp 如何将URL/foo/*映射到Google App Engine上的静态文件/foo.html?

Jsp 如何将URL/foo/*映射到Google App Engine上的静态文件/foo.html?,jsp,google-app-engine,servlets,Jsp,Google App Engine,Servlets,我有一个关于谷歌应用程序引擎(Java)的问题。我想将URL模式/foo/*映射到一个静态文件/foo.html(这样请求/foo/bar或/foo/baz将返回/foo.html的内容)。静态文件foo.html包含javascript,该javascript根据实际请求URL使用内容填充页面 我知道如何使用web.xml将通配符URL映射到servlet,但我还没有找到任何类似的静态文件 我的appengineweb.xml具有/static 到目前为止,我提出的最佳解决方案是将/foo/*

我有一个关于谷歌应用程序引擎(Java)的问题。我想将URL模式
/foo/*
映射到一个静态文件
/foo.html
(这样请求
/foo/bar
/foo/baz
将返回
/foo.html
的内容)。静态文件
foo.html
包含javascript,该javascript根据实际请求URL使用内容填充页面

我知道如何使用
web.xml
将通配符URL映射到servlet,但我还没有找到任何类似的静态文件

我的
appengineweb.xml
具有
/static


到目前为止,我提出的最佳解决方案是将
/foo/*
映射到一个servlet,该servlet将
foo.html
作为JSP页面提供服务。

您不需要使用servlet,您可以将url模式直接映射到JSP,并且其中只有html:

<servlet>
    <servlet-name>foo.jsp</servlet-name>
    <jsp-file>/foo.jsp</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>foo.jsp</servlet-name>
    <url-pattern>/foo/*</url-pattern>
</servlet-mapping>

foo.jsp
/foo.jsp
foo.jsp
/福/*

使用以下两种解决方法之一:

选项1

假设您想将
/foo
映射到html文件

  • webapp
    目录中创建一个目录
    foo

  • foo
    目录中创建一个html文件
    index.html

  • appengine web.xml
    中添加以下内容:

    <static-files>  
      <include path="/foo"/> 
    </static-files>
    
    
    
  • 现在部署并访问
    /foo
    ,它应该提供foo目录中的index.html

    选项2

    使用app.yaml for java,如下所述:


    使用静态文件处理程序:

    谢谢@moshe shaham,我明白你的意思了。不过,请求仍然会命中应用程序服务器。我希望将HTML作为一个真正的静态文件提供:@user2962393我认为没有应用服务器是不可能的。另一个选项是通过hashtag指定url:
    http://www.example.com/#url/to/path
    。通过这种方式,它提供index.html,而不考虑pathOn应用程序引擎,这将仅适用于.jsp文件。也就是说,您不能以这种方式映射.html文件(仅在dev服务器上)。这是BS,因为它在python中是可能的:选项1对我有效,而接受的答案不允许使用.html