Java Web程序设计教程(第二版)(微课版)习题答案_第1页
Java Web程序设计教程(第二版)(微课版)习题答案_第2页
Java Web程序设计教程(第二版)(微课版)习题答案_第3页
Java Web程序设计教程(第二版)(微课版)习题答案_第4页
Java Web程序设计教程(第二版)(微课版)习题答案_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

•PAGE15•附录各章习题参考答案附录各章习题参考答案第1章习题参考答案1.答:Web应用是一种可以通过Web访问的应用程序。通过浏览器可以访问百度、淘宝、网易新闻等网站,这些就是Web应用。Web应用程序是一种使用HTTP(HyperTextTransferProtocol,超文本传输协议)作为核心通信协议,通过Internet让Web浏览器和服务器通信的计算机程序。2.答:(1)浏览器根据我们输入的地址找到相应的服务器,不同的网站对应不同的服务器。这个服务器通常称为Web服务器,可以接收浏览器发送的请求。(2)Web服务器根据请求的内容调用不同的服务器端程序,服务器端程序通常也是一个服务器,称为应用服务器。(3)应用服务器接收到请求之后,查找相应的文件,加载并执行相应的任务,如果涉及到数据处理,则需要与数据库服务器交互。(4)处理完数据,将处理结果返回给应用服务器,服务器端程序的执行结果通常是HTML文档。(5)应用服务器把执行的结果返回给Web服务器,Web服务器再把这个结果返回给客户端浏览器。(6)浏览器解析HTML文档,然后把解析后的网页显示给最终用户。3.答:(1)HTML:超文本标记语言,是Web的描述语言。(2)CSS:层叠样式表(CascadingStyleSheets),也就是通常所说样式表。(3)ActiveX:一个集成平台,使用ActiveX可以方便地在Web页中插入多媒体效果、交互式对象、复杂程序等。(4)JavaScript:JavaScript是一种简单的脚本语言,可以在浏览器中直接运行。(5)jQuery:一个快速、简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库。(6)其他:VBScript、Applet等。4.答:平台无关性、安全性、面向对象、异常处理。5.答:JSP、JavaBean、Servlet、JDBC、JSTL和表达式语言EL。6.答:Web服务器是运行及发布Web应用的容器,只有将开发的Web项目放置到该容器中,才能使网络中的所有用户通过浏览器进行访问。常用的Web服务器有:Apache服务器、Tomcat服务器、Resin服务器、JBoss服务器、WebSphere服务器、WebLogic服务器。第2章习题参考答案1.答:JAVA_HOME和classpath 2.答:切换到Tomcat的bin子目录(D:\Tomcat8.5\bin)。双击startup.bat,即可启动Tomcat。在使用完Tomcat之后,可以双击bin目录下的shutdown.bat来停止它。3.答:/WEB-INF/lib目录4.答:参见2.3.3节中的第1小节5.略6.略第3章习题参考答案1.答:在服务器端有一个JSP容器负责获得对JSP文件的请求,当一个JSP文件第一次被请求时,容器首先会把这个JSP文件转换成一个Servlet(Java源文件)。在转换过程中如果发现JSP文件有语法错误,转换过程将中断,并向服务端和客户端输出出错信息。如果转换成功,JSP引擎会把该Java源文件编译成相应的.class文件,因为这个过程(编译)会耗费一定时间,所以第一次访问或jsp文件有改动时,访问时间会比较长。接下来,JSP引擎会创建一个该Servlet的实例,并执行该实例的jspInit()方法,然后创建并启动一个新的线程,新线程调用实例的jspService()方法。2.答:JSP中主要有3个编译指令:page指令、include指令和taglib指令。JSP的动作指令主要有如下7种:jsp:include指令、jsp:forward指令、jsp:param指令、jsp:plugin指令、jsp:useBean指令、jsp:getProperty指令、jsp:setProperty指令。JSP的内置对象有9个:request对象、response对象、session对象、out对象、page对象、application对象、config对象、pageContext对象、exception对象3.答:在JSP文件中可以使用如下4种注释的方式:HTML注释、传统的Java行注释、传统的Java块注释、JSP注释4.答:通过getParameter()方法获取参数值,对于多值参数,getParameter()将返回第一个值,如果要获取所有值,可以使用getParameterValues()方法。另外,方法getParameterMap()将返回一个包含了所有参数名值对Map<String,String[]>,而getParameterNames()方法将返回所有可用参数的名字的枚举。5.答:URL映射的过滤器优先级要比Servlet名称映射的过滤器高6.答:Servlet2.4规范将Servlet监听器划分为以下3种:● ServletContext事件监听器:用于监听应用程序环境对象。● HttpSession事件监听器:用于监听用户会话对象。● ServletRequest事件监听器:用于监听请求消息对象。7.答:.load()、$.get()、.post()、$.getJSON()、$.getScript()、$.ajax()第4章习题参考答案1.答:JSTL全名JSPStanddardTagLibrary(JSP标准标签库),它是SUN公司发布的一个针对JSP开发的新组件,它允许使用标签开发JSP页面。在使用JSTL之前,需要从Apache的标准标签库中下载所需的压缩包,解压下载的zip包,在lib目录下有2个jar文件:jstl.jar和standard.jar。将jstl.jar和standard.jar复制到%CATALINA_HOME\common\lib目录下,或者%CATALINA_HOME\shared\lib目录下,如果只在当前Web应用程序中使用,可以将这两个文件复制到应有程序的WEB-INF/lib目录下,在使用JSTL之前,必须引入taglib指令声明网页要使用的标签种类,使用核心标签库的taglib指令如下:<%@taglibprefix="c"uri="/jsp/jstl/core"%>2.答:使用EL隐式变量。pageScope:包含JSP内置对象page作用范围内的变量集合;requestScope:包含JSP内置对象request作用范围内的变量集合;sessionScope:包含JSP内置对象session作用范围内的变量集合;applicationScope:包含JSP内置对象application作用范围内的变量集合。3.答:核心标签库中的标签一共有14个,被分为了四类,分别是:●多用途通用标签:<c:out>、<c:set>、<c:remove>和<c:catch>。●条件控制标签:<c:if>、<c:choose>、<c:when>和<c:otherwise>。●循环控制标签:<c:forEach>和<c:forTokens>。●URL相关标签:<c:import>、<c:url>、<c:redirect>和<c:param>。4.答:<%@taglibprefix="sql"uri="/jsp/jstl/sql"%>5.答:<body-content>元素的可取值有如下4种:● tagdependent:标签体内容直接被写入BodyContent,由自定义标签类来进行处理,而不被JSP容器解释,● JSP:接受所有JSP语法,如定制的或内部的tag、scripts、静态HTML、脚本元素、JSP指令和动作。如:● empty:空标记,即起始标记和结束标记之间没有内容。● scriptless:接受文本、EL和JSP动作。第5章习题参考答案1.答:MVC是一个框架模式,它强制性的使应用程序的输入、处理和输出分开。它把应用程序被分成三个核心部件:模型、视图、控制器。2.答:(1)当Web容器收到请求(HttpServletRequet)后,它将请求传递给一系列的过滤链过滤,然后传递给FilterDispatcher核心控制器。(2)FilterDispatcher会根据URL在ActionMapper中搜索指定Action的映射信息,确定请求哪个Action。(3)找到对应的Action后,FilterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器(ConfigurationManager)从配置文件中读取配置信息(struts.xml),然后创建ActionInvocation对象。(4)如果配置信息(struts.xml)中有被请求Action相关的拦截器,那么ActionInvocation在调用Action之前会依次调用拦截器(1..N),一旦执行结果返回结果字符串,ActionInvocation负责查找结果字符串对应的结果,然后执行这个结果会调用一些模版(JSP、Freemarker或Velocity)来呈现页面。(5)拦截器(N..1)会再次被执行(顺序和Action执行之前相反),最后,响应(HttpServletResponse)被返回核心控制器(FilterDispatcher)和其他过滤器。3.答:在<package>元素中使用<default-interceptor-ref>元素。4.答:Struts2拦截器的实现原理和过滤器的实现差不多,它提供了一种机制,使开发者可以在一个Action的execute()方法执行的前后进行拦截,然后插入一些自己的逻辑。如果没有拦截器,这些要插入的逻辑就得写在Action的实现中,而且每个Action实现都要写这些功能逻辑,这样的实现非常繁琐。而Struts2的设计者们把这些共有的逻辑独立出来,实现成一个个拦截器,既体现了软件复用的思想,又方便程序员使用。5.答:自定义拦截器的第一步就是创建自己的拦截器类,通常有如下两种方法实现:● 实现erceptor.Interceptor接口● 继承erceptor.AbstractInterceptor类。第6章习题参考答案1.答:语法格式如下。SELECT[ALL|DISTINCT]<目标列表表达式>[,<目标列表表达式>]…FROM<表名或视图名>[,<表名或视图名>]…[WHERE<条件表达式>][GROUPBY<列名1>[HAVING<条件表达式>]][ORDERBY<列名2>[ASC|DESC]];整个SELECT语句的含义是,根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表表达式,选出元组中的属性值形成结果表。如果有GROUPBY子句,则将结果按<列名1>的值进行分组,该属性列值相等的元组为一个组。通常会在每组中作用聚集函数。如果GROUPBY子句带有HAVING短语,则只有满足指定条件的组才予以输出。如果有ORDERBY子句,则结果表还要按<列名2>的值的升序或降序排列。2.答:他们都是用来储存字符串长度小于255的字符。两者的差别在于VARCHAR的字符长度可变,而CHAR的字符长度不可变。3.答:JDBC访问数据库的主要步骤如下:(1)与数据库建立连接;(2)向数据库发送SQL语句;(3)处理发送的SQL语句;(4)将处理结果返回。4.答:JDBC连接串url后面跟两个参数“?useUnicode=true&characterEncoding=UTF-8”第7章习题参考答案1.答:ORM(Object-RelationMap,对象关系映射)是一种为了解决面向对象编程过程中,程序与关系数据库交互而提出来的技术。自从ORM概念提出之后,涌现出很多基于ORM的应用框架。其中,具有代表性的有Hibernate、Ibatis、JPOX、ApacheTorque和TopLink等。2.答:connection.driver_class,配置数据库的驱动程序;connection.url,设置数据库的连接url;connection.username,连接数据库的用户名;connection.password,连接数据库的密码。3.答:Hibernate是一个将持久化类与数据库表进行映射的工具,它本身对JDBC进行了封装而且拥有多种事务处理方式,完整的Hibernate框架包括:Session、SessionFactory、Transaction、Query、Configuration等。4.答:Hibernate框架提供了多种检索策略:立即检索、延迟检索、预先检索和批量检索。立即检索指的是在加载一个对象时,不仅立即加载该对象,而且还会立即加载与该对象相关联的其他对象。需要在映射文件中将<class>元素和<set>元素的lazy属性设置为false。延迟检索策略,需要将lazy属性设置为true。预先检索策略需要在<set>元素内添加fetch属性,并将其设置为join。批量检索需要在<class>元素或<set>元素中添加<batch-size>属性,并指定其值为每次处理的记录数。5.答:一对多关系的映射有3种方式:一对多单向关联、多对一单向关联和双向关联。6.答:PCI(PeripheralComponentInterconnect)是一种高带宽、独立于处理器的总线。它主要用于高速外设的I/O接口和主机相连,如图形显示适配器、网络接口控制卡、磁盘控制器等。7.解:200MB/s8.答:时钟周期是系统工作的最小时间单位,它由计算机主频决定;总线周期指总线上两个设备进行一次信息传输所需要的时间(如CPU对存储器或I/O端口进行一次读/写操作所需的时间);指令周期指CPU执行一条指令所需要的时间。三者之间的关系是:时钟周期是基本动作单位;一个总线周期通常由n个时钟周期组成;而一个指令周期中可能包含有一个或几个总线周期,也可能一个总线周期都没有,这取决于该指令的功能。9.解:总线的带宽=数据宽度×总线周期的最高频率 =(32/8)Byte×(8.33/3)M/s =11.1MB/s第8章习题参考答案1.答:事务(Transaction)是工作中的基本逻辑单元,在这个单元里的所有操作要么都执行,要么都不执行。在关系数据库中,一个事务可能包括一系列更新数据库记录的SQL操作,而一个完整的事务保证这些操作都被正确地同步到数据库中,不会发生数据的不完整或者不一致,或者受到其他干扰。ACID(原子性、一致性、隔离性和持久性)特性 2.答:(1)第一类丢失更新(lostupdate);(2)脏读(dirtyread);(3)虚读(phantomread);(4)不可重复读(unrepeatedread);(5)第二类丢失更新(secondlostupdates)。3.答:Hibernate为乐观锁提供了3种实现:基于version、基于timestamp和为遗留项目添加乐观锁。4.答:缓存的范围分为三类:(1)事务范围;(2)进程范围;(3)集群范围一级缓存是事务范围的缓存。5.答:查询缓存基于二级缓存,使用查询缓存之前,必须首先配置好二级缓存;在配置了二级缓存的基础上,在Hibernate的配置文件hibernate.cfg.xml中添加如下配置,可以启用查询缓存:<propertyname="hibernate.cache.use_query_cache">true</property>此外在程序中还必须手动启用查询缓存:query.setCacheable(true);第9章习题参考答案1.答:Spring框架之所以受到广泛欢迎,与其自身的特性有密切关系。● 轻量级:从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。● 方便解耦:Spring通过一种称作控制反转(IoC)的技术促进了低耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。● 面向切面编程:Spring提供了面向切面编程(AOP)的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发。开发人员只需关注业务逻辑的实现即可。● 方便集成各种优秀框架:Spring不排斥各种优秀的开源框架,相反,Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。● MVC:Spring的作用是整合,但不仅仅限于整合,Spring框架可以被看做是一个企业解决方案级别的框架。客户端发送请求,服务器控制器(由DispatcherServlet实现的)完成请求的转发,控制器调用一个用于映射的类HandlerMapping,该类用于将请求映射到对应的处理器来处理请求。HandlerMapping将请求映射到对应的处理器Controller(相当于Action)。在Controller中可以调用一些Service或DAO来进行数据操作,Model和View用于存放从DAO中取出的数据,还可以存放响应视图的一些数据。● 方便程序的测试:可以用非容器依赖的编程方式进行几乎所有的测试工作,在Spring里,测试不再是昂贵的操作,而是随手可做的事情。例如:Spring对Junit4支持,可以通过注解方便的测试Spring程序。2.答:核心容器提供Spring框架的基本功能。包括spring-core、spring-beans、spring-context、spring-context-support和spring-expression(SpringEL语言)共5个模块3.答:IoC(InversionofControl,控制反转)不是什么技术,而是一种设计思想,主要关注组件的依赖性、配置及组件的生命周期。控制反转,包含两个方面的内容:一个是控制,另一个是反转。● 所谓控制就是把对象(bean)和维护对象之间的关系(bean与bean之间的依赖关系)的权利转交到Spring容器,而不是传统的在对象内部直接控制。● 那为何又是反转呢,哪些方面反转了?在传统应用程序中,是由我们在对象中主动控制去直接获取依赖对象,也就是正转;而反转则是由容器来帮忙创建及注入依赖对象,对象是被动的接受依赖对象,所以是反转,即:依赖对象的获取被反转了。4.答:● @Repository:用于对DAO实现类进行标注。● @Service:用于对service层实现类进行标注。● @Controller:用于对Web的控制层实现类进行标注。5.答:使用注解方式@Autowired使用XML配置文件设置<bean>元素的autowire属性,为如下3个值中的一个:byName、byType、constructor。6.答:在SpringAOP中,支持4种类型的通知(advices):● 之前通知:在方法执行前运行。● 返回后通知:在方法运行,并返回一个结果后。● 抛出后通知(Advice):运行方法抛出异常的情况下。● 环绕通知:环绕方法执行运行,结合以上3个通知。第10章习题参考答案1.答:(1)用户发送请求到前端控制器,前端控制器根据请求信息来决定选择哪一个页面控制器进行处理,并把请求委托给它,即以前的控制器的控制逻辑部分,图中的1、2两步。(2)页面控制器接收到请求后,进行功能处理。首先需要收集和绑定请求参数到一个对象,这个对象在SpringWebMVC中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名),图中的3、4、5三步。(3)前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染,图中的6、7两步。(4)前端控制器再次收回控制权,将响应返回给用户,图中的步骤8,至此整个请求的工作流程结束。2.答:@RequestMapping是Spring工具集中一个非常强大的工具,通过它可以映射请求、请求的Content-Type或者Accept头、HTTP请求头、指定请求参数或头是否存在,或者这些信息的任意组合。在控制器的类定义及方法定义处都可使用@RequestMapping注解: 类定义处:提供初步的请求映射信息。相对于Web应用的根目录方法处:提供进一步的细分映射信息。相对于类定义处的URL。若类定义处未标注@RequestMapping,则方法处标记的URL相对于Web应用的根目录。DispatcherServlet截获请求后,就是通过控制器上@RequestMapping提供的映射信息确定请求所对应的处理方法。3.答:(1)标准Servlet类型;(2)注解请求属性;(3)绑定表单对象;(4)使用@RequestBody注解的实体;(5)模型类型4.答:不区分大小写。5.答:(1)通过RedirectView(2)可以在返回视图名字的字符串前面加“forword:”或“redirect:”。6.答:@ModelAttribute注解有如下三个作用:● 绑定请求参数到命令对象:将该注解标注在控制器的功能处理方法的入参上时,用于将多个请求参数绑定到一个命令对象,从而简化绑定流程,而且自动暴露为模型数据用于视图页面展示时使用。● 暴露表单引用对象为模型数据:将该注解标注在处理器的一般方法(非功能处理方法)上时,是为表单准备要展示的表单引用对象,如注册时需要选择的所在城市等,而且在执行功能处理方法(@RequestMapping注解的方法)之前,自动添加到模型对象中,用于视图页面展示时使用。● 暴露@RequestMapping方法返回值为模型数据:@ModelAttribute和@RequestMapping同时注释一个方法,是将功能处理方法的返回值暴露为模型数据,用于视图页面展示时使用。这时该方法的返回值并不是表示一个视图名称,而是model属性的值,视图名称由RequestToViewNameTranslator根据请求进行转换,RequestToViewNameTranslator将去除Web应用上下文URL和URL结尾的任何文件扩展名,剩下的URL将变成视图名称,如/user/home.do,转换为逻辑视图/user/home。7.答:使用@ResponseBody。8.答:使用Spring的form标签主要有两个作用,第一是它会自动的绑定来自Model中的一个属性值到当前form对应的实体对象,默认是command属性,这样我们就可以在form表单体中方便的使用该对象的属性了;第二是它支持我们在提交表单的时候使用除GET和POST之外的其他方法进行提交,如DELETE和PUT等。第11章习题参考答案1.答:三层分别为● 表现层:传统的JSP技术,主要功能在于数据的显示,数据如何表现,如上一章学习的SpringWebMVC就是表现层的框架结构。● 业务逻辑层:也叫中间层,主要是对业务的处理以及数据的处理。● 数据持久层:DAO模式,主要是实现与数据库的交互,如第7章中学习的Hibernate框架。2.答:publicfinalHibernateTemplategetHibernateTemplate()publicfinalvoidsetSessionFactory(SessionFactorysessionFactory)3.答:当使用Spring框架管理Hibernate的SessionFactory时,Hibernate配置文件(hibernate.cfg.xml)中的信息将会被转移到Spring的配置文件中,并由IoC容器负责对SessionFactory的使用进行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论