Servlet 笔试真题及详细答案(企业实战版)_第1页
Servlet 笔试真题及详细答案(企业实战版)_第2页
Servlet 笔试真题及详细答案(企业实战版)_第3页
Servlet 笔试真题及详细答案(企业实战版)_第4页
Servlet 笔试真题及详细答案(企业实战版)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

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

文档简介

Servlet笔试真题及详细答案(企业实战版)说明:本套试题贴合JavaWeb企业招聘笔试真实考点,无理论空话,覆盖Servlet生命周期、运行原理、请求响应、会话管理、过滤器、异常处理等核心内容,适用于初级Java开发岗位笔试练习。一、单项选择题(10题)1.下列关于Servlet的说法正确的是()A.Servlet是客户端组件,运行在浏览器中B.Servlet是服务端Java组件,用于处理Web请求与响应C.Servlet只能处理GET请求D.Servlet每次请求都会创建新对象答案:B解析:Servlet是运行在Tomcat等Web服务器的服务端组件,专门接收、处理浏览器HTTP请求并返回响应;A错误,客户端运行的是HTML、JS;C错误,可处理GET、POST等多种请求;D错误,Servlet是单例,容器仅初始化一个实例。2.Servlet的生命周期中,只会执行一次的方法是()A.service()B.doGet()C.init()D.doPost()答案:C解析:init()方法在Servlet实例创建后、接收请求前执行一次,用于初始化资源;service、doGet、doPost每次客户端请求都会执行。3.下列哪个方法是Servlet真正处理请求的核心入口方法()A.init()B.destroy()C.service()D.main()答案:C解析:Tomcat接收请求后,会自动调用Servlet的service()方法,该方法会根据请求方式分发到doGet、doPost等方法;main方法不是Servlet生命周期方法。4.销毁Servlet实例、释放资源的方法是()A.close()B.destroy()C.finalize()D.stop()答案:B解析:服务器关闭、项目卸载时,容器会调用destroy()方法,仅执行一次,用于关闭流、释放连接等资源回收操作。5.HttpServletRequest对象的主要作用是()A.向客户端输出数据B.封装客户端的HTTP请求信息C.封装服务端响应信息D.管理服务器会话答案:B解析:HttpServletRequest封装了浏览器发起的所有请求数据,包括请求参数、请求头、请求地址、请求方式等;A、C是HttpServletResponse的作用;D是HttpSession的作用。6.下列关于Servlet单例特性说法错误的是()A.整个Web项目中同一个Servlet只有一个实例B.多线程并发访问Servlet,存在线程安全问题C.定义成员变量存储请求数据不会有线程问题D.局部变量是线程安全的答案:C解析:Servlet成员变量属于实例共享数据,多线程同时修改会出现数据错乱;请求相关数据必须定义为方法内局部变量,保证线程安全。7.实现请求转发的正确代码是()A.request.getRequestDispatcher("index.jsp").forward(request,response);B.response.sendRedirect("index.jsp");C.request.redirect("index.jsp");D.response.forward("index.jsp");答案:A解析:forward是服务器内部请求转发,通过RequestDispatcher实现;B是重定向,客户端二次请求;C、D为错误写法,无对应API。8.HttpSession的默认失效时间(Tomcat默认配置)是()A.10分钟B.30分钟C.60分钟D.永久有效答案:B解析:Tomcat默认session超时时间为30分钟,无任何请求访问会话时自动失效,可通过web.xml或代码手动修改。9.过滤器Filter的执行顺序是()A.放行资源后执行过滤逻辑B.前置拦截处理→放行请求→后置收尾处理C.仅在请求结束后执行D.随机执行答案:B解析:Filter核心方法doFilter中,先执行前置拦截代码,调用chain.doFilter()放行请求访问目标资源,资源执行完毕后,返回执行后置处理代码。10.web.xml中配置Servlet访问路径的标签是()A.<servlet-name>B.<servlet-class>C.<url-pattern>D.<welcome-file>答案:C解析:url-pattern用于指定Servlet的访问URL路径;servlet-name为Servlet别名,servlet-class指定Servlet全类名,welcome-file为默认欢迎页。二、填空题(5题)1.Servlet三层生命周期方法是________、________、________。答案:init()、service()、destroy()2.客户端重定向使用________方法,服务器内部转发使用________方法。答案:response.sendRedirect()、request.getRequestDispatcher().forward()3.Servlet中获取请求参数的核心方法是________。答案:getParameter(Stringname)4.Web三大域对象分别是________、________、________。答案:request、session、application(ServletContext)5.过滤器Filter的生命周期方法包含________、________、________。答案:init()、doFilter()、destroy()三、简答题(6题,核心高频考点)1.详细阐述Servlet完整生命周期标准答案:Servlet生命周期由Web容器(Tomcat)全权管理,分为三个阶段,全程单例运行:1.初始化阶段:服务器启动或首次访问Servlet时,容器加载Servlet类,创建唯一实例,调用init()方法,仅执行一次,用于初始化配置、加载资源。2.服务阶段:每接收一次客户端请求,容器开启新线程,调用service()方法,该方法根据HTTP请求方式,自动分发到doGet、doPost、doPut等对应方法,处理请求并响应数据,多次请求多次执行。3.销毁阶段:项目卸载、服务器正常关闭时,容器调用destroy()方法,仅执行一次,用于关闭IO流、释放数据库连接、清空缓存等资源回收。2.请说明转发(forward)和重定向(redirect)的核心区别(笔试高频)标准答案:1.请求次数:转发是一次请求,服务器内部跳转;重定向是两次请求,客户端收到响应后主动发起二次请求。2.地址栏变化:转发地址栏URL不变;重定向地址栏会更新为新跳转地址。3.数据共享:转发可共享request域数据;重定向无法共享request数据。4.跳转范围:转发只能跳转当前项目内资源;重定向可跳转外部网站、跨项目资源。5.效率:转发无需客户端参与,执行效率更高;重定向需要两次网络交互,效率偏低。3.Servlet为什么是线程不安全的?如何解决线程安全问题?标准答案:不安全原因:Servlet为单例对象,全局成员变量被所有请求线程共享,多线程并发读写成员变量时,会出现数据覆盖、错乱问题。解决方案:1.杜绝使用成员变量存储请求数据,所有请求临时数据使用方法局部变量;2.对共享资源添加同步锁synchronized(不推荐,会降低并发性能);3.使用ThreadLocal存储线程私有数据,实现数据隔离。4.简述Web三大域对象的作用范围标准答案:1.request(请求域):仅在一次请求内有效,请求转发可共享数据,请求结束数据立即销毁,适用于单次请求的临时数据传递。2.session(会话域):针对单个客户端浏览器,多次请求共享数据,浏览器关闭或session超时后数据失效,适用于存储用户登录状态、个人临时信息。3.application(全局域):整个Web项目全局有效,所有客户端共享数据,服务器启动创建、关闭销毁,适用于存储项目全局配置、在线人数等公共数据。5.GET和POST请求的区别标准答案:1.参数传递:GET参数拼接在URL后,明文展示;POST参数放在请求体中,隐藏传输。2.数据大小:GET有URL长度限制,无法传输大数据;POST无明确大小限制,可上传文件、大量数据。3.缓存特性:GET请求会被浏览器缓存,可回退刷新;POST默认不缓存,刷新会重复提交。4.安全性:GET参数暴露,安全性低;POST相对安全,适合提交密码、订单等敏感数据。5.书签保存:GET请求可保存为书签;POST无法保存书签。6.过滤器Filter的作用及使用场景标准答案:Filter是JavaWeb的拦截器组件,运行在Servlet之前,可拦截所有web资源请求,实现请求预处理、响应后处理,不修改原有业务代码,符合开闭原则。常用场景:1.全局编码过滤,统一设置请求响应编码(解决中文乱码);2.登录权限拦截,未登录用户禁止访问后台资源;3.过滤非法请求、拦截恶意参数;4.统一设置跨域请求头;5.请求日志记录、接口耗时统计。四、编程题(2道,笔试实操必考)1.编写一个基础HelloServlet,实现接收GET请求,浏览器输出HelloServlet标准答案代码:java

importjavax.servlet.ServletException;

importjavax.servlet.annotation.WebServlet;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjava.io.IOException;

importjava.io.PrintWriter;

//注解方式配置访问路径,无需web.xml

@WebServlet("/hello")

publicclassHelloServletextendsHttpServlet{

@Override

protectedvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

//设置响应编码,解决中文乱码

response.setContentType("text/html;charset=UTF-8");

PrintWriterout=response.getWriter();

//页面输出内容

out.write("HelloServlet!GET请求访问成功");

out.close();

}

}2.编写全局编码过滤器,统一解决Web项目中文乱码问题标准答案代码:java

importjavax.servlet.*;

importjavax.servlet.annotation.WebFilter;

importjava.io.IOException;

//拦截所有请求

@WebFilter("/*")

publicclassEncodingFilterimplementsFilter{

@Override

publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,FilterChainchain)throwsIOException,ServletException{

//统一设置请求、响应编码为UTF-8

request.setCharacterEncoding("UTF-8");

response.setContentType("text/html;charset=UTF-8");

//放行请求

chain.doFilter(request,response);

}

@Override

publicvoidinit(FilterConfigfilterConfig)throwsServletException{}

@Override

publicvoiddestroy(){}

}五、综合面试笔试题(压轴题)问题:简述Servlet处理一次HTTP请求的完整流程标准答案:1.客户端浏览器向Tomcat服务器发起HTTP请求,携带请求地址、参数、请求头信息;2.Tomcat服务器接收请求,解析URL地址,匹配web.xml或注解配

温馨提示

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

评论

0/150

提交评论