再说<%@ include file=""%>静态包含和<jsp:include page=” ”>动态包含区别之前要明白两个概念
jsp翻译阶段:
我们知道,jsp页面不能原封不动地被传送给浏览器,所有的jsp元素都必须首先由服务器进行处理。这是通过将jsp页面转达化成servlet,然后执行这个servlet来完成的。服务器需要一个jsp容器来处理jsp页面。jsp容器通常以servlet的形式来实现,这个servlet经过配置,可以处理对jsp页面的所有请求。
Jsp容器负责将jsp页面转化成servlet(称为jsp页面实现类JSP Page implementation class),并编译这个servlet。这两步就构成了翻译阶段.
jsp请求处理阶段:
Jsp容器除了上面提到的负责将jsp页面转化成servlet外,还负责调用jsp页面实现类以处理每个请求并产生应答.这个阶段我们就称为请求处理阶段.请求处理阶段仅执行类文件
这两个概念对于我们的问题有什么关系呢,接着来分析
现在有两个页面a.jsp ,b.jsp.
a.jsp代码:
<%@page contentType="text/html;charset=GBK"%>
this is aa.jsp
<%@ include file ="bb.jsp"/>
b.jsp代码:
<%@page contentType="text/html;charset=GBK"%>
<%
String name="我是bb.jsp页面。";
%>
<%=name%>
a.jsp中包含如下
<%@ include file="b.jsp"%>此方法涉及jsp翻译阶段的概念,jsp的翻译阶段的概念我理解再一步就能表示编译阶段执行,此时把b.jsp编译好的程序融合到a.jsp中这时就出现了完整a.jsp在我们tomcat下的临时文件下你根本找不到b.java的影子,因为已经存放到a.java中了。
<jsp:include page=”b.jsp”>了此方法涉及jsp的请求处理阶段的概念,说白了我理解就是表示程序的运行阶段调用,a.jsp和b.jsp编译好在tomcat临时文件中生成类似a.java和b.java后在当请求调用后引用独立的b.java文件。无论a.jsp还是b.jsp都是独立存在的但对于中文都要进行解析如果不设置将会出现错误。
扩展说明:对于上面两个页面我们我们还要说明一个乱码问题,如果b.jsp中涉及中文字符我们就会出现乱码问题
例如:如果上面两段代码将会出现如下错误:
HTTP Status 500 ?
org.apache.jasper.JasperException: /date.jsp(0,0) Page directive: can't have multiple occurrences of contentType
解决:在b.jsp页面中删除字符集%@page contentType="text/html;charset=GBK"%
代码即可。
(说明:在tomcat中兼容性较好,一半不会报错,但是在weblogic中就会报错。)
如果采用<jsp:include page="b.jsp"/>那么b.jsp中如果没有
%@page contentType="text/html;charset=GBK"%
这段代码,那么将会出现如下错误:
this is aa.jsp ????bb.jsp?????? 乱码
解决:保证b.jsp中也有<%@page contentType="text/html;charset=GBK"%>代码。
分享到:
相关推荐
在JavaServer Pages (JSP) 技术中,`<jsp:include>` 和 `<%@ include %>` 是两个用于页面组合的指令,它们虽然都用于将一个或多个文件的内容插入到主页面中,但它们的工作机制和使用场景有所不同。理解这两者的区别...
在JSP中有两种不同的`include`用法:`<%@ include file="..." %>` 和 `<jsp:include page="..." flush="true"/>`。这两种方式虽然都可以达到将一个页面包含进另一个页面的效果,但它们在执行时间和引入内容方面存在...
JSP 中的 Include 有两种用法,分别是 `<%@ include file=” ”%>` 和 `<jsp:include page=” ” flush=”true”/>`。这两种用法都可以用于引入其他 JSP 文件,但是它们之间存在着一些关键的区别。 首先,让我们...
<td height="277" align="center" valign="top"><%@include file="changxiao.jsp"%></td> </tr> </table> <br> <table width="208" height="356" border="0" cellpadding="0" cellspacing="0" background=...
<%@ page language="java" contentType="text/html; charset=gb2312"%> <html> ... <tr ><td colspan="2"><%@ include file="view/AdminEnd.jsp" %></td></tr> </table> </center> </body> </html>
nt test</title></head><body>This content is statically in the main JSP file.<br/><jsp:include page="included.html"/></body></html>]]>)正如你所见,清单2使用了传统的`<%@include file="..."%>`伪指令来包含...
<%@ include file="../common/header.jsp" %> ``` - **页面实际内容**: ```jsp <%--页面实际内容 --%> <p>本实例向您展示了使用 include 指令的方法!</p> ``` - **包含页脚文件内容**: ```jsp <%--包含...
<jsp:include page="page.jsp" flush="true"/> ``` **示例**: ```jsp <jsp:include page="header.jsp" flush="true"/> ``` #### jsp:plugin 动作 jsp:plugin 动作用于在Web页面中嵌入Java Applet或其他Java插件。 ...
- `<jsp:include page="header.jsp" />` 和 `<jsp:include page="footer.jsp" />` 会在运行时动态加载`header.jsp`和`footer.jsp`的内容。 - 这种方式称为动态包含,因为包含的动作是在运行时发生的,而不是在编译时...
根据提供的文件信息,本篇文章将围绕“在JSP页面中包含文件”的主题展开,深入探讨JSP中的两种主要包含机制:`jsp:include`动作标签与`<%@ include %>`指令,以及它们在实际开发中的应用场景。 ### JSP页面中的文件...
`<%@ include file="relativePathToFile.jsp" %>` 这将在编译时将指定的文件内容合并到当前JSP页面中。这与JSP的`<jsp:include>`动作元素不同,后者是在运行时动态地包含页面内容。 理解并正确使用JSP指令是成为一...
<%@ include file="conn.jsp"%> <% sql="select * from users where name='"+name+"' and password='"+password+"'"; ResultSet rs =statement.executeQuery(sql); if (rs.next()) { disable=rs.getBoolean(...
<%@ include file="date.jsp" %> </font> </body> </html> ``` 其中,`date.jsp`的内容为: ```jsp <%@ page import="java.util.*" %> <%=(new java.util.Date()).toLocaleString()%> ``` 当页面加载时,`date.jsp`...
<%@ include file="check.jsp"%> <html> <frameset rows="15%,*"> <frame name="top" src="top.jsp" frameborder="1" bordercolor="#FFCCCC"> <frameset cols="30%,*"> <frame name="left" src="left....
本篇文章将重点解析JSP中的三种主要指令:`<@page>`, `<%@include>` 和 `<%@taglib>`。 1. `<@page>`指令: 这个指令是用在页面级别,用于设置整个JSP页面的属性和行为。例如,你可以指定页面的字符编码、错误页面...
- **动态包含**:`<jsp:include page="uri" flush="true">`,支持参数传递,例如`<jsp:param name="paramName" value="paramValue">`。 **JSP示例**:创建一个9x9的乘法表格: ```jsp <%@ page language="java" ...
- 示例:`<%@ page import="java.io.*" %>`, `<%@ include file="header.jsp" %>` 3. **动作语法(ACTION)**:用于执行特定的操作,如重定向、获取bean属性等。 - 示例:`<jsp:forward page="next.jsp" />`, `<jsp:...
4. **包含指令**:`<%@include file="...."%>`,静态地包含其他文件内容,不进行翻译,适合于复用页面元素。 5. **JSP指令**:`<%@ ... %>`,如`<%@page import="..."%>`用于导入包,`<%@page contentType="text/...
Web开发期末考试试题知识点总结 在本次考试中,我们将涵盖Web开发的多个方面,包括服务器端脚本语言、Web项目目录结构、Web架构、...2. 将date.jsp页面内容以include指令方式进行调用:<%@ include file="date.jsp" %>