Struts学习(七):说说相对路径

简介:

        从刚开始接触Tomcat开始,就被繁杂的相对路径给弄晕了,尽管最后每次都能正确的匹配上,但是总觉得不是很顺畅,一直试图找出一条匹配的规则出来,但是每每总结出一条来的时候,总是又被新的“事实”给颠覆,让人不胜烦恼,因此决定有一点写一点。

通常相对路径的写法有两种,一种就是以“/”开头,一种就是不以“/”开头,这两种写法有什么区别呢,下面举例阐述一下。

现在的Web环境是一个Struts2的应用,我的应用名是Struts,应用程序所在的目录名也是Struts。这样我的url基本是以http://localhost/Struts开头的啦。现在做如下测试:

1.在Struts目录下面有一个文件叫sayHello.jsp,它里面的form的action的值是HelloWorld.action,那么提交之后匹配的路径是http://localhost/Struts/HelloWorld.action

2.如果action的值是test/HelloWorld.action,那么提交之后匹配的路径是http://localhost/Struts/test/HelloWorld.action

3.假设在Struts目录下面有一个子目录add,它里面有一个文件叫sayHello.jsp,它里面的form的action的值是HelloWorld.action,那么提交之后匹配的路径是http://localhost/Struts/add/HelloWorld.action

4.在测试3下将action的值改为test/HelloWorld.action,那么提交之后匹配的路径是http://localhost/Struts/add/test/HelloWorld.action

5.在测试3下将action的值改为/HelloWorld.action,那么提交之后匹配的路径是http://localhost/Struts/ HelloWorld.action。

6.在测试3下将action的值改为/test/HelloWorld.action,那么提交之后匹配的路径是http://localhost/Struts/ test/HelloWorld.action。

总结:在页面文件中,所请求的相对路径为path,那么它的路径匹配是从文件当前所在的目录开始的,假设页面文件当前所在目录为curr,那么匹配后的完整路径就是http://localhost/Sturts/curr/path;如果相对路径为/aa/bb/cc,那么匹配后的路径就是http://localhost/Sturts/path。也就是说,如果以“/”开头,就从当前应用的根目录开始匹配,如果不以“/”开头就从当前文件所在的目录开始匹配。这样的话,如果文件本来就在根目录下面,那么加“/”和不加“/”就没啥区别了。

在Struts2还一个要匹配路径的地方就是在处理完请求之后对页面进行分发的时候,也就是result元素里面的内容。测试记录如下:

1.<result>/HelloWorld.jsp</result>。匹配的路径是http://localhost/Struts/HelloWorld.jsp

2.<result>HelloWorld.jsp</result>。这个时候就和调用这个action的路径相关了。可以这样进行匹配,首先得到请求这个action的url,然后去掉最后一个“/”后面的内容,再把HelloWorld.jsp接上去即可。例如,我们是通过http://localhost/Struts/aa//bb/cc/HelloWorld.action调用的action,那么匹配出来的url就是http://localhost/Struts/aa//bb/cc/HelloWorld.jsp










本文转自 646676684 51CTO博客,原文链接:http://blog.51cto.com/2402766/569981,如需转载请自行联系原作者
目录
相关文章
|
监控 算法 前端开发
减少文件大小优化性能,你的姿势对吗?
优化文件体积需要理想与现实的搭配。这可是一门数字艺术,要找到最佳平衡点。 所以,让我们一同探讨:减少文件体积的姿势
318 0
|
消息中间件 弹性计算 物联网
MQTT常见问题之发布MQTT主题消息失败如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
数据采集 监控 Oracle
ERP系统的实施与变更管理:确保成功的数字化转型
【7月更文挑战第29天】 ERP系统的实施与变更管理:确保成功的数字化转型
692 0
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在自然语言处理中的突破与未来展望###
本文深入探讨了深度学习技术在自然语言处理(NLP)领域的最新进展,重点分析了其在该领域实现的重大突破及面临的挑战。通过对比传统方法与深度学习模型的差异,阐述了深度学习如何推动NLP领域的边界拓展,并对未来发展趋势进行了展望。 ###
|
弹性计算 Java 微服务
Seata常见问题之客户端集成了seata 注册会报错如何解决
Seata 是一个开源的分布式事务解决方案,旨在提供高效且简单的事务协调机制,以解决微服务架构下跨服务调用(分布式场景)的一致性问题。以下是Seata常见问题的一个合集
|
负载均衡 API 微服务
深入浅出:使用Python构建微服务架构
本文旨在为读者提供一个清晰、易懂的指南,介绍如何使用Python语言构建微服务架构。微服务架构作为一种现代软件开发实践,能够提高大型应用的可维护性和可扩展性。通过本文,我们将探索微服务的基本概念、优势以及如何利用Python的强大生态系统进行微服务的设计与实现。我们会通过一个简单实例,演示从零开始构建微服务的全过程,包括服务的划分、通信机制、以及如何利用容器技术(如Docker)进行部署。此外,文章还将讨论在微服务架构下的常见挑战和最佳实践,旨在为读者提供一份全面而深入的实用指南。
|
JavaScript
vue element-ui [Vue warn]: Invalid prop: custom validator check failed for prop “index“.
vue element-ui [Vue warn]: Invalid prop: custom validator check failed for prop “index“.
461 0
vue element-ui [Vue warn]: Invalid prop: custom validator check failed for prop “index“.
|
SQL DataWorks 大数据
3.DataWorks 调度参数配置|学习笔记
快速学习3.DataWorks 调度参数配置
3.DataWorks 调度参数配置|学习笔记
|
Unix C语言 iOS开发
C++cin,cout以及常见函数总结,cin,cout格式化控制
C++cin,cout以及常见函数总结,cin,cout格式化控制
C++cin,cout以及常见函数总结,cin,cout格式化控制