Java 如何使servlet将特殊url映射到静态资源?
我知道,默认情况下,静态资源将自动返回。但是,我的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
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>
然后,urlhttp://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/过滤器是必需的。晚上我会做一些原型。