【问题标题】:ServletRequest get name of actual pageServletRequest 获取实际页面的名称
【发布时间】:2011-05-15 20:35:00
【问题描述】:

我正在使用FilterdoFilter-函数。我想知道正在请求哪个站点。给我一些类似/firstDirectoryInWebDirectory/lala.jsp 的功能将是完美的。

去这里的路是什么?使用上下文将是正确的方法,但我找不到任何好的方法:-(

谢谢

【问题讨论】:

  • /firstDirectoryInWebDirectory/lala.jsp 是什么网站?

标签: java servlets servlet-filters


【解决方案1】:

request.getRequestURI() 应该返回域之后的 URL 部分。

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

(您必须先将 ServletRequest 转换为 HttpServletRequest

【讨论】:

  • 完美。我没想过选角。铸造总是伤害我的灵魂。但这就是它的工作方式。很丑:-)
  • 您将不得不习惯在 servlet 过滤器中进行强制转换。顺便说一句,如果答案对您有用,您可以将其标记为已接受(在投票计数器下方打勾)
  • 仍然需要等待 4 分钟才能勾选 :-)
【解决方案2】:

当我刚开始学习 Java EE 时,很随意地混淆了 ServletRequestHttpServletRequest 方法。正如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);

基本上,request 对象从通用请求转换为 HTTP 请求,然后才能将 getServletPath() 的返回字符串与您想要的任何内容进行比较 (" /Test”或“/firstDirectoryInWebDirectory/lala.jsp”或“whatever.html”)。

【讨论】:

    猜你喜欢
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多