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

以下来自一个初学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. 表单提交与超链接跳转

daf89ab73041b3115bd737f80f596977.png

29b135c1057255dfd25e741081217742.png

55b58e1558387bc9c7630e1747234f38.png

一:交由servlet处理

相对路径:

绝对路径:

注意:Res2必须是url-pattern中定义的映射值,不是类名

若相对地址是该项目目录时,action="Res2"

这里绝对不能加斜杠

二:交由jsp/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

所以,加不加“/”都是一样的。

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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值