JSP面试题都在这里(一)

简介: 下面是我整理下来的JSP知识点:

1.jpg

图上的知识点都可以在我其他的文章内找到相应内容。

JSP常见面试题

jsp静态包含和动态包含的区别

jsp静态包含和动态包含的区别

  • 在讲解request对象的时候,我们曾经使用过request.getRequestDispatcher(String url).include(request,response)来对页头和页尾面进行包含
  • inclue指令也是做这样的事情,我们来试验一下吧!
  • 这是页头

这是页尾

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>页尾</title>
    </head>
    <body>
    我是页尾
    </body>
    </html>

在1.jsp中把页头和页尾包含进来

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>包含页头和页尾进来</title>
    </head>
    <body>
    <%@include file="head.jsp" %>
    <%@include file="foot.jsp" %>
    </body>
    </html>

访问1.jsp

2.jpg

include指令是静态包含。静态包含的意思就是:把文件的代码内容都包含进来,再编译!,看一下jsp的源代码就知道了!

3.jpg

  • 上面已经提及到了,include指令是静态包含,include行为是动态包含。其实include行为就是封装了request.getRequestDispatcher(String url).include(request,response)
  • include行为语法是这个样子的

<jsp:include page=""/>

  • 我们先来使用一下把,在1.jsp页面中也将页头和页尾包含进来
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>包含页头和页尾进来</title>
    </head>
    <body>
        <jsp:include page="head.jsp"/>
        <jsp:include page="foot.jsp"/>
    </body>
    </html>

访问1.jsp页面看一下效果:

4.jpg

  • 使用jsp行为来包含文件,jsp源文件是这样子的:

5.jpg

  • jsp行为包含文件就是先编译被包含的页面,再将页面的结果写入到包含的页面中(1.jsp)
  • 当然了,现在有静态包含和动态包含,使用哪一个更好呢?答案是:动态包含
  • 动态包含可以向被包含的页面传递参数(用处不大),并且是分别处理包含页面的(将被包含页面编译后得出的结果再写进包含页面)【如果有相同名称的参数,使用静态包含就会报错!】
  • 模拟一下场景吧,现在我的头页面有个名为s的字符串变量
 <%@ page contentType="text/html;charset=UTF-8" language="java"   %>
    <html>
        <head>
            <title>页头</title>
        </head>
        <body>
        <%
            String s = "zhongfucheng";
        %>
        我是页头呀
        <br>
        <br>
        <br>
        </body>
    </html>

我的页尾也有个名为s的字符串变量

   <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>页尾</title>
    </head>
    <body>
    <%
        String s = "zhongfucheng";
    %>
    我是页尾呀
    </body>
    </html>

现在我使用静态包含看看会发生什么,出现异常了。

6.jpg

出现异常的原因很简单,就是同一个文件中有两个相同的变量s

7.jpg

使用动态包含就可以避免这种情况

8.jpg

9.jpg

总结

  1. <%@include file="xxx.jsp"%>为jsp中的编译指令,其文件的包含是发生在jsp向servlet转换的时期,而<jsp:include page="xxx.jsp">是jsp中的动作指令,其文件的包含是发生在编译时期,也就是将java文件编译为class文件的时期
  2. 使用静态包含只会产生一个class文件,而使用动态包含会产生多个class文件
  3. 使用静态包含,包含页面和被包含页面的request对象为同一对象,因为静态包含只是将被包含的页面的内容复制到包含的页面中去;而动态包含包含页面和被包含页面不是同一个页面,被包含的页面的request对象可以取到的参数范围要相对大些,不仅可以取到传递到包含页面的参数,同样也能取得在包含页面向下传递的参数
目录
相关文章
|
安全 前端开发 Java
Java面试题日积月累(jsp/Servlet面试题20道)
Java面试题日积月累(jsp/Servlet面试题20道)
93 0
每日一道面试题之 介绍一下jsp 的 4 种作用域
每日一道面试题之 介绍一下jsp 的 4 种作用域
|
存储 Java
每日一道面试题之jsp 有哪些内置对象?作用分别是什么?
每日一道面试题之jsp 有哪些内置对象?作用分别是什么?
|
前端开发 Java 容器
每日一道面试题之jsp 和 servlet 有什么区别?
每日一道面试题之jsp 和 servlet 有什么区别?
|
Java 程序员 容器
Java 最常见的面试题:jsp 和 servlet 有什么区别?
Java 最常见的面试题:jsp 和 servlet 有什么区别?
Java 最常见的面试题:说一下 jsp 的 4 种作用域?
Java 最常见的面试题:说一下 jsp 的 4 种作用域?
Java 最常见的面试题: jsp 有哪些内置对象?作用分别是什么?
Java 最常见的面试题: jsp 有哪些内置对象?作用分别是什么?
|
设计模式 前端开发 IDE
JSP面试题都在这里(三)
下面是我整理下来的JSP知识点:
167 0
JSP面试题都在这里(三)
|
缓存 Java API
JSP面试题都在这里(二)
下面是我整理下来的JSP知识点:
88 0
JSP面试题都在这里(二)
|
Web App开发 前端开发 Java
JSP面试题都在这里
下面是我整理下来的JSP知识点: 图上的知识点都可以在我其他的文章内找到相应内容。 JSP常见面试题 jsp静态包含和动态包含的区别 jsp静态包含和动态包含的区别 在讲解request对象的时候,我们曾经使用过request.
1266 0
下一篇
DataWorks