日期:2014-05-18  浏览次数:20756 次

Servlet在web.xml上的疑问,请教
项目重做了,构架改了,但是原先搜索引擎登录的地址没办法变
现在的构架是这样的
http://www.text.com/123.html
那像这样的地址
可以在servlet里动手脚

<servlet>
<servlet-name> Index </servlet-name>
<servlet-class> com.hisupplier.servlets.Index </servlet-class>
</servlet>

<servlet-mapping>
<servlet-name> Index </servlet-name>
<url-pattern> /123.html </url-pattern>
</servlet-mapping>

然后我可以在index   这个类里判断,做出分析,然后执行动作

但是以前收录的地址不是这样
是如下的
http://www.text.com/a-pen
a-是不变的,pen是活动的
那事实麻烦点
因为servlet里,
对url-pattern判定的就三种
一个是完全匹配

<url-pattern> /123.html </url-pattern>
这样,但由于a-不动,pen是活动的,所以这个没办法
一个是目录匹配
<url-pattern> /123/ <url-pattern>
这样也没办法,因为后面确实没点
一个是扩展名匹配
<url-pattern> /123*.html <url-pattern>
但是a-pen没扩展名

现在唯一想得到的办法就是
<url-pattern> /* <url-pattern>

但是这样涉及的东西太广,很多东西要进入这个servlet

各位帮帮我,这个应该怎么办,谢谢,百分相候



------解决方案--------------------
有点乱,不是太清楚,一个servlet可以对应多个访问路径啊
<servlet>
<servlet-name> Index </servlet-name>
<servlet-class> com.hisupplier.servlets.Index </servlet-class>
</servlet>

<servlet-mapping>
<servlet-name> Index </servlet-name>
<url-pattern> /123.html </url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name> Index </servlet-name>
<url-pattern> /a-* </url-pattern>
</servlet-mapping>
------解决方案--------------------
<url-pattern> /a-* </url-pattern>
------解决方案--------------------
filter
------解决方案--------------------
我给你写了个filter方法实现,
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain arg2) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)arg0;
HttpServletResponse response = (HttpServletResponse)arg1;
String uri = request.getRequestURI();
if(uri.indexOf( "a- ") > -1)
arg2.doFilter(arg0, arg1);
else
response.sendError(404);
}
另外servlet映射也要改为/*
------解决方案--------------------
up