Java servlet url映射,url模式

时间:2012-02-09 10:19:46

标签: java servlets mapping

我正在做一个新闻项目。我们有新闻类别,新闻子类别和新闻详情页面。我想要网址:

  • 类别页面:“http://mysite.com/my-dynamic-category”。
  • 子类别页面:“http://mysite.com/my-dynamic-category/sub-category”。
  • 新闻详情页面:“http://mysite.com/my-dynamic-category/sub-category/my-new-alias.html”。

三个servlet:CategoryServlet,SubcategoryServlet,NewsDetailServlet。如何在web.xml中使用相应的servlet映射url?我正在使用eclipse和tomcat服务器。

5 个答案:

答案 0 :(得分:1)

我想对于这种任务,web.xml中的简单url映射是不够的。 如果要将动态URL映射到Web资源(例如servlet),则必须进行一些URL重写。最简单的方法是查找一些URL重写过滤器,例如来自Tuckey的URL重写过滤器,其中包含以下教程:http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html

答案 1 :(得分:1)

我将所有网址映射到我的网络应用中的一个servlet中,让网络应用自己决定如何为它们提供服务:

<servlet>
  <servlet-name>dispatcher</servlet-name>
  <servlet-class>com.myapp.Dispatcher</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>dispatcher</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

缺点是我的servlet容器不再提供静态文件,我必须编写代码来加载它们并通过Web应用程序提供它们或在apache上提供它们并将其配置为不将代理转换为tomcat以获取任何静态文件。

答案 2 :(得分:0)

Eclipse没有任何问题,你也可以使用vi或emacs。您的问题可以通过URL重写来解决(在反向代理端,或者类似于:http://www.tuckey.org/urlrewrite/) - 只需将您的好锁定URL重新映射到真正的servlet。

或者您可以使用过滤器,解析servlet路径并使用信息来呈现模板。

答案 3 :(得分:0)

如果您的子类别是静态的,那么您可以将url映射用作/ * / sub-category,其中*映射到CategoryServlet.java,从那里您可以获得包含/ dynamic-category / sub-的请求路径类别,您可以提取您的子类别和动态类别。有了这个,你也可以只使用一个servlet。

答案 4 :(得分:0)