在写程序时,想要获取某个资源文件,或想访问某个Servlet,如果路径写不对,就找不到该文件,或访问失落败。
由此可见,路径很主要。
下面我们就来逐一剖析如何精确找到资源文件及访问Servlet。

1.Servlet访问路径

Servlet的访问路径是在web.xml文件中配置的,如下所示:

jsp中servlet为什么采用绝对路径与年夜家分享一下有关java 路径的问题 NoSQL

<url-pattern&gt;Servlet访问路径</url-pattern>

Servlet访问路径有如下两种书写办法:

l 路径以“/”开头

l 路径以““开头

Servlet的访问路径要么以“/”开头,要么以“”开头,但是在Servlet中,现在很少利用“”开头,在后面将要学习的过滤器中会利用它来匹配要过滤的资源。

2.要求转发和要求包含路径

要求转发和要求包含须要给出即将转发和包含资源的路径,例如:

request.getRequestDispatcher(“/BServlet”).forward(request,response),表示要转发到BServlet。
request工具的getRequestDispatcher(String path)方法的参数有如下两种书写办法:

l 以“/”开头:

相对当前项目路径,即:http://localhost:8080/项目名,例如:request.getRequestDispatcher(“/BServlet”)表示转发或包含路径为http://localhost:8080/项目名/BServlet的Servlet。

l 不以“/”开头:

相对当前Servlet的路径,例如:当前Servlet是AServlet,访问它的路径为http://localhost:8080/项目名/servlet/AServlet,那么request.getRequestDispatcher(“BServlet”)就相称于,转发或包含路径为http://localhost:8080/项目名/servlet/BServlet的Servlet。

以上两种书写办法中,以“/”开头的路径是绝对路径,不以“/”开头的路径是相对路径。
为了往后的开拓简便,建议大家采取第一种办法,即以“/”开头的路径。

3.重定向路径

进行重定向时,须要给出将要重定向的资源的路径,例如:

response.sendRedirect(“/Example/BServlet”),表示重定向到Example项目中的访问路径为“/BServlet”的Servlet。

重定向中的路径是客户端路径,只假如客户端路径都须要加上项目名,否则找不到将要访问的资源。
重定向路径有以下哀求:

l 路径要以“/”开头

以“/”开头,相对当前主机,即http://localhost:8080,以是路径上要加上项目名,如:response.sendRedirect(“/Example/Servlet”),对应的路径便是:http://localhost:8080/Example/Servlet。

4.页面中超链接和表单路径

页面中的超链接和表单路径和重定向路径一样,也是客户端路径,因此路径中要加上项目名。
例如:

Ø <form action=”/Example/AServlet”></form>

Ø <a href=”/Example/AServlet”></a>

如果超链接或者表单路径中没有加上项目名,如:<a href=”AServlet”>,并且没有以“/”开头,那么便是相对路径,相对付当前页面所在路径。
例如,超链接所在页面是index.jsp,那么index.jsp页面的路径便是:http://localhost:8080/项目名,超链接路径便是:http://localhost:8080/项目名/AServlet。
如果是这样就不存在问题,但是如果页面并不是在运用的根目录下,而是根目录下的一个目录中,例如html目录中,那么index.jsp的访问路径就该当是:http://localhost:8080/项目名/html,那么再利用<a href=”AServlet”>中的路径就会涌现问题,以是建议大家利用绝对路径。

5.ServletContext获取资源路径

ServletContext获取资源路径利用的办法是getRealPath(String path),该方法获取的是运用发布到Tomcat安装目录下的webapps目录中的根目录,如:servletContext.getRealPath(“/”)返回的路径便是D:\apache-tomcat-7.0.42\webapps\项目名。
详细内容请参考ServletContext读取web运用中的资源文件。