jsp引入页面,即包含文件的两种方法介绍

简介: 最近在练手做一个小Demo中,比较多的用到了jsp引入另一个jsp的例子,感觉很简单,但是不幸出现了错误500,于是查找了一些资料来了解一下关于jsp包含的方法,这里分享出来,个人总结,可能不够完善,欢迎批评指正。 我们都知道在jsp中include有两种形式,分别是 :<%@ include file=”要引入的文件 ”%> ;<jsp:include pa

最近在练手做一个小Demo中,比较多的用到了jsp引入另一个jsp的例子,感觉很简单,但是不幸出现了错误500,于是查找了一些资料来了解一下关于jsp包含的方法,这里分享出来,个人总结,可能不够完善,欢迎批评指正。

我们都知道在jsp中include有两种形式,分别是 :<%@ include file=”要引入的文件 ”%> ;<jsp:include page=” 要引入的文件” flush=”true”/> 

前者是指令元素、后者是行为元素。

<%@ include file=”要引入的文件 ”%>

这种包含叫做静态包含,主页面不能够向被包含的页面传递参数,可以包含任意类型的文件,将包含文件的内容加载。也就是说,使用这种方法包含文件,它不管其内容如何,不过是静态页面还是动态页面都首先将页面的内容先加进来。

<jsp:include page=” 要引入的文件” flush=”true”/>

这种包含我们称为动态包含,表示的是包含页面可以向被包含的页面传递参数和变量。他的特点是能动态区别加进来的是动态页面还是静态页面,对于静态页面则直接将资源包含(仅取其文本),这个时候和上面的静态包含区别不大,而对于动态页面,如jsp页面,他会先执行后加载。

静态包含和动态包含各有各的特点,也有其分别适用的场景,只有真正理解了他们的不同,才能够更好的使用他们,对于静态包含,无论它要包含什么类型的文件,它都是要先加载进来,然后合并之后再去被编译,换言之,对系统而言,他们属于一个页面,只被编译一次。我们知道,jsp页面不能原封不动地被传送给浏览器,所有的jsp元素都必须首先由服务器进行处理。这是通过将jsp页面转达化成servlet,然后执行这个servlet来完成的。服务器需要一个jsp容器来处理jsp页面。jsp容器通常以servlet的形式来实现,这个servlet经过配置,可以处理对jsp页面的所有请求。

这里举一个简单的小例子来说明一下

首先写一个主页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>jsp中包含的用法</title>
  </head>
  
  <body>
    <h3>include用法</h3>
    <%@ include file="beIncluded.jsp" %>
  </body>
</html>
被包含页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>被引入界面</title>
  </head>
  
  <body>
    这是被引入界面的内容
  </body>
</html>
运行include.jsp后出现的界面如下:

可以看到它已经被成功的包含进去了,我们打开tomcat编译后的class文件夹下面可以看到:

编译之后,被包含文件beIncluded文件找不到被编译之后的class文件,而是随包含文件一起被编译了。

现在我们使用动态包含,<jsp:include page="beIncluded.jsp" flush="true"/>,其余代码不变,执行,打开编译后的class文件下我们可以看到,

我们可以看到,动态包含对于系统来说,他们不属于一个页面,而是要被编译两次,产生两个class编译文件,它是先被编译执行之后,然后才被包含进去。明白了这一点,我们就能很好的把握这两种包含方法了。
例如,对于静态方法,由于它是先被包含后被编译,所以,我们可以把参与静态包含的页面理解为一个页面,这时他的编码统一问题,例如出现错误500,可能是<%@ page language=”java” contentType=”text/html;charset=UTF-8%>这句被加载了两次,这时我们可以直接删除被包含页面的这句代码。例如出现无法编译,重复定义错误等情况,可能是两个页面有定义相同的方法名或变量,如:

包含页面:

<%String name="熊九天" ;%>
    <%@ include file="beIncluded.jsp" %>
    <%=name %>
被包含页面:

<%String name="大熊" ;%>
    <%=name %>
name重复,就会出现错误,而对于动态包含方法,这点可以不用考虑,因为它是先进行编译后进行合并。

总之,理解他们底层原理之后,进行页面的包含,出现例如编码乱码,重复定义等错误之后我们可以很轻松的搞定,合理使用包含方法也会使我们事半功倍。



目录
相关文章
|
2月前
|
Java 应用服务中间件 开发工具
如何使用IDEA创建JSP页面
如何使用IDEA创建JSP页面
158 0
|
4月前
|
Java 数据安全/隐私保护
JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
该博客文章通过JavaBean组件和JSP动作元素`<jsp:forward>`与`<jsp:param>`的使用示例,演示了用户登录流程,包括登录信息的提交、验证以及根据验证结果进行的页面跳转。
JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。
|
7月前
|
自然语言处理 Java 数据库连接
掌握JSP页面编程:动态生成Web内容
【4月更文挑战第3天】Java Server Pages (JSP) 是一种用于创建动态Web内容的Java技术,它结合HTML并允许在页面中嵌入Java代码。JSP支持代码片段、表达式语言(EL)和JSTL标签库,简化动态内容生成。当服务器接收到请求时,执行JSP中的Java代码并将结果嵌入HTML返回给客户端。示例展示了如何显示当前日期和时间。JSP可与Servlet、JavaBeans、数据库等结合,用于构建功能丰富的交互式Web应用。
146 5
掌握JSP页面编程:动态生成Web内容
|
4月前
|
存储 Java
JSP中实现留言页面的编写并将留言信息展示出来
这篇文章介绍了如何在JSP中编写留言页面,并通过JavaBean类存储用户留言信息,同时展示了留言信息的展示方法。
JSP中实现留言页面的编写并将留言信息展示出来
|
4月前
|
缓存 Java 应用服务中间件
SpringMVC入门到实战------七、SpringMVC创建JSP页面的详细过程+配置模板+实现页面跳转+配置Tomcat。JSP和HTML配置模板的差异对比(二)
这篇文章详细介绍了在SpringMVC中创建JSP页面的全过程,包括项目的创建、配置、Tomcat的设置,以及如何实现页面跳转和配置模板解析器,最后还对比了JSP和HTML模板解析的差异。
SpringMVC入门到实战------七、SpringMVC创建JSP页面的详细过程+配置模板+实现页面跳转+配置Tomcat。JSP和HTML配置模板的差异对比(二)
|
4月前
|
Java
`<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
该博客文章讲解了JSP中`<jsp:getProperty>`和`<jsp:setProperty>`动作的使用方法,包括它们的语法格式和如何在页面中使用这些动作来获取和设置JavaBean对象的属性值,并通过图书信息的填写和展示示例进行了演示。
`<jsp:getProperty>`动作和`<jsp:setProperty>`动作的使用在一个静态页面填写图书的基本信息,页面信息提交给其他页面,并且在其页面显示。要去将表单元素的值赋值给Java
|
4月前
|
Java
编写一个jsp页面,利用Scriptlet编写一段计算代码,要求用零作为除数,并使用page指令将错误信息显示在另外一个jsp页面,产生的错误信息为“错误,不能用0做除数”
该文章展示了如何创建一个JSP页面,使用Scriptlet编写包含除零操作的计算代码,并配置page指令将错误信息重定向至另一个JSP页面进行显示。
编写一个jsp页面,利用Scriptlet编写一段计算代码,要求用零作为除数,并使用page指令将错误信息显示在另外一个jsp页面,产生的错误信息为“错误,不能用0做除数”
|
6月前
|
Java
JSP 教程 之 JSP 页面重定向 2
JSP页面重定向使用`response.sendRedirect()`或设置状态码和`Location`头来实现。简单示例展示如何将用户重定向至百度首页。保存代码到PageRedirecting.jsp,访问即生效。
59 3
|
6月前
|
Java
JSP 教程 之 JSP 页面重定向 1
JSP教程讲解了如何进行页面重定向,主要使用response对象的sendRedirect()方法,例如:`response.sendRedirect(&quot;http://www.baidu.com&quot;)`。此外,也可结合setStatus()和setHeader()方法实现相同功能,如:设置状态码为临时移动(SC_MOVED_TEMPORARILY)并设定Location头为指定URL,以引导浏览器访问新位置。
51 2
|
6月前
|
Java
杨校老师课堂之Html页面快速转为jsp页面之工具类【简直太简单好用】
杨校老师课堂之Html页面快速转为jsp页面之工具类【简直太简单好用】
32 0

相关课程

更多