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,如需转载请自行联系原作者
上一篇:网络基础5


下一篇:C语言及程序设计进阶例程-18 链表中结点的插入和删除