版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
javaweb考试复习题填空简答一、填空题(每空1分,共30分)1.JavaWeb应用的标准目录结构中,______目录用于存放HTML、CSS、JavaScript等静态资源,______目录下的内容无法被客户端浏览器直接访问,用于存放web.xml配置文件、编译后的Servlet类和第三方依赖包。2.Servlet接口定义了三个核心生命周期方法,分别是初始化方法init()、业务处理方法______、销毁方法______。3.HTTP协议是无状态协议,它默认不保存每次请求的状态信息,常见的会话跟踪技术有______、______、URL重写和隐藏表单域。4.HTTP协议中,______请求的参数会暴露在浏览器地址栏中,传输数据大小有限,______请求参数存储在请求体中,适合传输大容量数据,参数不会暴露。5.在HttpServletRequest对象中,获取单个请求参数值的方法是______,获取多个同名参数值的方法是______。6.Servlet中,用于保存当前Web应用全局信息的域对象是______,用于保存一次请求响应过程数据的域对象是______,用于保存一次会话过程数据的域对象是______。7.JSP本质上是一个______,容器会将JSP文件翻译为对应的Java类后编译运行。JSP的三大指令是page指令、______指令、taglib指令。8.JSP内置对象中,______对象用于获取请求参数、设置请求属性,______对象用于向客户端输出响应数据,______对象代表当前用户的会话。9.JDBC开发中,用于封装数据库连接的接口是______,用于执行预编译SQL语句的接口是______,用于封装查询结果的接口是______。10.过滤器配置中,使用______通配符表示拦截所有请求,使用______通配符表示拦截所有后缀名为jsp的请求。11.请求转发是______端内部跳转,整个跳转过程共发生______次客户端请求,浏览器地址栏地址不会发生变化。12.重定向是服务器通知客户端重新发起请求,整个过程共发生______次客户端请求,浏览器地址栏地址______发生变化(填会/不会)。13.解决POST请求中文乱码问题,可以调用request对象的______方法设置请求编码,解决响应中文乱码问题可以调用response对象的______方法设置响应编码和内容类型。14.EL表达式的核心作用是获取域对象中的属性值,基础语法格式是______,JSTL核心标签库中用于实现循环遍历集合的标签是______。15.MVC设计模式中,M代表模型层,V代表______,C代表______。填空题参考答案1.WebContent(或webapp);WEB-INF2.service();destroy()3.HttpSession(Session);Cookie4.GET;POST5.getParameter();getParameterValues()6.ServletContext;HttpServletRequest(Request);HttpSession(Session)7.Servlet;include8.request;response;session9.Connection;PreparedStatement;ResultSet10./*;*.jsp11.服务器;112.2;会13.setCharacterEncoding;setContentType14.${属性名};<c:forEach>15.视图层;控制层二、简答题(共70分,每题10分)1.请简述Servlet与JSP的区别与联系。2.请简述HTTP协议中GET请求与POST请求的核心区别。3.请对比说明JavaWeb中请求转发与重定向的区别,并分别说明各自的适用场景。4.请简述Session与Cookie的区别与联系,说明为什么开发中通常将二者结合使用实现会话跟踪。5.请简述Filter过滤器的执行流程,并列举Filter的三种常见应用场景。6.请简述JDBC操作数据库的完整流程,对比说明Statement与PreparedStatement的区别。7.请说明MVC设计模式在JavaWeb开发中的各层职责,分析MVC模式的优势。简答题参考答案1.答案:Servlet和JSP的联系:JSP本质上是Servlet的扩展,符合Servlet规范,JSP文件在服务器运行时,会被JSP容器自动翻译为Servlet源文件,再编译为字节码文件运行;二者都是JavaWeb中基于Servlet规范实现的服务器端动态网页技术,都可以处理客户端请求生成动态响应;在实际开发中二者配合使用,Servlet负责处理业务逻辑,JSP负责展示处理结果。二者的区别主要体现在四个方面:(1)编程语法不同:Servlet是纯Java类,需要在Java代码中通过输出流拼接HTML标签实现页面展示,代码冗余,调试维护难度大;JSP是在HTML静态页面中嵌入Java代码,更符合页面开发的习惯,编写展示逻辑更简单。(2)初始化时机不同:Servlet可以通过配置`load-on-startup`实现在容器启动时就完成初始化;JSP只有第一次被客户端访问时才会被翻译编译为Servlet,完成初始化,第一次访问速度较慢。(3)职责定位不同:在MVC设计模式中,Servlet通常作为控制层,负责接收请求、调用业务逻辑、控制跳转,不负责页面展示;JSP通常作为视图层,只负责从域中取出数据展示给用户,不处理业务逻辑。(4)访问方式不同:Servlet需要配置访问路径,才能被客户端访问;JSP作为页面资源,直接配置路径即可访问。2.答案:GET请求和POST请求都是HTTP协议中最常用的请求方法,核心区别如下:(1)参数存储位置不同:GET请求的所有参数都拼接在URL地址后,通过地址栏传递,参数对用户可见;POST请求的参数存储在HTTP请求体中,不会显示在地址栏,参数对用户不可见。(2)传输数据大小限制不同:由于浏览器和服务器对URL长度有限制,因此GET请求传输的数据大小通常被限制在几KB以内;POST请求参数存储在请求体中,理论上没有大小限制,可以传输几十MB甚至更大的文件数据。(3)安全性不同:GET请求参数暴露在地址栏,无法传输敏感信息,且容易被他人窃取,安全性较低;POST请求参数不会暴露,传输敏感数据安全性更高。(4)缓存特性不同:GET请求默认会被浏览器缓存,重复提交相同GET请求会直接返回缓存结果,不需要重新请求服务器;POST请求默认不会被浏览器缓存,重复提交都会向服务器发送新的请求。(5)幂等性不同:GET请求是幂等的,多次发送相同GET请求对服务器资源的影响是一致的;POST请求不保证幂等性,多次提交相同POST请求可能会在服务器生成多个重复资源,比如重复提交订单。(6)使用场景不同:GET请求适合获取静态资源、查询数据等不修改服务器资源的操作;POST请求适合提交表单、上传文件、修改服务器数据等操作。3.答案:请求转发和重定向是JavaWeb中两种实现资源跳转的方式,核心区别如下:(1)请求次数不同:请求转发是服务器内部的跳转行为,整个跳转过程只发起1次客户端请求,服务器内部完成资源调用;重定向是服务器通知客户端重新发起请求,整个过程共发起2次客户端请求。(2)地址栏变化不同:请求转发完成后,浏览器地址栏仍然保留第一次请求的地址,不会发生变化;重定向完成后,浏览器地址栏会更新为目标资源的地址。(3)跳转范围不同:请求转发只能跳转到当前Web应用内部的资源,无法跳转到外部站点的资源;重定向可以跳转到任意外部站点的资源。(4)数据共享不同:请求转发过程中,多个跳转资源共享同一个HttpServletRequest对象,因此可以通过request域传递数据;重定向是两次独立的请求,request域中的数据无法共享。(5)实现方式不同:请求转发通过`RequestDispatcher`的`forward()`方法实现,代码为`request.getRequestDispatcher("目标路径").forward(request,response);`;重定向通过`HttpServletResponse`的`sendRedirect()`方法实现,代码为`response.sendRedirect("目标路径");`。适用场景:(1)请求转发:需要将请求处理结果通过request域传递给页面展示,且目标资源在当前项目内部,通常使用请求转发,比如MVC模式中Controller处理完业务后,转发到JSP页面展示数据。(2)重定向:需要跳转到外部站点,或者需要避免用户刷新页面重复提交请求,通常使用重定向,比如用户登录成功后跳转到首页、提交订单成功后跳转到订单列表页面,使用重定向可以防止用户刷新页面重复提交订单。4.答案:Session和Cookie都是JavaWeb中实现会话跟踪的技术,用于解决HTTP协议无状态的问题,保存用户多次请求之间的状态。二者的联系:Session依赖Cookie实现会话标识的传递,用户第一次访问服务器时,服务器会创建一个唯一的Session对象,生成对应的会话标识JSESSIONID,服务器通过Set-Cookie响应头将JSESSIONID写入客户端的Cookie中,后续用户每次访问服务器,都会自动携带该Cookie,服务器从Cookie中取出JSESSIONID就能找到对应的Session对象,完成会话跟踪。如果用户禁用Cookie,才需要使用URL重写等替代方案传递JSESSIONID。二者的区别:(1)存储位置不同:Cookie存储在客户端浏览器中,Session存储在服务器端的内存中。(2)安全性不同:Cookie存储在客户端,容易被窃取和篡改,安全性较低;Session存储在服务器端,核心数据不会暴露给客户端,安全性较高。(3)存储容量不同:单个Cookie最大只能存储4KB数据,一个域名下最多只能存储几十个Cookie,存储容量有限;Session理论上可以存储任意容量的数据,只受服务器内存和配置限制。(4)生命周期不同:Cookie可以通过设置maxAge属性设置过期时间,关闭浏览器后只要过期时间未到,Cookie仍然会保存在客户端;Session默认会在服务器关闭、会话超时(默认30分钟用户无操作)后销毁,关闭浏览器后,客户端保存JSESSIONID的会话Cookie会失效,Session也会随之被销毁。开发中结合使用的原因:Cookie+Session的结合既发挥了二者的优势,又弥补了各自的不足:Cookie负责存储会话标识,解决了服务器识别用户的问题;Session负责存储用户的核心状态数据,保证了数据的安全性,相比于所有状态都存储在Cookie中,安全性更高,相比于不使用Cookie的URL重写,开发更简单,用户体验更好,因此是最常用的会话跟踪方案。5.答案:Filter过滤器是Servlet规范提供的一种扩展技术,能够对请求访问目标资源的过程进行拦截,在请求到达目标资源前后完成自定义逻辑处理。Filter的完整执行流程如下:(1)客户端发送请求访问服务器目标资源,容器首先判断当前请求是否匹配Filter配置的拦截路径,如果不匹配,直接访问目标资源;如果匹配,调用Filter的`doFilter()`方法。(2)在`doFilter()`方法中,首先完成请求的预处理逻辑,比如设置请求编码、验证用户登录权限;如果权限验证不通过,或者不需要访问目标资源,直接输出响应或者跳转到错误页面,终止请求流程;如果验证通过,调用`filterChain.doFilter(request,response)`方法放行请求,将请求传递给下一个Filter或者目标资源。(3)目标资源处理完请求生成响应后,响应会沿着过滤器链反向传递,回到当前Filter,执行`doFilter()`方法中放行语句之后的代码,完成响应的后处理逻辑。(4)所有后处理逻辑完成后,最终将响应返回给客户端浏览器。Filter常见应用场景:(1)统一编码处理:所有请求进入后统一设置请求和响应的字符编码,解决中文乱码问题,不需要在每个Servlet中重复编写编码设置代码;(2)登录权限拦截:拦截后台管理资源,验证用户是否登录,如果未登录直接跳转到登录页面,阻止未授权访问;(3)敏感词汇过滤:对用户提交的评论、文章内容进行敏感词汇过滤,替换敏感词汇后再存入数据库;(4)访问日志记录:记录所有请求的访问时间、客户端IP、请求路径等信息,用于后续日志分析;(5)静态资源缓存控制:对CSS、JavaScript、图片等静态资源设置缓存头,优化客户端缓存,提升访问速度。6.答案:JDBC是Java提供的一套用于执行SQL语句的JavaAPI,是Java程序连接操作数据库的标准规范,完整操作流程如下:(1)加载注册数据库驱动:通过`Class.forName("驱动类全限定名")`加载数据库厂商提供的JDBC驱动,比如MySQL8.x版本的驱动类为`com.mysql.cj.jdbc.Driver`;(2)获取数据库连接:通过`DriverManager.getConnection(url,数据库用户名,数据库密码)`方法,建立和数据库的连接,得到`Connection`连接对象;(3)创建SQL执行对象:根据需求创建`Statement`或者`PreparedStatement`对象,用于执行SQL语句;(4)执行SQL语句:如果执行查询语句,调用`executeQuery()`方法,得到封装查询结果的`ResultSet`结果集对象;如果执行插入、更新、删除语句,调用`executeUpdate()`方法,得到受影响的行数;(5)处理执行结果:如果是查询操作,遍历`ResultSet`结果集,取出每一行的数据封装到对应的JavaBean对象中;如果是更新操作,处理返回的受影响行数,判断操作是否成功;(6)释放资源:操作完成后,按照先开后关的顺序,依次关闭`ResultSet`、`SQL执行对象`、`Connection`,避免数据库连接泄漏。Statement和PreparedStatement的区别:(1)语法不同:Statement需要手动拼接SQL字符串,将参数直接拼接到SQL语句中;PreparedStatement使用`?`作为占位符预定义SQL结构,后续通过方法设置参数,不需要拼接SQL;(2)安全性不同:Statement存在严重的SQL注入漏洞,攻击者可以通过构造特殊参数拼接SQL,绕过身份验证或者窃取数据;PreparedStatement使用预编译机制,参数会被JDBC驱动转义,有效防止SQL注入,安全性更高;(3)性能不同:PreparedStatement会对SQL进行预编译,相同结构的SQL多次执行时可以复用预编译结果,执行效率远高于Statement;Statement每次执行都需要重新编译SQL,性能更低;(4)开发便捷性不同:PreparedStatement对日期、二进制流等类型参数的设置更便捷,不需要手动转换格式,开发效率更高;Statement需要手动拼接不同类型参数的格式,容易出错。因此实际开发中几乎都使用PreparedStatement操作数据库。7.答案:MVC是一种将应用程序按职责分层的设计模式,分为模型层(Model)、视图层(View)、控制层(Controller)三个部分,在JavaWeb开发中的各层职
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年初中物理实验操作技巧专项训练题库
- 2026年计算机二级C++程序设计理论考题汇编试卷
- 2026年工程造价员考试冲刺押题试卷
- 2026年司法考试刑法案例分析冲刺押题卷
- 2026年公务员考试《面试技巧》冲刺押题试卷
- 2026秋学期小学数学冀教版一年级上册(新教材)教学计划附教学进度表
- 2026招银网络科技春季校园招聘笔试历年典型考题及考点剖析附带答案详解
- 边坡锚固注浆加固施工方案
- 肠道门诊培训试题(含答案)
- 低钾血症试题及答案
- 人教版八年级历史上册第一次月考试卷(附答案)
- 管理类面试中的行为面试技巧与经验分享
- 2025年病历书写规范试题及答案
- 公司对实习生管理制度
- T/CECS 10201-2022丁基橡胶自粘防水卷材
- 弘扬长征精神主题班会课件
- 期末典例专练21:百分数与生活实际问题(折扣、成数、税率、利率)“综合版”(学生版+解析)-2024-2025学年六年级数学上册培优精练(北师大版)
- 童庆炳《文学概论》学习重点
- 钢化玻璃栏板安装施工方案
- 2023级电力-新能源装备技术专业人才培养方案
- 江苏省扬州市仪征市2024-2025学年七年级上学期期中英语试题
评论
0/150
提交评论