这是主页面index.jsp:<%@ page language="java" contentType="text/html; charset=GBK" pageEncoding="GBK"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title></head>
<body>
<%@include file="WEB-INF/utility/foot.jsp"%>
</body>
</html>这是被包含的foot.jsp文件:<%@page language="java" pageEncoding="GBK" contentType="text/html; charset=GBK"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>页脚</title>
</head>
<body>
<div id="footer">
<div id="link">
<ul>
<li><a href="#">友情链接:</a></li>
<li><a href="#" title="" target="_blank"></a></li>
</ul>
</div>
<div style="clear: both;"> </div>
<p align="center">Tbin 版权所有 <a href="admin/login.jsp">管理登录</a></p>
</div>
</body>
</html>
问题:
1、一个jsp页面中不是只能有一个pageEncoding指令,一个contentType指令吗?为什么我采用include指令包含的foot.jsp包含这两个指令时,却不会出错?
2、一个jsp只能有一个<html>、<body>、<head>标签,无论采用include指令还是采用jsp:include动作不是都只能包含在被插入的地方需要标签,而不能再包含<html>、<body>、<head>标签了。为什么我这里也同样没有报错?
3、我采用的是Eclipse开发环境。
请各位知情人士解答,谢谢
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title></head>
<body>
<%@include file="WEB-INF/utility/foot.jsp"%>
</body>
</html>这是被包含的foot.jsp文件:<%@page language="java" pageEncoding="GBK" contentType="text/html; charset=GBK"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>页脚</title>
</head>
<body>
<div id="footer">
<div id="link">
<ul>
<li><a href="#">友情链接:</a></li>
<li><a href="#" title="" target="_blank"></a></li>
</ul>
</div>
<div style="clear: both;"> </div>
<p align="center">Tbin 版权所有 <a href="admin/login.jsp">管理登录</a></p>
</div>
</body>
</html>
问题:
1、一个jsp页面中不是只能有一个pageEncoding指令,一个contentType指令吗?为什么我采用include指令包含的foot.jsp包含这两个指令时,却不会出错?
2、一个jsp只能有一个<html>、<body>、<head>标签,无论采用include指令还是采用jsp:include动作不是都只能包含在被插入的地方需要标签,而不能再包含<html>、<body>、<head>标签了。为什么我这里也同样没有报错?
3、我采用的是Eclipse开发环境。
请各位知情人士解答,谢谢
我刚用html网页测试了一下,在body里面包含html等确实是没有错,但是上面那篇文章讲解的,以及很多有关@include和jsp:include区别的文章中讲解的,怎么跟这里实际看到的却不一样?难道Tomcat的版本问题?
<%@ include file=” ”%>,jsp的include指令元素读入指定页面的内容。并把这些内容和原来的页面融合到一起。(这个过程是在翻译阶段:也就是jsp被转化成servlet的阶段进行的。)
<%@page language="java" pageEncoding="GBK" contentType="text/html; charset=GBK"%>
最好每个页面都加上,这是供JAVA编译器解析页面时设定页面编码什么的,不加有可能中文会乱码。
不是jsp不报错,而是你把子jsp放在了WEB-INF下,外层jsp无法访问到,也就是说,这部分内容根本没被加进来,“显得”没有报错而已。如果你把它拿出来你试试?!至于你说的想实现保护机制,不被用户非法访问,你这种方法是无法做到的。因为你的外层JSP是放在WEB-INF外面的,除非你有专门的过滤器、拦截器处理,否则这里的东西是畅通无阻的。现在的效果就是:子jsp的内容根本没被加进来。看起来是实现保护了,实际上是因为什么东西也没有。有权限的客户也无法看到问题2:
jsp只能有一对html标签。这个结论本身就是错的。JSP是什么?嵌入了java代码的普通HTML文档,或者一个HTML文档直接改为jsp后缀。而HTML的语法检查是很松散的,不像XML那样有专门的DTD来约束。只要里面的java代码符合java语法,HTML的格式也好,语法也罢,都不会影响jsp。只不过,你用myeclipse编辑,可能会出现警告。这样的jsp也是不符合w3c的标准,无法兼容不同浏览器而已。
我之所以将子页面还有错误处理页放在WEB-INF中,是因为不想让客户端直接通过URL进行非法盗链,而只能由我外层的jsp页面进行引用或者跳转过去,这是可以做到的吧?为什么说做不到呢?
其实我只是初学者,还有很多问题很迷糊,希望高手解惑