码迷,mamicode.com
首页 > 编程语言 > 详细

JavaEE路径

时间:2020-04-12 23:03:41      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:dmi   path   app   代码   ppi   字符   报错   --   为什么   


相对路径与绝对路径

相对路径与绝对路径的区别(引用)
绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)。例如:C:\xyz\test.txt 代表了test.txt文件的绝对路径。http://www.sun.com/index.htm 代表了一个URL绝对路径。

相对路径:相对与某个基准目录的路径。包含Web的相对路径(HTML中的相对目录),例如:在Servlet中,"/"代表Web应用的根目录。和物理路径的相对表示,例如:"./"代表当前目录,"../"代表上级目录。(在同一路径下时, ./login.jsp==login.jsp)

jsp,servlet中的路径

servlet的url-pattern匹配规则
request.getContextPath()等
注意jsp,servlet中的各个参数是要path还是要url。

1. servlet配置url(参见url-pattern匹配规则)
两种方式:

@WebServlet("/loginServlet")//简写

<!-- servlet的映射配置 -->
<servlet-mapping>
    <!-- servlet的映射路径(访问servlet的名称) -->
    <url-pattern>/loginServlet</url-pattern>
</servlet-mapping>

Servlet类只能交给tomcat服务器运行,因此在获得url请求后,url会转化为可映射匹配的路径。

2. servlet forward

request.getRequestDispatcher("/userServlet").forward(request, response); 
request.getRequestDispatcher("/login.jsp").forward(request, response); 
//可以看出都是在根路径下,所以相当于
request.getRequestDispatcher("userServlet").forward(request, response); 
request.getRequestDispatcher("login.jsp").forward(request, response); 
//或
request.getRequestDispatcher("./userServlet").forward(request, response); 
request.getRequestDispatcher("./login.jsp").forward(request, response); 

问题1:为什么servlet不能直接写url?如request.getRequestDispatcher("http://localhost:8080/tmall/login.jsp").forward(request, response);
问题2:上述报错404,消息:/tmall/http://localhost:8080/tmall/login.jsp
报错的路径为啥自动加上根路径呢?

问题1解答:request.getRequestDispatcher()有这样的介绍:
参数类型:RequestDispatcher getRequestDispatcher(String path)
path介绍:The pathname specified may be relative, although it cannot extend outside the current servlet context. If the path begins with a "/" it is interpreted as relative to the current context root.
也就是说,getRequestDispatcher中的参数类型必须是路径。而url不是路径,url是网络地址。在http中,url表示为http://< host >:< port >/< path >。也就是说,例子中tmall/login.jsp才是路径。

这又产生了新的问题:path是不是可以写为tmall/login.jsp或者/tmall/login.jsp
答案:不能。tmall/login.jsp被解析为相对路径,那么根路径已经为/tmall;/tmall/login.jsp中第一个‘/‘还是被解析为根路径,所以两者的路径都会被理解为/tmall/tmall/login.jsp。

问题2解答:被理解为了相对地址,所以这样。

解答都是自己猜的 O(∩_∩)O

3. 得到路径

假定你的web application 名称为tmall,你在浏览器中输入请求路径:
http://localhost:8080/tmall/admin/index.jsp
则执行下面向行代码后打印出如下结果:
System.out.println(request.getContextPath());
打印结果:/tmall
System.out.println(request.getServletPath());
打印结果:/admin/index.jsp
System.out.println(request.getRequestURI());
打印结果:/tmall/admin/index.jsp

4. 其他

  • jsp的标识符
    action -> Attribute : action ; Data Type : URI
    file -> Attribute : file ; Data Type : URI
  • 文件路径
    如:D:\workspace.metadata\wtpwebapps\tmall,方向不一样。
    因为在字符串中存在转译的问题,所以:"D:\\workspace\\metadata\\wtpwebapps\\tmall"。
  • 关于import
    import 的作用以及import与#include区别
    刚开始还以为import后面也是某种地址,后面才知道是包名和类名(只有public类和接口才能被导入)。
  • WebContent下面的文件的上级目录是项目名,没有WebContent这一级。如:tmall/index.jsp。
    据老师说,是因为export->war->rar->解压后会发现文件路径是这样。

JavaEE路径

标签:dmi   path   app   代码   ppi   字符   报错   --   为什么   

原文地址:https://www.cnblogs.com/massizhi/p/12687775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!