关于转发、重定向、表单提交、超链接跳转路径分析

来源:互联网 发布:沃尔玛数据流程图 编辑:程序博客网 时间:2024/06/07 02:38
以下来自一个初学JAVA2个月的菜鸟个人见解,求大神指点
一切参考这4点为基准
一: 首先必须明确,这里的目录路径关系,都是基于Tomcat目录下的,跟工作区的文件目录毫无关系

二:相对路径与绝对路径的准确定位
必须弄清相对的是哪一个路径
相对的是原请求的地址
比如说原求请求地址为http://127.0.0.1:8080/WEB02/TS/index.html
相对的就是 http://127.0.0.1:8080/WEB02/TS/

必须弄清哪个是绝对路径!
绝对地址:web服务器本身地址http://localhost:8080

三:区分哪种形式代表相对路径,哪种代表绝对路径
区分 绝对路径 与 相对路径(是否以“/”开头)
四:servlet类默认直接位于项目目录第一级下
------------------------------------------------------------------------------------------
1. 表单提交与超链接跳转



一:交由servlet处理
相对路径: <form action="../Res2">
绝对路径: <form action="/WEB02/Res2">
注意:Res2必须是url-pattern中定义的映射值,不是类名
若相对地址是该项目目录时,action="Res2"
这里绝对不能加斜杠

二:交由jsp/html文件处理
相对路径: <form action="test.html">
<form action="../hello.html">
绝对路径: <form action="/WEB02/TS/test.html">
<form action="/WEB02/hello.html">

超链接的机制与此是相同的(已验证)
------------------------------------------------------------------------------------------
2. 请求转发与重定向
参考第四点以及第二点,所以对于servlet的转发和重定向的相对的路径 都是
http://localhost:8080/项目名

重定向:
参数可以指定为相对路径绝对路径web应用程序(跨资源)

  ①相对路径:response.sendRedirect("Manager/index.jsp")
生成的地址:相对的路径+参数 生成完整的URL即:
http://localhost:8080/项目名/Manager/index.jsp 
                                   
        ②绝对路径:response.sendRedirect("/Manager/index.jsp")
           生成的地址:web服务器本身地址+参数生成完整的URL  即:
           http://localhost:8080/Manager/index.jsp
                                
      ③其他web应用地址(跨资源)
response.sendRedirect("http://127.0.0.1:8080/WEB01/MyFirstServlet");
该response属于WEB02中,可以实现跨项目
  response.sendRedirect("http://www.baidu.com")
            容器直接定向到该URL
                      
转发:
           参数可以指定为相对路径绝对路径
             ①相对路径                                                    
             相对路径情况下生成的完整URL与重定向方法相同。                             
                     
②绝对路径
            绝对路径与重定向不同,容器将相对于Web应用的根目录加参数生成完整的URL
            生成的地址:  原来请求地址+参数生成完整的URL  即:
            http://localhost:8080/项目名/Manager/index.jsp
            转发用相对路径和绝对路径地址都一样。

ServletContext.getRequestDispatcher(UrlString)
参数只能指定为绝对路径,生成的完整URL与
HttpServletRequest.getRequestDispatcher(String)相同。

---------------------------------------------------------------------------------------
3. ServletContext
getRealPath(String path)
getResource(String path)
这两个方法都不存在相对路径与绝对路径的概念
方法的参数,规定了必须是相对路径,无所谓参数是否以“/”开头,默认将其当做相对路径来处理,并且指定了具体相对于哪个路径,参考笔记servlet体系详解-->上下文

代码解释
String realPath = this.getServletContext().getRealPath("/WEB02/hello.html");
System.out.println(realPath);
输出结果 E:\Tomcat-7\apache-tomcat-7.0.52\webapps\WEB02\WEB02\hello.html
所以,加不加“/”都是一样的。

------------------------------------------------------------------------------------------

原创粉丝点击