Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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
Java 如何使servlet将特殊url映射到静态资源?_Java_Servlets_Web.xml_Url Mapping - Fatal编程技术网

Java 如何使servlet将特殊url映射到静态资源?

Java 如何使servlet将特殊url映射到静态资源?,java,servlets,web.xml,url-mapping,Java,Servlets,Web.xml,Url Mapping,我知道,默认情况下,静态资源将自动返回。但是,我的url非常特殊,我不希望它看起来像http://mysite/app/test.html。也许是这样的: http://mysite/app/dosomething/7419698f <servlet> <servlet-name>test</servlet-name> <jsp-file>/pages/dowork.html</jsp-file> </servl

我知道,默认情况下,静态资源将自动返回。但是,我的url非常特殊,我不希望它看起来像
http://mysite/app/test.html
。也许是这样的:

http://mysite/app/dosomething/7419698f
<servlet>
    <servlet-name>test</servlet-name>
    <jsp-file>/pages/dowork.html</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/dosomething/*</url-pattern>
</servlet-mapping>
function extractGuid(value) {
    var re = /[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i;
    var match = re.exec(value);
    return match ? match[0] : null;
}

var guid = extractGuid(window.location.href);
我想将此请求映射(或转发?)到一个静态html文件,例如/WEB-INF/pages/dowork.html。更多信息,7419698f只是一个参数,
http://mysite/app/dosomething/2926739e
也将映射到同一个静态文件。我知道这样的解决方法:

http://mysite/app/dosomething/7419698f
<servlet>
    <servlet-name>test</servlet-name>
    <jsp-file>/pages/dowork.html</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/dosomething/*</url-pattern>
</servlet-mapping>
function extractGuid(value) {
    var re = /[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i;
    var match = re.exec(value);
    return match ? match[0] : null;
}

var guid = extractGuid(window.location.href);

测试
/pages/dowork.html
测试
/剂量/*

只有当dowork.html是合法的jsp文件时,它才起作用。如果我想像那样提供图像资源,它会出错。

将您的URL映射到
默认值
servlet(您不需要声明它)


违约
/剂量/*

Leos Literak的线索是正确的。我的需求不能通过简单的xml配置来完成,我必须做更多的事情

我需要一个过滤器。在web.xml中:

<filter>
    <filter-name>summary-fw-filter</filter-name>
    <filter-class>com.mycompany.mywebapp.filter.SummaryForwardFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>summary-fw-filter</filter-name>
    <url-pattern>/summary/*</url-pattern>
</filter-mapping>
然后,url
http://mysite/mywebapp/summary/ecef22d6-7aa6-49db-b0d3-6577a63d14c8
将被映射到/WEB-INF/pages/summary.jsp。在尝试映射到非jsp文件时也可以

guid参数可以通过如下javascript代码检索:

http://mysite/app/dosomething/7419698f
<servlet>
    <servlet-name>test</servlet-name>
    <jsp-file>/pages/dowork.html</jsp-file>
</servlet>
<servlet-mapping>
    <servlet-name>test</servlet-name>
    <url-pattern>/dosomething/*</url-pattern>
</servlet-mapping>
function extractGuid(value) {
    var re = /[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i;
    var match = re.exec(value);
    return match ? match[0] : null;
}

var guid = extractGuid(window.location.href);

您可能想将您的URL模式映射到特定的servlet并将其用于重定向,请尝试查看以下问题:我刚开始认为我的答案是错误的,重定向servlet/过滤器是必需的。晚上我会做一些原型。