【传智播客】Javaweb程序设计任务教程⿊马程序员第六章课后答案
所有章节答案合集——>
【测⼀测】
学习完前⾯的内容,下⾯来动⼿测⼀测吧,请思考以下问题:
1、请简述JSP的运⾏原理。
1、请简述JSP中的9个隐式对象。
2、请使⽤include标签编写两个JSP页⾯,要求:访问b.jsp页⾯时先输出b.jsp页⾯的内容,等待5秒,再输出a.jsp页⾯中的内容。
3、请在l⽂件中使⽤元素为整个Web应⽤程序设置错误处理页⾯。已知:处理状态码为404的页⾯为404.jsp, 处理状态码为500的页⾯为500.jsp。
【答案】
1、JSP的运⾏原理如下:
1)客户端发出请求,请求访问JSP⽂件。
2)JSP容器先将JSP⽂件转换成⼀个Java源⽂件(Java Servlet源程序),在转换过程中,如果发现JSP⽂件中存在任何语法错误,则中断转换过程,并向服务端和客户端返回出错信息。
3)如果转换成功,则JSP容器将⽣成的Java源⽂件编译成相应的字节码⽂件*.class。该class⽂件就是⼀个Servlet,Servlet容器会像处理其他Servlet⼀样来处理它。
4)由Servlet容器加载转换后的Servlet类(.class⽂件)创建⼀个该Servlet(JSP页⾯的转换结果)实例,并执⾏Servlet的jspInit()⽅法。jspInit()⽅法在Servlet的整个⽣命周期中只会执⾏⼀次。
5)执⾏jspService()⽅法来处理客户端的请求。对于每⼀个请求,JSP容器都会创建⼀个新的线程来处理它。如果多个客户端同时请求该JSP⽂件,则JSP容器也会创建多个线程,使得每⼀个客户端请求都对应⼀个线程。JSP运⾏过程中采⽤的这种多线程的执⾏⽅式可以极⼤地降低对系统资源的需求,提⾼系统的并发量并缩短响应时间。需要注意的是,由于第(4)步⽣成的Servlet是常驻内存的,所以响应速度⾮常快。
6)如果JSP⽂件被修改了,则服务器将根据设置决定是否对该⽂件重新编译,如果需要重新编译,则使⽤重新编译后的结果取代内存中常驻的Servlet,并继续上述处理过程。
7)虽然JSP效率很⾼,但在第⼀次调⽤的时候往往由于需要转换和编译,所以会产⽣⼀些轻微的延迟。此外,由于系统资源不⾜等原
因,JSP容器可能会以某种不确定的⽅式将Servlet从内存中移除,发⽣这种情况时⾸先会调⽤jspDestroy()⽅法,然后Servlet实例会被加⼊“垃圾收集”处理。
8)当请求处理完成后,响应对象由JSP容器接收,并将HTML格式的响应信息发送回客户端。
2、JSP2.0规范中提供了9个隐式(内置)对象,它们是JSP默认创建的,可以直接在JSP页⾯中使⽤。这9个隐式对象的名称和作⽤如下:
1)out:主要⽤于页⾯输出;
2)request:⽤于得到⽤户请求信息;
3)response:表⽰服务器向客户端的回应信息;
4)config:包含服务器的配置信息,可以使⽤该对象获得Servlet初始化参数;
5)session:主要⽤来保存⽤户信息;
jsp页面输出的三种方式
6)application:包含所有⽤户的共享信息;
7)page:指当前页⾯转换后的Servlet类的实例;
8)pageContext:表⽰JSP页⾯容器,它提供了对JSP页⾯内所有的对象及名字空间的访问;
9)exception::表⽰JSP页⾯所发⽣的异常,在错误页中才起作⽤。
3、该功能的实现代码如下:
(1)a.jsp⽂件如下:
<%@ page contentType="text/html;charset=UTF-8"%>
<%Thread.sleep(5000);%>
这个是a.jsp页⾯<br />
(2)b. jsp⽂件如下:
<%@ page contentType="text/html;charset=UTF-8"%>
这个是b.jsp页⾯<br />
<jsp:include page="a.jsp" flush="true"/>
4、l⽂件代码如下:
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/500.jsp</location>
</error-page>
整理不易, 如果喜欢的话,还请给博主⼀个赞哦,让更多的⼈看到这篇⽂章

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。