WEB项目中的路径问题

JavaWeb项目获取路径的方式总结

现在有一个项目,项目的访问路径为:http://localhost:8080/JavaWebTest6_war_exploded/index.jsp

JSP页面中获取路径

  • 得到当前的项目名称:${pageContext.request.contextPath}

    • /JavaWebTest6_war_exploded
  • 得到IE地址栏的路径::${pageContext.request.requestURL}

    • http://localhost:8080/JavaWebTest6_war_exploded/index.jsp
  • 得到包含工程名称的当前页面全路径:${pageContext.request.requestURI}

  • /JavaWebTest6_war_exploded/index.jsp

  • 得到当前页面所在目录下全名称:${pageContext.request.servletPath}

    • /index.jsp
  • 导入CSS相关的路径:

    • ./:代表目前所在的目录。

    • ../:代表上一层目录。

    • /:代表根目录。

    • web/test/body.jsp 想要访问到web/js/1.js

      • ../../js/1.js
      • /js/1.js

JAVA页面中获取路径

​ 一般来说我们偶尔需要获得项目的路径,所以这里就总结了一下相关的方法。

        //项目相对路径
        String p1 = request.getContextPath();// /JavaWebTest3_war_exploded
        //包含工程名称的当前页面全路径
        String p2 = request.getRequestURI();// /JavaWebTest3_war_exploded/testServlet
        //IE地址栏的路径
        StringBuffer p3 = request.getRequestURL();// http://localhost:8080/JavaWebTest3_war_exploded/testServlet
        //类的访问配置名
        String p4 = request.getServletPath();// /testServlet
        
        //项目在服务器的绝对路径
        String p5 = request.getServletContext().getRealPath("/"); // D:\JavaWebTest3\out\artifacts\JavaWebTest3_war_exploded\
        //访问人的ip地址
        String p6 = request.getRemoteAddr();

关于JSP中转发与重定向的路径问题

转发:浏览器发送http请求给服务器,服务器接受请求,在内部调用方法在完成请求处理和转发动作将目标资源发送给浏览器。(整个过程是一次请求,该请求也可以被转发n次,这n次都使用同一对request和response)

重定向:浏览器发送http请求给服务器,服务器接受后发送302状态码和要重定向的location给浏览器,浏览器发现响应头中是302,则自动给新的location发送一个新的http请求,服务器接收这个请求,处理并发送资源给客户。(整个过程有两次请求,每次请求都会产生新的request和response)

testServlet跳转到web目录下的test目录里的test.jsp

项目的基础访问地址是http://localhost:8080/JavaWebTest6_war_exploded/index.jsp

  • 转发的时候不需要加项目名称,它请求的是内部资源

    • 如:从testServlet跳转到index.jsp
    • request.getRequestDispatcher("test/test.jsp").forward(request, response);
  • 重定向访问本应用资源的时候要加本应用名称,因为重定向可以访问外网资源

    • 如:从testServlet跳转到index.jsp
    • response.sendRedirect("request.getContextPath()+"/test/test.jsp"");

你可能感兴趣的:(WEB项目中的路径问题)