版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Javaweb练习题1(含答案)剖析一、单项选择题(共10题,每题2分,共20分)请将正确答案的选项填入括号中,每道题后附答案与剖析。1.以下HTTP方法中,用于向服务器提交资源全量修改请求,且要求满足幂等性的是()A.GETB.POSTC.PUTD.DELETE答案:C剖析:HTTP协议对不同方法的语义和特性做了明确规定:GET用于获取服务器资源,满足幂等性但不用于修改资源;POST用于提交新增数据,不满足幂等性(多次提交会生成多个资源);PUT用于对服务器已有资源做全量修改,要求满足幂等性(多次修改同一个资源结果一致);DELETE用于删除资源,满足幂等性但语义为删除而非修改,因此只有C选项符合要求。2.在JavaWeb规范中,Servlet对象的初始化方法`init()`被调用的正确时机是()A.项目启动时一定会被调用B.第一次请求该Servlet时一定会被调用C.每次请求Servlet都会调用一次`init()`D.仅当配置了`load-on-startup`且值为正整数时,项目启动时调用`init()`答案:D剖析:Servlet默认的初始化时机是第一次收到对该Servlet的请求时调用`init()`,如果在web.xml或注解中配置了`load-on-startup`正整数参数,会将初始化时机提前到项目启动时。`init()`方法在Servlet整个生命周期中只会被调用一次,因此A选项“一定启动时调用”错误,B选项“第一次请求一定调用”错误(启动时加载的场景会提前调用),C选项“每次请求都调用”错误,只有D选项描述正确。3.JSP的内置对象中,作用域仅为当前JSP页面,跨请求、跨转发都无法共享数据的对象是()A.pageContextB.requestC.sessionD.application答案:A剖析:JSP四大作用域的范围从小到大依次为:pageContext(仅当前JSP页面有效,离开当前页面数据就会销毁)、request(仅当前请求有效,转发属于同一次请求可以共享,重定向后请求改变数据销毁)、session(仅当前用户会话有效,同一个浏览器访问同一个项目期间都可以共享,会话过期后销毁)、application(整个Web应用有效,项目运行期间所有用户都可以共享,项目停止后销毁),因此符合描述的是A选项。4.关于请求转发和重定向的区别,下列说法错误的是()A.转发是服务器内部行为,重定向是客户端行为B.转发后地址栏不会变化,重定向后地址栏会变为目标地址C.转发可以共享request域数据,重定向不可以共享request域数据D.转发的整个过程共产生2次请求,重定向共产生1次请求答案:D剖析:转发是服务器接收到请求后,内部直接将请求转交给目标资源处理,整个过程只有一次请求一次响应,因此D选项描述颠倒,是错误选项。其余选项描述均正确:转发不会改变客户端地址栏,同请求下可以共享request数据,只能跳转到当前项目内部资源;重定向是服务器返回302状态码和目标地址,由客户端主动发起新的请求访问目标,地址栏会变化,两次请求无法共享request数据,可以跳转到任意外部站点。5.同一个Web应用中,当请求路径同时匹配多个Servlet的url-pattern规则时,优先级最高的匹配规则是()A.前缀模糊匹配(如`/*`、`/user/*`)B.扩展名匹配(如`*.do`、`*.jsp`)C.精确匹配D.默认Servlet匹配答案:C剖析:Servlet规范中url-pattern的优先级从高到低为:精确匹配>前缀模糊匹配>扩展名匹配>默认Servlet匹配,因此精确匹配优先级最高,C选项正确。例如请求路径为`/user/add`,同时匹配精确匹配的`/user/add`、前缀匹配的`/user/*`、模糊匹配的`/*`,最终会调用精确匹配的Servlet。6.关于Cookie和Session的区别,下列说法正确的是()A.Cookie存储在服务器端,Session存储在客户端B.Session必须依赖Cookie实现,无法脱离Cookie工作C.单个Cookie的大小一般有限制,主流浏览器规范限制不超过4KBD.关闭浏览器后,Session一定会立即被服务器销毁答案:C剖析:A选项描述颠倒:Cookie存储在客户端浏览器,Session存储在服务器端,错误;B选项:Session默认依赖Cookie传递sessionId,但如果浏览器禁用Cookie,可以通过URL重写、隐藏表单域传递sessionId,因此Session不必须依赖Cookie,错误;C选项:主流浏览器对单个Cookie的大小限制约为4KB,描述正确;D选项:关闭浏览器后,存储sessionId的会话Cookie会失效,用户下次访问无法获取原来的Session,但服务器端的Session数据会保留到配置的超时时间才会销毁,不会立即销毁,错误。7.JavaWeb中的Filter过滤器,下列哪个方法会在Filter实例销毁前调用,用于释放占用的资源()A.`init(FilterConfigconfig)`B.`doFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)`C.`destroy()`D.`destroyFilter()`答案:C剖析:Filter接口定义了三个核心方法,对应生命周期的三个阶段:`init()`用于过滤器初始化,`doFilter()`用于拦截处理请求,`destroy()`用于过滤器销毁前释放资源,不存在`destroyFilter()`方法,因此C选项正确。8.JSP中,下列哪个指令用于在JSP编译阶段引入其他文件内容,最终和当前JSP生成同一个Servlet文件()A.`<%@page%>`B.`<%@include%>`C.`<jsp:include>`D.`<jsp:directive.include>`答案:B剖析:`<%@page%>`用于设置JSP页面的全局属性,如编码、导入类包,不符合要求;`<%@include%>`是静态包含指令,在编译阶段就会把被包含文件的内容合并到当前JSP,最终只生成一个Servlet文件,符合描述;`<jsp:include>`是动态包含,运行时才调用被包含资源生成响应,当前JSP和被包含JSP会生成各自的Servlet,不符合要求,因此B选项正确。9.HTTP协议中,当用户请求的资源不存在时,服务器默认返回的状态码是()A.200B.302C.403D.404答案:D剖析:HTTP状态码的规则:200表示请求成功,302表示重定向,403表示请求资源被权限拒绝,404表示请求资源不存在,因此D选项正确。10.下列Servlet监听器中,用于监听ServletContext域对象的属性添加、修改、删除事件的是()A.`ServletContextListener`B.`ServletContextAttributeListener`C.`ServletRequestAttributeListener`D.`HttpSessionAttributeListener`答案:B剖析:`ServletContextListener`用于监听ServletContext对象本身的创建和销毁事件,`ServletContextAttributeListener`用于监听ServletContext域的属性变化事件,因此B选项正确。二、多项选择题(共5题,每题4分,共20分)1.下列属于Servlet核心方法的有()A.`init()`B.`service()`C.`destroy()`D.`doGet()`E.`doPost()`答案:ABCDE剖析:`init()`、`service()`、`destroy()`是Servlet声明周期的三个核心方法,对于处理HTTP请求的`HttpServlet`子类,`service()`方法会根据请求方法类型调用对应的`doGet()`、`doPost()`方法,这两个方法也是开发中需要重写的核心方法,因此全部选项都正确。2.下列属于JSP四大作用域对应对象的有()A.pageContextB.requestC.sessionD.applicationE.response答案:ABCD剖析:JSP四大作用域分别为page、request、session、application,对应对象为pageContext、request、session、application,response是响应对象,不属于作用域对象,因此E选项错误,选ABCD。3.下列关于GET和POST请求的区别,说法正确的有()A.GET请求参数会拼接在URL地址后,POST请求参数放在请求体中B.GET请求大小一般受浏览器和服务器限制,POST请求理论上没有大小限制C.GET安全性低于POST,因为参数暴露在地址栏,会被保存在浏览器历史、日志中D.GET语义用于获取服务器资源,POST语义用于向服务器提交数据答案:ABCD剖析:四个选项描述均符合GET和POST的特性:HTTP规范明确了二者的语义区别,参数存储位置不同带来了大小限制和安全性的区别,因此全选。4.下列属于JavaWeb常用的页面展示技术的有()A.JSPB.HTMLC.ThymeleafD.FreemarkerE.Servlet答案:ABCD剖析:Servlet是JavaWeb的后端控制器,负责请求处理和分发,不属于页面展示技术;JSP、Thymeleaf、Freemarker都是服务端模板引擎,用于生成动态页面,HTML是前端页面标记语言,都属于页面展示技术,因此选ABCD。5.关于Session超时时间,下列说法正确的有()A.Session的默认超时时间一般是30分钟,由Tomcat等Web服务器默认配置B.可以在web.xml中通过`<session-timeout>`节点配置整个项目的Session超时时间,单位为分钟C.可以调用`session.setMaxInactiveInterval()`方法设置单个Session的超时时间,单位为秒D.设置超时时间为负数(如-1)表示Session永不过期答案:ABCD剖析:四个选项描述均符合JavaWeb对Session超时的配置规则,需要注意`setMaxInactiveInterval`的单位是秒,web.xml中`session-timeout`的单位是分钟,配置为负数表示永久有效,因此全选。三、填空题(共5题,每空2分,共20分)1.HttpServlet中,处理HTTPGET请求的方法是__________,处理HTTPPOST请求的方法是__________。答案:`doGet()`、`doPost()`剖析:HttpServlet针对不同HTTP请求方法提供了对应的处理方法,GET请求对应`doGet()`,POST请求对应`doPost()`,开发中通常会在`doGet()`中调用`doPost()`实现统一处理。2.HttpServletResponse对象中,实现请求重定向的方法是__________。答案:`sendRedirect(Stringlocation)`剖析:调用`sendRedirect()`方法后,服务器会返回302状态码和Location响应头,通知浏览器重定向到目标地址。3.JavaWeb中MVC设计模式里,M代表__________,V代表__________,C代表__________。答案:模型(Model)、视图(View)、控制器(Controller)剖析:MVC是JavaWeb主流的设计模式,Model负责封装业务逻辑和数据,View负责页面展示,Controller负责请求分发和流程控制,实现了分层解耦。4.所有自定义JavaWeb过滤器都必须实现的接口是__________。答案:`javax.servlet.Filter`剖析:Filter接口定义了过滤器的核心方法规范,所有自定义过滤器都必须实现该接口。5.多个Filter拦截同一个请求时,Filter链的执行顺序由__________决定。答案:Filter的配置顺序剖析:使用web.xml配置Filter时,按照`<filter-mapping>`的配置顺序排序,先配置的先执行;使用`@WebFilter`注解配置时,默认按照Filter类名的字典顺序排序。四、简答题(共3题,每题10分,共30分)1.请简述请求转发和重定向的核心区别,列出至少5点。参考答案与剖析:请求转发和重定向是JavaWeb中两种跳转方式,核心区别如下:(1)请求本质不同:转发是服务器内部跳转,整个过程只有1次请求1次响应;重定向是客户端跳转,整个过程有2次请求2次响应。(2)地址栏变化不同:转发不会改变浏览器地址栏的URL;重定向后地址栏会变为目标资源的URL。(3)数据共享不同:转发属于同一次请求,可以共享request域中的数据;重定向是两次独立请求,无法共享request域数据,只能通过session等方式共享数据。(4)跳转范围不同:转发只能跳转到当前Web应用内部的资源;重定向可以跳转到任意外部站点的资源。(5)速度不同:转发不需要客户端发起二次请求,服务器内部处理,速度更快;重定向需要客户端发起新请求,速度相对较慢。(6)写法不同:转发通过`request.getRequestDispatcher("路径").forward(request,response)`实现;重定向通过`response.sendRedirect("路径")`实现。2.请简述JSP的执行过程。参考答案与剖析:JSP本质是Servlet,执行过程分为以下四个步骤:(1)翻译阶段:客户端发起JSP请求后,Web容器(如Tomcat)会将JSP文件翻译为Servlet的Java源代码,过程中会把JSP的HTML标签、脚本表达式都转化为`response.getWriter().write()`的输出代码。(2)编译阶段:翻译完成后,Web容器将生成的Servlet源代码编译为可执行的class字节码文件,加载到JVM中。(3)运行阶段:容器调用编译好的Servlet的服务方法,处理请求生成响应结果,返回给客户端。(4)更新阶段:如果JSP文件内容被修改,容器会重新执行翻译、编译过程,生成新的class文件,后续请求使用新的Servlet处理。因此JSP第一次访问时速度较慢,因为需要完成翻译和编译,后续访问直接调用已编译的Servlet,速度会明显提升。3.请说明POST请求中文乱码的产生原因,以及解决方法。参考答案与剖析:乱码产生原因:浏览器发送POST请求时,会按照指定的编码格式对请求参数进行编码,而服务器端获取请求参数时,如果使用和浏览器不同的编码格式进行解码,就会出现中文乱码。Tomcat8及以后版本已经默认对GET请求参数使用UTF-8解码,GET乱码基本已经解决,而POST请求参数放在请求体中,需要服务器手动指定解码格式,因此容易出现乱码。解决方法:在获取任何请求参数之前,调用`request.setCharacterEncoding("UTF-8")`,指定请求体的解码格式为UTF-8,即可解决POST中文乱码。该方法只对请求体生效,因此必须放在所有获取请求参数的代码之前才能生效,开发中通常将该逻辑放在全局乱码过滤器中实现统一处理。如果需要解决响应中文乱码,额外添加`response.setContentType("text/html;charset=UTF-8")`即可,该方法同时设置了服务器响应编码和浏览器解码格式,解决响应乱码。五、编程题(共1题,30分)请编写一个全局过滤器,用于解决整个JavaWeb项目所有请求的中文乱码问题,要求拦截所有请求,支持自定义编码配置,写出完整代码并说明核心逻辑。参考答案与剖析:基于Servlet3.0+注解的完整代码如下:```javaimportjavax.servlet.*;importjavax.servlet.annotation.WebFilter;importjavax.servlet.annotation.WebInitParam;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importjava.io.IOException;/*全局中文乱码处理过滤器*/@WebFilter(urlPatterns="/*",//拦截所有请求initParams=@WebInitParam(name="encoding",value="UTF-8")//默认编码UTF-8)publicclassCharacterEncodingFilterimplementsFilter{privateStringencoding;@Overridepublicvoidinit(FilterConfigfilterConfig)throwsServletException{//从过滤器初始化参数获取编码,支持自定义修改this.encoding=filterConfig.getInitParameter("encoding");//如果未配置,默认使用UTF-8}}@OverridepublicvoiddoFilter(ServletRequestservletRequest,ServletResponseservletResponse,FilterChainfilterChain)throwsIOException,ServletException{HttpServletRequestrequest=(HttpServletRequest)servletRequest;HttpServletResponseresponse=(HttpServletResponse)servletResponse;//设置请求解码编码,解决POST请求中文乱码request.setCharacterEncoding(encoding);//设置响应编码,解决响应输出中文乱码respons
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 磷化铟单晶片项目社会稳定风险评估报告
- 2026年煤矿机械操作人员安全技能再提升考核试卷及答案
- 2026年传染病及突发公共卫生事件防治知识培训试题及答案
- 年产50万吨特种工程前端关键材料项目可行性研究报告模板-立项备案
- 耐高温尼龙市场调查报告
- 2026年会计专业技术资格《中级会计》实务考试押题
- 2026年事业单位招聘档案管理岗位操作流程模拟试卷
- 2026年统招专升本《教育理论》模拟试卷案例分析解析
- 2026秋小学粤教粤科版版科学五年级上册第1单元 我们的身体《第2课 嗅觉和视觉》教学设计
- 2026秋学期小学苏教版数学四年级上册教学计划
- GB/T 191-2025包装储运图形符号标志
- 老年护理专科考试题库及答案
- 国学礼仪课程课件大纲
- 山东省潍坊市寿光市2026届中考二模英语试题含答案
- 医疗结构化面试经典100题及答案
- 汽修店章程范本
- 绿色内河货运对水生态的影响
- GA/T 2097-2023执法办案管理场所信息应用技术要求
- 2024届中国五环工程限公司校园招聘高频考题难、易错点模拟试题(共500题)附带答案详解
- 过敏性紫癜课件PPT
- 浙江省通用安装工程预算定额第四册
评论
0/150
提交评论