Java 是否在servlet中检索上一页路径?

Java 是否在servlet中检索上一页路径?,java,servlets,Java,Servlets,我试图保持用户跟踪,如果他没有权限,然后将他返回到他请求的页面(上一页路径),并显示消息。在doGet()中,当我尝试使用request.getPathInfo()获取请求url时,jboss控制台中会给出null 我的doGet源代码来自servlet: protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOExcepti

我试图保持用户跟踪,如果他没有权限,然后将他返回到他请求的页面(上一页路径),并显示消息。在
doGet()
中,当我尝试使用
request.getPathInfo()
获取请求url时,jboss控制台中会给出
null

我的doGet源代码来自servlet:

protected void doGet(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
    if (!validateUserSession(request, response)) {
        return;
    }

    String pathTrace = request.getPathInfo();
    System.out.println("Request is comming from : " + pathTrace); // null

    loadNavigation(request, response);

    ServletContext context = getServletContext();
    RequestDispatcher rd = context
            .getRequestDispatcher("/jsp/admin_account/InviteUser.jsp");
    rd.forward(request, response);
}

从请求头中获取它

String pathTrace = request.getHeader("referer");
System.out.println("Request is comming from : " + pathTrace);
从中,getPathInfo可能返回NULL

public java.lang.String getPathInfo()

返回与客户端发出此请求时发送的URL关联的任何额外路径信息。额外的路径信息位于servlet路径之后,但位于查询字符串之前。如果没有额外的路径信息,此方法将返回null

使用下面的API

public java.lang.String getServletPath()

返回此请求的URL中调用servlet的部分。这包括servlet名称或servlet的路径,但不包括任何额外的路径信息或查询字符串。与CGI变量SCRIPT_NAME的值相同。 返回: 一个字符串,包含被调用的servlet的名称或路径,如请求URL中指定的,已解码

编辑:因为您需要传递servlet URL


在传递的servlet中添加referer\u url作为另一个参数,并将该值传递给您尝试获取路径的其他servlet

请在向下投票后给出原因、解决方案或建议!这可能有助于检查getServletPath()是否返回properly@ravindra它给出了在选项卡中打开的页面的路径,而不是以前的历史记录url@David为什么不同时使用侦听器和会话对特定页面执行此用户限制?它提供了包含contextPath()的路径。有什么办法可以避免吗?难道你不想让用户返回上一页吗?是的,这是真的,我只需要(context)/上一页/下一页/下一页后的路径你得到的是一个字符串形式的完整路径url,如果你只想在context之后的路径,你可以将其子串,将contextPath设置为开始参数。我正在自己解决问题谢谢兄弟的时间和支持:)是的getServletPath可以,但我正在尝试从实际请求生成到当前servlet的位置获取上一页url。将referrer\u url作为另一个参数添加到页面,并通过传递servlet传递值