2011-05-15 83 views
1

我正在使用FilterdoFilter-函数。我想知道哪个站点正在被请求。一些功能给我像/firstDirectoryInWebDirectory/lala.jsp将是完美的。ServletRequest获取实际页面的名称

这里要走的路是什么?使用上下文将是正确的方式,但我无法找到:-(

感谢

回答

9

request.getRequestURI()什么好的方法域后应该返回URL的一部分。

从那里,你可以剥离request.getContextPath()

(你不得不施放ServletRequestHttpServletRequest第一)

+0

完美。我没有考虑铸造。铸造总是伤害我的灵魂。但这种方式是有效的。相当丑陋:-) – 2011-05-15 20:44:19

+0

你将不得不习惯于在servlet过滤器中进行投射。顺便说一句,如果答案适用于您,您可以将其标记为已接受(在投票计数器下面打勾) – Bozho 2011-05-15 20:46:18

+0

仍然必须等待4分钟才能打勾:-) – 2011-05-15 21:00:00

0

当我刚开始学习Java EE,这是偶然混合式ServletRequestHttpServletRequest方法。如Bozho所述,类型转换是访问所需方法所必需的。

该代码会记录访问时间IP时将被要求命名“测试”这个servlet:

if (((HttpServletRequest)request).getServletPath().equals("/Test")){ 
      String IP = request.getRemoteAddr(); 
      System.out.println("Test Servlet:: Logged IP "+ IP + ", Time :" + new Date().toString()); 
     } 
filterChain.doFilter(request,response); 

基本上,请求对象从通用请求铸成HTTP请求,并且只有那个返回的字符串getServletPath()可以与任何你想要的(“/ Test”或“/firstDirectoryInWebDirectory/lala.jsp”或“whatever.html”)进行比较。