5、JSP面试题总结

    科技2022-09-06  123

    文章目录

    1、静态包含和动态包含的区别2、jsp有哪些内置对象?作用分别是什么?3、get和post的请求的区别4、JSP属性作用域5、JSP和Servlet的区别6、JSP运行原理7、5中常用的JSTL常用标签8、JSP运行过程9、会话开启/结束的标志10、servlet的生命周期11、转发和重定向的区别12、在访问Servlet时,在浏览器地址栏中输入的路径是在什么地方配置的?13、J2EE中,Servlet API为使用Cookie,提供了``javax.servlet.http.HttpCookie``类14、能够保留请求作用域中数据的转向方式是15、jsp中${}取值的顺序为16、Servlet的线程特性是17、描述Jsp页面的五类脚本元素的功能、写法、并示例18、描述Bean的四种scope19、XML主要作用

    1、静态包含和动态包含的区别

    语法:

    静态包含:include指令是静态包含,静态包含的意思就是:把文件的代码内容都包含进来,再编译!<%@ include file=""%> 动态包含:include行为是动态包含。其实include行为就是封装了request.getRequestDispatcher(String url).include(request,response) <jsp: include page=""%>

    区别:

    <%@include file="xxx.jsp"%>为jsp中的编译指令,其文件的包含是发生在jsp向servlet转换的时期,而<jsp:include page="xxx.jsp">是jsp中的动作指令,其文件的包含是发生在编译时期,也就是将java文件编译为class文件的时期使用静态包含只会产生一个class文件,而使用动态包含会产生多个class文件使用静态包含,包含页面和被包含页面的request对象为同一对象,因为静态包含只是将被包含的页面的内容复制到包含的页面中去;而动态包含包含页面和被包含页面不是同一个页面,被包含的页面的request对象可以取到的参数范围要相对大些,不仅可以取到传递到包含页面的参数,同样也能取得在包含页面向下传递的参数

    2、jsp有哪些内置对象?作用分别是什么?

    共有九个内置对象:

    request ==> 用户端请求,此请求会包含来自GET/POST请求的参数response ==> 网页传回用户端的回应page ==> JSP网页本身pageContext ==> 管理网页的属性,代表编译后JSP内容config ==> servlet的构架部件session ==> 与请求有关的会话期application ==> 正在执行的内容out ==> 用来传送回应的输出exception ==> 由其它JSP页面抛出的Throwable对象,该变量只在"JSP错误页面"中可用

    在JSP中,尤其重要的是pageContext对象,它代表着jsp页面编译后的内容(也就是jsp页面的运行环境)

    3、get和post的请求的区别

    get请求的数据会在地址栏中显示,而post请求提交的数据存放在HTTP请求的请求体中,所以post请求更加安全get请求上传的数据不能大于2kb,而post请求对于传输的数据理论上来说是没有限制的a标签用get请求

    4、JSP属性作用域

    4个JSP内置对象的作用域分别为:application、session、request、page

    application 在所有应用程序中有效session 在当前会话中有效request 在当前请求中有效page 在当前页面有效

    5、JSP和Servlet的区别

    JSP就是一个ServletServlet的应用逻辑在Java文件中,并且完全从表示层的HTML里分离开来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件JSP侧重于视图,Servlet主要用于控制逻辑

    6、JSP运行原理

    当第一次访问jsp页面时,会向一个servlet容器(tomcat等)发出请求,servlet容器先要把 jsp页面转化为servlet源代码(.java),再编译成.class 文件进行编译。当再次访问jsp页面时,跳过翻译和编译的过程 直接调用

    7、5中常用的JSTL常用标签

    <c:if><c:item><c:foreach><c:out><c:set>

    8、JSP运行过程

    客户端发出请求,请求进入Web容器,将JSP页面翻译成Servlet代码编译Servlet代码,并将编译过的类文件装入Web容器(JVM)环境Web容器为JSP页面创建一个Servlet类实例,并执行jspInit方法Web容器为JSP页面调用Servlet实例的jspService方法,将结果发给用户

    执行流程图

    总结:JSP执行过程

    首先,客户端发出请求(request),请求访问JSP网页接着,JSP Container将要访问的.JSP文件 转译成Servlet的源代码(.java文件)然后,将产生的Servlet的源代码(.java文件)经过编译,生成.class文件,并加载到内存执行最后把结果响应(response )给客户端

    执行JSP网页文件时,需要经过两个时期:转译时期(TranslationTime)和请求时期(RequestTime)。

    转译时期:JSP转译成Servlet类(.class文件)。

    请求时期:Servlet类(.class文件)执行后,响应结果至客户端。

    转译期间主要做了两件事情:

    将JSP网页转译为Servlet源代码(.java),此段称为转译时期(Translation time);

    将Servlet源代码(.java)编译成Servlet类(.class),此阶段称为编译时期(Compilation time)。

    9、会话开启/结束的标志

    开启:开启浏览器进行访问 关闭:关闭浏览器结束访问 不同的浏览器访问时是不同的会话

    10、servlet的生命周期

    (1)加载和实例化

    当Servlet容器启动或客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,若存在,则直接读取该实例响应请求;如果不存在,就创建一个Servlet实例。

    (2) 初始化

    实例化后,Servlet容器将调用Servlet的init()方法进行初始化(一些准备工作或资源预加载工作)。只执行一次

    (3)服务

    初始化后,Servlet处于能响应请求的就绪状态。当接收到客户端请求时,调用service()的方法处理客户端请求,HttpServlet的service()方法会根据不同的请求 转调不同的doXxx()方法。

    (4)销毁

    当Servlet容器关闭时,Servlet实例也随时销毁。其间,Servlet容器会调用Servlet 的destroy()方法去判断该Servlet是否应当被释放(或回收资源)。只执行一次

    11、转发和重定向的区别

    重定向访问服务器两次,转发只访问服务器一次重定向可以看见目标页面的url,转发只能看见第一次访问的页面url,以后的工作都是由服务器来做的转发可携带数据,重定向可以访问自己web应用以外的资源

    12、在访问Servlet时,在浏览器地址栏中输入的路径是在什么地方配置的?

    在<url-pattern/>中配置

    13、J2EE中,Servlet API为使用Cookie,提供了javax.servlet.http.HttpCookie类

    14、能够保留请求作用域中数据的转向方式是

    request.getRequestDispatcher().forward(request,response)

    15、jsp中${}取值的顺序为

    pageContext,request,session,application

    16、Servlet的线程特性是

    多线程单例

    17、描述Jsp页面的五类脚本元素的功能、写法、并示例

    注释 <%-- --%>指令标记 <%@ %> 指令标记影响JSP页面的翻译阶段声明标记 <%! %> 声明标记允许JSP页面开发人员包含类级声明脚本标记 <% %> 脚本标记允许JSP页面开发人员在_jspService方法中包含任意的Java代码表达式标记 <%= %> 表达式标记封装Java运行时的表达式,其值被送至HTTP响应流

    18、描述Bean的四种scope

    RequestSessionApplicationPage

    19、XML主要作用

    数据交换信息配置
    Processed: 0.012, SQL: 9