|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。js|servlet
路径形态测试
目标
测试jsp之间相互跳转,servlet跳转jsp情况下相对路径和绝对路径的形态
寻觅出一种通用的办理举措
资本
打成的WAR包
MyWAR
构成文件
JSP
a.jsp
b/
b.jsp
ccc.jsp
Servlet
TestServlet.javamapping:/layer1/layer2/TestServlet
流程形貌
1.由a.jsp间接跳转到b.jsp
或
由a.jsp提交到TestServlet,TestServlet依据a的提交选择响应跳转体例(forward/sendRedirect)
然后跳转到b.jsp
2.b.jsp包括一系列超链,来显现分歧体例的跳转后超链的情形
/a.jsp
../a.jsp
../../a.jsp
../../../a.jsp
ccc.jsp
/b/ccc.jsp
../ccc.jsp
../b/ccc.jsp
../../ccc.jsp
../../b/ccc.jsp
../../../ccc.jso
../../../b/ccc.jsp
[contextPath]/b/b.jsp
测试了局
短语交换
http://localhost:8080/=>ip/
/MyWAR/=>war/
http://localhost:8080/MyWAR/=>ip/war/
/MyWAR=>[contextPath](request.getContextPath())
跳转体例间接跳转<a..>servlet/forwardservlet/sendRedirect
requestDispatcher.forwardresponse.sendRedirect
---------------------+---------------------+----------------------------------+------------------------
servlet中跳转的路径x/b/b.jsp/war/b/b.jsp
---------------------+---------------------+----------------------------------+------------------------
跳转后扫瞄器的地点栏ip/war/b/b.jspip/war/layer1/layer2/TestServletip/war/b/b.jsp
---------------------+---------------------+----------------------------------+------------------------
b.jsp中的链接列表扫瞄器形态条呈现的链接地点
<ahref="这里的形貌"
---------------------+---------------------+----------------------------------+------------------------
/a.jspip/a.jspip/a.jspip/a.jsp
../a.jspip/war/a.jspip/war/layer1/a.jspip/war/a.jsp
../../a.jspip/a.jspip/war/a.jspip/a.jsp
../../../a.jspip/a.jspip/a.jspip/a.jsp
ccc.jspip/war/b/ccc.jspip/war/layer1/layer2/ccc.jspip/war/b/ccc.jsp
/b/ccc.jspip/b/ccc.jspip/b/ccc.jspip/b/ccc.jsp
../ccc.jspip/war/ccc.jspip/war/layer1/ccc.jspip/war/ccc.jsp
../b/ccc.jspip/war/b/ccc.jspip/war/layer1/b/ccc.jspip/war/b/ccc.jsp
../../ccc.jspip/ccc.jspip/war/ccc.jspip/ccc.jsp
../../b/ccc.jspip/b/ccc.jspip/war/b/ccc.jspip/b/ccc.jsp
../../../ccc.jspip/ccc.jspip/ccc.jspip/ccc.jsp
../../../b/ccc.jspip/b/ccc.jspip/b/ccc.jspip/b/ccc.jsp
[contextPath]/b/b.jspip/war/b/b.jspip/war/b/b.jspip/war/b/b.jsp
---------------------+---------------------+----------------------------------+------------------------
总结
由下面的列表看出,只要最上面一行是有实践意义并且不管以任何体例跳转链接地点都是准确无误的
1.在jsp中的“/”暗示的根为“ip”,不包括WAR路径
2.在servlet中以forward体例利用的“/”暗示的根为“ip/war/”,包括了WAR路径
3.在servlet中以sendRedirect体例利用的“/”暗示的根为ip,不包括WAR路径
4.在servlet中以forward体例跳转,则扫瞄器的地点栏仍旧为此servlet,不会改动
5.在servlet中以sendRedirect体例跳转,则扫瞄器的地点栏改动为目标路径
6.绝对路径切实其实定是以扫瞄器的地点栏显现的路径为基准的,而非详细的目次布局,以是
跳转到同目次下的某个页面利用<ahref="文件名">link</a>这类体例不是永世建立的
(做asp的人不要惊奇,这里说的jsp和servlet:))
7.为了不jsp跳jsp,servlet跳jsp,forward体例跳转,sendRedirect跳转发生的路径成绩,
关于jsp和利用sendRedirect跳转的servlet,接纳间接利用带
容器路径[Stringrequest.getContextPath()]的相对路径就能够完全办理,即:
1)<%
StringcontextPath=request.getContextPath();
Stringurl=contextPath+"/user/login.jsp";
%>
<ahref="<%=url%>">login</a>
2)....
StringcontextPath=request.getContextPath();
StringtargetPath=contextPath+"/user/login.jsp";
RequestDispatcherrd=request.getRequestDispatcher(targetPath);
rd.forward(request,response);
......
关于利用forward跳转的servlet,则不要加容器路径,不然就反复呈现容器路径,缘故原由拜见2
8.假如利用的“../”过量也不会呈现严峻成绩,“../”最多使链接抵达“ip/”
9.别的,在利用
<jsp:includepage="url"flush="true"/>
<%@includefile="url"%>
<%@pageerrorPage="url"%>时,
这里url利用的“/”暗示的根为“ip/war/”,包括了WAR路径
还有就是总有人问我到底该学习什么语言,什么语言有前途,那么我的回答是不论是C,C++,java,.net,ruby,asp或是其他语言都可以学,编程的关键不是语言,而是思想。 |
|