关于JavaWeb中Servlet里基本路径获取的总结

我们常常要为重定向、请求收发器指定一个路径。一般来说我们指定一个相对路径。随着学习的深入,我们会需要更加精确地获取文件的路径,文件父级目录。下面我们来说一下可能会用到的几个方法。
首先是获取全路径的request.getRequestURL()。这个函数蛮重要的,直接获取到当前文件的目录,并且携带协议、域名、端口号前缀,也就是说,我们可以使用这个函数返回当前文件的绝对路径。同时,这个函数的名称也十分直白:获取请求(的文件的)URL(统一资源定位符)。
下面我们一点点来,先说获取协议名:request.getScheme(),这里获取到http
然后我们需要获取服务器名称request.getServerName()
再然后就是服务器占用端口号request.getServerPort()
最后我们需要一个非常好用的函数request.getRequestURI(),这个函数直接返回当前文件的”根目录 + url-pattern”,不包括前缀,前面只到项目名那一级。
如果只是想获得项目根目录,只需要写request.getContextPath()意思也很直白,获取上下文路径,或者说获取环境路径。
当我们想获取上一级目录下的某个文件,相对路径中我们可以
用”../想要访问的文件”如果硬要用代码获取父级目录名称也是可以的:
String path = request.getRequestURI();
String subpath = path.substring(0,path.lastIndexOf(‘/’)-1);
String parentFile = subpath.substring(subpath.lastIndexOf(‘/’)+1);
System.out.println(“filefold is ” + parentFile);
代码出自:JSP中如何获取存放xxx.jsp文件的父文件夹名称?


下面我用一个小demo来看一下各个函数获取的效果:


public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        System.out.println("request.getRequestURL()返回的结果:"+request.getRequestURL());
        System.out.println("request.getScheme()返回的结果:"+request.getScheme());
        System.out.println("request.getServerName()返回的结果:"+request.getServerName());
        System.out.println("request.getServerPort()返回的结果:"+request.getServerPort());
        System.out.println("request.getRequestURI()返回的结果:"+request.getRequestURI());
        System.out.println("-----------华丽的分割线-------------");
        String requestContextPath=request.getContextPath();
        System.out.println("request.getContextPath()返回的结果:"+requestContextPath);

    }

效果如图:
关于JavaWeb中Servlet里基本路径获取的总结_第1张图片


文件目录


web.xml中的配置

你可能感兴趣的:(Web,Java)