我正在使用Filter
和doFilter
- 功能。我想知道要求的网站。有些函数给我一些像/firstDirectoryInWebDirectory/lala.jsp
这样的东西是完美的。
去这儿的方法是什么?使用上下文将是正确的方法,但我找不到任何好的方法: - (
由于
答案 0 :(得分:12)
request.getRequestURI()
应返回域名后的网址部分。
从那里,你可以剥离request.getContextPath()
(您必须先将ServletRequest
强制转换为HttpServletRequest
答案 1 :(得分:0)
当我刚开始学习Java EE时,混淆 ServletRequest 和 HttpServletRequest 方法是偶然的。正如Bozho所述,类型转换是访问所需方法所必需的。
当要求名为" Test" 的servlet时,此代码将记录访问时间和 IP :
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()的返回字符串与您想要的任何内容进行比较(& #34; /测试"或" /firstDirectoryInWebDirectory/lala.jsp"或" whatever.html")。