项目重做了,构架改了,但是原先搜索引擎登录的地址没办法变
现在的构架是这样的
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各位帮帮我,这个应该怎么办,谢谢,百分相候
现在的构架是这样的
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各位帮帮我,这个应该怎么办,谢谢,百分相候
解决方案 »
- 这个错误怎么解决
- 求一个Struts+Spring+Hibernate做的一个小列子
- 将log4j的级别设置为DEBUG之后,stuts打印出无数多的信息,严重影响我看自己的调试信息。请教高人怎么解决?
- 一个关于视频的问题,加分50,在线急
- 新手问题 用户管理系统
- 我在连数据库,请问这是什么错?
- 猴急:为什么运行JSP时客户端去掉IE代理才行,否则运行不正常?该如何解决?请大家献计!午饭俺请拉
- 那位大虾能够提供一个JSP的留言版(数据库的),将不胜感激。。。 我的电邮是[email protected]
- 这种效果是怎么实现的?
- jsp访问servlet问题
- 在网页中怎样引用WEB-INF/Lib目录下某个jar文件中的脚本文件呢?
- 关于查询的一个问题
<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>
这样应该不行吧,他不认的
就是说
我要
http://www.text.com/a-xxx
这种类型的地址(注XXX是随时可以变的)
能跳到一个
一个servlet里去
这个在web.xml里没办法实现
但事实上如果我用
<url-pattern>/a-*</url-pattern>
这样格式去配置,resin他是不认的,为什么不认我已清楚了。
麻烦楼上的帮帮我。谢谢
2.如果都是同一个servlet类处理逻辑,就在servlet里面,自己实现根据url来分发页面
怎么弄不清楚,楼上的麻烦给个小例子,谢谢
<filter>
<filter-name>filter</filter-name>
<filter-class>com.test.MyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.如果都是同一个servlet类处理逻辑,就在servlet里面,自己实现根据url来分发页面
------------------------------------------------------------
2这个我也想过,可是,会跳地来的请求地址太多了,一个个分析,可能问题有点麻烦
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映射也要改为/*
现在现在项目也算庞大点,
如果我设的是/*的话
无形之中,一些非a-*的东西也会跳到这个servlet里来.
而这些是我没办法预料的,东西多且繁。
那么OK,那些地址也跳到servlet里来,或者跳到filter里,然后怎么办,难道我真的一个个去判断,这跳进来的地址,应该跳到哪里去。项目也非我一个人做。
但如果我查觉到
a-*的东西跳入某个类,那和别的没涉及,就好办多了,事实上在一个类里,分析url我之前就是这样做的,怎么说呢/*实在太广了。
现在加了filter了,每个请求必须先经过这个filter处理,经过处理后,能够到达servlet的请求就只有没有被filter过滤的请求了;这里servlet还是配置成/*,就是处理所有没有被过滤掉的请求
/*包含的范围太大了,/a-*的东西是进了servlet,那别的比如说/aaa之类的,不就不会被请求到了啊
if(uri.indexOf("a-") > -1) //不建议用indexOf
response.sendRedirect("/xxx");//只要是a-*请求,进入servlet
else
arg2.doFilter(arg0, arg1);//其他不便