JavaWeb开发试卷及分析_第1页
JavaWeb开发试卷及分析_第2页
JavaWeb开发试卷及分析_第3页
JavaWeb开发试卷及分析_第4页
JavaWeb开发试卷及分析_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

JavaWeb开发试卷及分析一、单项选择题(共10题,每题1分,共10分)Servlet初始化方法init的默认调用时机是?A.第一次请求该Servlet时B.服务器启动时C.每次收到该Servlet的请求时D.服务器关闭时答案:A解析:Servlet默认采用懒加载机制,只有第一次收到对应Servlet的请求时才会调用init方法完成初始化;只有配置了load-on-startup属性时才会在服务器启动时执行init,因此B错误。每次请求时调用的是service方法,C错误。服务器关闭时调用的是destroy方法,D错误。JSP内置对象中作用域范围最大的是?A.pageB.requestC.sessionD.application答案:D解析:JSP四个作用域从小到大依次是page(当前页面有效)、request(单次请求有效)、session(单次会话有效)、application(整个web应用全局有效),因此作用域最大的是application。下列属于HTTPGET请求特点的是?A.参数存储在请求体中B.传递的参数长度无限制C.请求结果可被浏览器缓存D.适合提交敏感类数据答案:C解析:GET请求的参数拼接在URL中,不会存储在请求体,A错误。受URL长度限制,GET请求传递的参数长度有上限,B错误。参数直接暴露在URL中,安全性低,不适合提交敏感数据,D错误。GET请求属于幂等请求,结果可被浏览器缓存,C正确。下列不属于会话跟踪技术的是?A.CookieB.SessionC.隐藏表单域D.Servlet答案:D解析:Cookie、Session、隐藏表单域、URL重写都是JavaWeb中常用的会话跟踪技术,用来识别同一个用户的多次请求。Servlet是运行在服务器端的请求处理组件,不属于会话跟踪技术。下列属于请求转发forward特点的是?A.浏览器地址栏会发生变化B.总共产生两次HTTP请求C.可以跳转到外部站点资源D.可以共享request域中的数据答案:D解析:请求转发是服务器内部的跳转行为,全程只有一次请求,浏览器地址栏不会变化,只能跳转当前web应用内的资源,因此ABC都是重定向的特点。因为是单次请求,所以可以共享request域的数据,D正确。MVC设计模式中,承担控制器角色的核心组件是?A.JSPB.ServletC.JavaBeanD.静态HTML答案:B解析:MVC模式中,Model(模型)对应JavaBean负责业务逻辑和数据封装,View(视图)对应JSP、静态HTML负责页面展示,Controller(控制器)对应Servlet负责请求接收、逻辑分发和跳转控制,因此B正确。过滤器Filter中负责执行过滤逻辑的核心方法是?A.initB.doFilterC.destroyD.service答案:B解析:init方法是过滤器的初始化方法,服务器启动时执行一次,A错误。doFilter是核心处理方法,每次符合拦截规则的请求都会执行该方法的过滤逻辑,B正确。destroy是过滤器销毁方法,服务器关闭时执行,C错误。service是Servlet的核心处理方法,不属于Filter的方法,D错误。关于ServletContext的说法错误的是?A.同一个web应用的所有Servlet共享同一个ServletContext对象B.可以通过ServletContext获取服务器的版本信息C.每个Servlet都有独立的ServletContext对象D.可以通过ServletContext设置web应用的全局初始化参数答案:C解析:一个web应用只会创建一个ServletContext对象,所有Servlet共享该对象,因此A正确,C错误。ServletContext可以获取服务器信息、设置全局参数、读写全局属性,因此BD的说法正确。下列JSP指令中,用来引入其他页面内容的是?A.page指令B.include指令C.taglib指令D.import指令答案:B解析:page指令用来设置当前JSP页面的属性,比如编码、导包等,A错误。include指令用来静态引入其他页面的内容,B正确。taglib指令用来引入自定义标签库,C错误。import是page指令的属性,不是独立指令,用来导入Java类,D错误。JDBC中用来执行预编译SQL、避免SQL注入的核心对象是?A.StatementB.PreparedStatementC.ResultSetD.Connection答案:B解析:Statement用来执行静态SQL语句,存在SQL注入风险,A错误。PreparedStatement会提前对SQL进行预编译,用户输入的参数只会作为字符串填充,不会修改SQL结构,可以有效避免SQL注入,B正确。ResultSet是存储SQL查询结果的对象,C错误。Connection是数据库连接对象,负责和数据库建立连接,D错误。二、多项选择题(共10题,每题2分,共20分)下列属于Servlet生命周期核心方法的有?A.initB.serviceC.doGetD.destroy答案:ABD解析:Servlet生命周期分为实例化、初始化、服务、销毁四个阶段,对应的核心方法是无参构造方法、init、service、destroy,因此ABD正确。doGet是service方法内部根据请求类型调用的业务处理方法,不属于生命周期的核心方法。下列JSP内置对象中,属于作用域对象的有?A.requestB.responseC.sessionD.application答案:ACD解析:JSP的作用域对象有四个,分别是pageContext、request、session、application,负责不同范围的数据存储和共享,因此ACD正确。response是响应对象,负责向客户端返回数据,不属于作用域对象。关于HTTP状态码的说法正确的有?A.200表示请求处理成功B.404表示请求的资源不存在C.500表示客户端参数错误D.302表示请求重定向答案:ABD解析:2开头的状态码表示请求成功,200是最常见的成功状态码,A正确。4开头的状态码表示客户端错误,404表示资源未找到,B正确。5开头的状态码表示服务器端内部错误,不是客户端错误,C错误。3开头的状态码表示重定向,302是最常见的临时重定向状态码,D正确。关于Cookie和Session的区别,下列说法正确的有?A.Cookie存储在客户端浏览器,Session存储在服务器B.Cookie的安全性比Session更高C.Session可以设置过期时间,Cookie不能设置过期时间D.Session默认依赖Cookie传递SessionId,禁用Cookie时可以通过URL重写实现会话跟踪答案:AD解析:Cookie存储在客户端,容易被窃取和篡改,Session存储在服务器,安全性更高,因此B错误。Cookie和Session都可以设置过期时间,Cookie可以通过setMaxAge方法设置过期时长,Session可以通过setMaxInactiveInterval方法设置过期时间,因此C错误。其余两个选项的表述正确。下列属于JavaWeb三层架构组成部分的有?A.表现层B.业务逻辑层C.数据访问层D.控制层答案:ABC解析:JavaWeb三层架构是对整个应用的纵向拆分,分为表现层负责接收请求和返回结果、业务逻辑层负责核心业务处理、数据访问层负责和数据库交互,因此ABC正确。控制层是MVC模式的组成部分,属于表现层的内部划分,不属于三层架构的组成部分。下列属于过滤器Filter典型应用场景的有?A.全站点字符编码统一设置B.用户登录权限校验C.用户输入敏感词过滤D.数据库连接池管理答案:ABC解析:过滤器的核心作用是对请求和响应进行预处理和后处理,适合实现通用的、和业务无关的公共功能,字符编码设置、登录校验、敏感词过滤都是典型的应用场景,ABC正确。数据库连接池管理属于数据访问层的功能,和请求处理无关,不属于过滤器的应用场景。关于ServletConfig的作用,下列说法正确的有?A.可以获取当前Servlet的初始化参数B.每个Servlet对应一个独立的ServletConfig对象C.可以通过ServletConfig获取ServletContext对象D.可以通过ServletConfig设置web应用的全局初始化参数答案:ABC解析:ServletConfig是每个Servlet专属的配置对象,用来存储当前Servlet的初始化参数,也可以用来获取全局的ServletContext对象,因此ABC正确。全局初始化参数是由ServletContext管理的,不能通过ServletConfig设置,D错误。关于JSP动作元素的说法正确的有?A.用来动态引入其他页面B.用来实现服务器端请求转发C.用来在JSP页面中实例化JavaBean对象D.用来给JavaBean的属性赋值答案:ABCD解析:四个选项的表述都是JSP动作元素的标准功能,全部正确。是动态引入,运行时才加载目标页面;功能和请求转发一致;、、三个动作配合实现JavaBean在JSP中的使用。下列属于JavaWeb前后端交互常用技术的有?A.AJAXB.JSONC.ServletD.静态HTML答案:ABC解析:AJAX是异步请求技术,用来实现页面无刷新和后端交互;JSON是前后端交互的标准数据格式;Servlet是后端接收请求、处理数据的核心组件,三者都属于前后端交互的常用技术,ABC正确。静态HTML是纯页面标记语言,本身不具备和后端交互的能力,不属于交互技术。下列属于JavaWeb项目中避免SQL注入的有效方案的有?A.使用PreparedStatement执行SQLB.对用户输入的参数进行格式校验和特殊字符过滤C.使用成熟ORM框架的标准API执行数据库操作D.直接拼接用户输入的参数到SQL语句中答案:ABC解析:直接拼接用户参数到SQL语句是导致SQL注入的根本原因,D错误。其余三个选项都是有效避免SQL注入的方案:预编译SQL从底层避免SQL结构被篡改;参数校验可以提前过滤非法输入;成熟ORM框架默认采用预编译机制,按照规范使用即可避免注入风险。三、判断题(共10题,每题1分,共10分)Servlet是单例模式,多个用户同时访问同一个Servlet时,服务器会为每个用户创建独立的Servlet实例。答案:错误解析:Servlet默认采用单例设计模式,整个web应用中同一个Servlet只会创建一个实例,多个用户访问时会通过多线程调用service方法处理请求,不会创建多个实例。JSP本质上是Servlet,第一次被访问时会被服务器翻译成Java代码并编译成Servlet类执行。答案:正确解析:JSP是Servlet的简化实现,服务器会将JSP先翻译为符合Servlet规范的Java源代码,再编译为Class文件运行,后续的执行逻辑和普通Servlet完全一致。重定向是服务器内部的跳转行为,浏览器感知不到跳转过程,地址栏不会发生变化。答案:错误解析:重定向的逻辑是服务器返回302状态码和新的请求地址,浏览器会主动向新地址发起第二次请求,地址栏会显示新的地址,用户可以感知到跳转。服务器内部跳转、地址栏不变是请求转发的特点。Session的过期时间只能通过服务器的全局配置修改,不能在代码中手动设置单个Session的过期时间。答案:错误解析:Session的过期时间既可以在服务器配置文件中设置全局默认值,也可以在代码中调用Session的setMaxInactiveInterval方法,针对单个Session设置独立的过期时间。所有版本的Servlet规范都要求必须配置web.xml文件,JavaWeb应用才能正常运行。答案:错误解析:Servlet3.0及之后的版本支持注解配置,开发者可以通过@WebServlet、@WebFilter、@WebListener等注解完成组件的配置,不需要编写web.xml文件就可以运行应用。request.getParameter方法只能获取GET请求的参数,不能获取POST请求的参数。答案:错误解析:request.getParameter方法既可以获取GET请求URL中携带的参数,也可以获取POST请求请求体中x-www-form-urlencoded格式的参数,对两种请求方式都适用。多个过滤器同时生效时,执行顺序和web.xml中filter-mapping的配置顺序一致,配置在前的过滤器先执行。答案:正确解析:web.xml配置的过滤器执行顺序由filter-mapping的先后顺序决定,顺序越靠前越先执行;如果使用注解配置过滤器,执行顺序按照过滤器类名的字典序决定。浏览器对Cookie的存储没有大小和数量限制,只要客户端磁盘空间足够就可以无限存储。答案:错误解析:主流浏览器对单个Cookie的大小限制一般为4KB,同时对同一个域名下的Cookie数量也有几十到上百个不等的限制,不能无限存储。在Servlet中调用System.exit(0)可以关闭当前Servlet,不会影响服务器上的其他应用运行。答案:错误解析:System.exit(0)会直接终止当前运行的Java虚拟机,整个web服务器进程都会退出,所有部署在服务器上的应用都无法运行,不能用来关闭单个Servlet。MVC设计模式的核心优势是实现了视图展示和业务逻辑的分离,降低了代码的耦合度,提升了可维护性。答案:正确解析:MVC将视图层的页面展示、控制器的请求分发、模型层的业务逻辑拆分到不同的组件中,各层职责清晰,修改视图不会影响业务逻辑,修改业务逻辑也不需要调整页面,有效降低了耦合度,便于团队协作开发和后期维护。四、简答题(共5题,每题6分,共30分)简述请求转发forward和重定向redirect的核心区别。答案要点:第一,请求次数不同,转发是服务器内部跳转,全程只有一次HTTP请求;重定向是浏览器发起两次独立的HTTP请求;第二,地址栏表现不同,转发的地址栏不会发生变化,始终显示第一次请求的地址;重定向的地址栏会更新为第二次请求的新地址;第三,数据共享不同,转发属于单次请求,可以共享request域中存储的数据;重定向是两次独立请求,无法共享request域的数据;第四,可访问范围不同,转发只能跳转当前web应用内部的资源;重定向可以跳转到其他域名的外部站点资源。解析:本题考察JavaWeb两种跳转方式的核心差异,四个要点各1.5分,答出核心差异即可得分。实际开发中需要根据是否需要共享请求数据、是否跳转外部站点等场景选择合适的跳转方式。简述Servlet的完整生命周期流程。答案要点:第一,实例化阶段,当第一次收到该Servlet的请求,或者配置了load-on-startup属性时,服务器调用Servlet的无参构造方法创建唯一的实例;第二,初始化阶段,实例创建完成后,服务器调用init方法完成参数加载等初始化操作,该方法只会执行一次;第三,服务阶段,每次收到该Servlet的请求时,服务器都会调用service方法,根据请求方式调用对应的doGet、doPost等方法处理请求,该方法会执行多次;第四,销毁阶段,当web应用被卸载或者服务器关闭时,服务器调用destroy方法释放Servlet占用的资源,该方法只会执行一次。解析:本题考察Servlet的核心运行机制,四个阶段各1.5分。Servlet的单例特性就是由生命周期的执行逻辑决定的,因为只有一个实例,所以要注意避免在Servlet中定义可变的成员变量,防止线程安全问题。简述Cookie和Session两种会话跟踪技术的优缺点。答案要点:第一,Cookie的优点是存储在客户端,不占用服务器的内存资源,适合存储非敏感的个性化配置数据;缺点是存储大小和数量受浏览器限制,安全性低,容易被窃取和篡改,且用户可以主动禁用Cookie;第二,Session的优点是存储在服务器,安全性高,存储容量没有严格限制,适合存储用户登录状态等敏感数据;缺点是会占用服务器内存资源,用户量较大时会消耗较多服务器性能,且默认依赖Cookie传递SessionId,禁用Cookie时需要通过URL重写的方式传递标识。解析:本题考察两种会话跟踪技术的适用场景,两个要点各3分。实际开发中要根据数据的敏感程度选择存储方式,敏感数据优先使用Session存储,非敏感的用户偏好配置可以使用Cookie存储。简述JSP九个内置对象的核心分类。答案要点:第一,作用域类对象,包括pageContext、request、session、application,负责不同范围的数据存储和共享;第二,请求响应类对象,包括request、response,负责接收请求数据、向客户端返回响应结果;第三,输出类对象,out,负责向页面输出字符内容;第四,配置类对象,包括config、page,config对应Servlet的配置对象,page对应当前JSP编译后的Servlet实例;第五,异常类对象,exception,仅在设置了isErrorPage=“true”的错误页面中可用,负责封装页面运行时抛出的异常信息。解析:本题考察JSP的基础知识点,答对四个及以上分类即可得满分,其中request同时属于作用域对象和请求对象,不需要重复计数。现在的项目中很少直接使用JSP,但是内置对象的设计思想和对应组件的作用依然是JavaWeb的核心基础。简述JavaWeb三层架构和MVC模式的关系与区别。答案要点:第一,三层架构是对整个JavaWeb应用的纵向职责拆分,分为表现层、业务逻辑层、数据访问层,核心目标是拆分整个应用的职责,降低跨层的耦合度;第二,MVC是表现层的设计模式,将表现层进一步拆分为模型、视图、控制器三个部分,核心目标是解决表现层内部页面展示和业务逻辑耦合的问题;第三,两者不是互斥关系,而是互补关系,目标都是降低代码耦合度、提升可维护性,MVC属于三层架构中表现层的内部实现方案,实际项目中通常会同时使用两种架构设计。解析:本题考察JavaWeb的架构设计思想,三个要点各2分。很多开发者容易将两者混淆,核心是要明确三层架构是整个应用的宏观划分,MVC是针对表现层的微观设计。五、论述题(共3题,每题10分,共30分)结合实际开发场景,论述过滤器Filter的应用场景和实现流程。答案:论点:过滤器是JavaWeb中实现通用功能解耦和复用的核心组件,符合面向切面编程的思想,可以在不修改原有业务代码的前提下实现公共功能的统一处理。论据:首先,过滤器的核心应用场景主要有三类,第一类是通用请求处理,最常见的就是全站点的字符编码统一设置,避免每个Servlet都单独编写编码设置的代码;第二类是权限校验,比如用户登录状态校验、接口权限校验,未登录的用户访问需要权限的资源时直接跳转到登录页,不需要每个接口都重复编写校验逻辑;第三类是数据治理,比如用户输入的敏感词过滤、全站点的请求日志记录、响应数据的统一格式封装等。其次,过滤器的实现流程分为三个步骤,第一步是自定义类实现Filter接口,重写doFilter方法,在方法中编写过滤逻辑,处理完成后调用FilterChain的doFilter方法将请求传递给下一个过滤器或者目标资源,如果不符合要求也可以直接返回响应,中断请求的传递;第二步是配置过滤器的拦截规则,可以在web.xml中配置过滤器的名称、全类名和拦截路径,也可以使用@WebFilter注解直接配置拦截规则;第三步是服务器启动时会自动初始化所有过滤器,后续所有符合拦截规则的请求都会自动经过过滤器的处理。实例:比如在一个企业管理系统中,所有的POST请求都会出现中文乱码问题,如果每个Servlet都单独编写request和response的编码设置代码,不仅代码冗余,还容易出现遗漏。此时只需要编写一个字符编码过滤器,拦截所有的请求,统一设置request和response的编码为UTF-8,后续所有的Servlet都不需要再单独处理编码问题,后续如果需要调整编码格式,只需要修改过滤器的配置即可,大幅降低了代码的维护成本。解析:本题考察过滤器的实际应用,应用场景阐述4分,实现流程阐述4分,结合实例2分。过滤器的核心优势是代码无侵入、复用性强,所有和具体业务逻辑无关的通用功能都可以考虑用过滤器实现。结合实际案例,论述JavaWeb项目中避免SQL注入的常用方案和实现原理。答案:论点:SQL注入是JavaWeb项目中最常见、危害最高的安全漏洞之一,其核心成因是SQL的语法结构和用户输入的参数没有分离,必须通过规范的开发手段从根源上避免。论据:避免SQL注入的常用方案主要有三种,第一种是使用PreparedStatement预编译SQL,实现原理是预编译机制会在用户参数传入之前就将SQL的语法结构解析固定,后续用户输入的参数只会被当作普通的字符串填充到参数位置,不会被当作SQL的一部分执行,从底层避免了用户输入SQL片段篡改原有SQL逻辑的可能;第二种是对用户输入的参数进行合法性校验,对于手机号、身份证号、年龄等格式固定的参数,提前通过正则表达式、长度校验等方式过滤非法输入,拦截包含单引号、SQL关键字的恶意参数;第三种是使用成熟的ORM框架执行数据库操作,现在常用的持久层框架默认都采用预编译机制执行SQL,只要按照框架的规范使用标准API,不需要手动拼接SQL,就可以自动避免SQL注入的风险。实例:比如用户登录功能,如果用字符串拼接的方式编写SQL,当用户输入的账号为’or1=1-时,拼接后的SQL就会变成select*fromuserwhereaccount=’’or1=1-’andpassword=’’,此时SQL的逻辑变成了只要1=1就返回用户数据,无论用户输入什么密码都可以绕过登录校验,造成严重的安全漏洞。如果使用PreparedStatement编写登录SQL,就会将用户输入的整个账号作为字符串去匹配account字段,不会修改SQL的原有结构,就不会出现绕过登录的问题

温馨提示

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

评论

0/150

提交评论