2、由服务器发起的路径,“/”表示项目中的Webroot根目录 路径应该怎么写 ? 上面的/代表的是被解析完成后路径的第一个/ 把所有非字符串的的东西全部转化为字符串后,才开始解析第一个/ 例如:<a href="<%=request.getcontextpath()%>/Test3Servlet"> 里面有方法,全部转化为字符串后为"/shipin/Test3Servlet" 然后开始解析/ 如上,这里/应该被解析为web站点的跟目录即http://localhost:8080/ ,解析完后即为完整的url,http://localhost:8080/shipin/Test3Servlet, 正确理解web各个场景路径的/的含义后 该怎么判断写的路径对不对: 步骤:1.把你写的路径当中所有非字符串(例如函数)的东西都转化为字符串 2.按照上文中,/到底代表什么,把第一个/解析替换出来 3.判断最终的解析结果是不是一个完整正确的工程目录,完整正确的工程目录应该是:htttp://localhost:8080/工程名/文件的完整目录(包括文件夹)例:若目标Jsp文件在webContent目录下的Get文件夹下,则正确路径为:htttp://localhost:8080/ship/Get/login.Jsp web应用中的“绝对路径”是指相对于工程根目录的路径 request.getcontextpath()可获得 此时的路径在工程目录下,例:/shipin 相对路径是指,相对于一个文件或文件夹的路径 设当前文件(即代码执行到哪个文件)为a.Jsp,相对路径的作用范围: 若c.Jsp处于与当前文件同一级目录:c.Jsp 若c.Jsp处于与当前文件同一级目录的文件夹下:/文件夹名/c.Jsp 若c.Jsp处于与当前文件上一级目录:../c.Jsp 最好写绝对路径getcontextpath() + 具体文件相对于工程的文件夹路径,不容易出错。 绝对路径的反例: 把所有非字符串的的东西全部转化为字符串后,才开始解析第一个/,,非常重要,举个反例,request.getRequestdispatcher(request.getcontextpath()+"/Test3Servlet").forward(request,response); 此例咋一看没啥问题,但是,先来看,把非字符串转化字符串后:/shipin/Test3Servlet,然后解析/,这是转发,/应该被解析为:/shipin/,然后最终路径就变成了:/shipin/shipin/Test3Servlet,只要/还可以解析,就会向上解析,最终变成了http://localhost/8080/shipin/shipin/Test3Servlet,显然这是错误的。这里就不能加上request.getcontextpath(),只要request.getRequestdispatcher("/Test3Servlet").forward(request,response); 则/Test3Servlet被解析为/shipin/Test3Servlet,然后/shipin/Test3Servlet又被解析为http://localhost/8080/shipin/Test3Servlet. 相对路径的反例: 从一个a.Jsp提交请求到personServlet再转发到b.Jsp,当到了personServlet时,此时的当前文件就是personServlet,所以要以personServlet为当前目录去定位b.Jsp,即便a.Jsp和b.Jsp在同一目录下,也不能就写:b.Jsp,而要写相对于personServlet的路径。而写绝对路径就没问题,顾名思义,绝对定位,不是相对的。 总结
以上是内存溢出为你收集整理的web中“/”写在不同地方时的值不同全部内容,希望文章能够帮你解决web中“/”写在不同地方时的值不同所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)