Java Web 开发综合测试题(含详细答案解析)_第1页
Java Web 开发综合测试题(含详细答案解析)_第2页
Java Web 开发综合测试题(含详细答案解析)_第3页
Java Web 开发综合测试题(含详细答案解析)_第4页
Java Web 开发综合测试题(含详细答案解析)_第5页
已阅读5页,还剩6页未读, 继续免费阅读

下载本文档

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

文档简介

JavaWeb开发综合测试题(含详细答案解析)适用场景:高校期末考核、企业实习生笔试、JavaWeb基础能力测评考试时长:90分钟满分:100分说明:试题涵盖Servlet、JSP、Cookie&Session、过滤器、监听器、JDBC、MVC架构等核心知识点,题型全面,答案附带详细解析,便于自查复盘。一、单项选择题(共15题,每题2分,共30分)1.下列不属于JavaWeb动态资源的是()A.JSP页面B.Servlet程序C.HTML静态页面D.自定义过滤器2.Servlet的生命周期中,只会执行一次的方法是()A.init()B.service()C.doGet()D.destroy()3.在JSP中,用于定义全局变量和方法的脚本元素是()A.<%%>B.<%=%>C.<%!%>D.<%@%>4.以下关于Cookie和Session的说法,正确的是()A.Cookie存储在服务器端B.Session存储在客户端C.Cookie可设置过期时间D.Session数据永久保存不会失效5.Servlet中,处理GET请求的核心方法是()A.doPost()B.doGet()C.execute()D.run()6.JSP九大内置对象中,代表页面输出流的是()A.requestB.responseC.outD.pageContext7.过滤器(Filter)的主要作用是()A.处理业务逻辑B.拦截请求和响应,做预处理/后处理C.操作数据库D.跳转页面8.下列EL表达式写法正确的是()A.${}B.#{}C.&{}D.!{}9.转发(forward)和重定向(redirect)的区别,说法错误的是()A.转发是服务器内部跳转,地址栏不变B.重定向是客户端二次请求,地址栏改变C.转发可以跨项目跳转D.重定向可以跨项目跳转10.JDBC中,用于执行预编译SQL语句的对象是()A.StatementB.PreparedStatementC.ResultSetD.Connection11.能够实现多个请求共享数据的域对象是()A.pageContextB.requestC.sessionD.以上都不对12.监听器(Listener)可以监听的事件不包括()A.会话创建与销毁B.应用启动与关闭C.请求创建与销毁D.浏览器关闭事件13.在web.xml中,用于配置Servlet访问路径的标签是()A.<servlet-name>B.<url-pattern>C.<servlet-class>D.<load-on-startup>14.JSTL中用于循环遍历的核心标签是()A.<c:if>B.<c:forEach>C.<c:choose>D.<c:set>15.MVC架构中,负责接收用户请求、调度业务的是()A.ModelB.ViewC.ControllerD.Entity二、填空题(共10空,每空2分,共20分)1.Servlet三大生命周期方法:__________、__________、destroy()。2.JSP页面的本质是一个__________。3.Web项目中,__________域对象作用范围最大,全局共享整个项目数据。4.Session默认过期时间是__________分钟。5.JDBC操作数据库的核心四步骤:加载驱动、__________、执行SQL、关闭资源。6.过滤器的执行流程:__________、处理请求、放行、响应后处理。7.JSP脚本注释分为__________注释和__________注释。8.重定向的跳转状态码是__________。三、简答题(共4题,每题8分,共32分)1.简述Cookie和Session的区别与联系。2.简述请求转发(forward)和重定向(redirect)的核心区别。3.简述Servlet和JSP的关系与区别。4.简述MVC架构的核心思想及各层职责。四、编程题(共1题,18分)需求:使用Servlet+JSP+JDBC实现用户登录功能,完成以下核心逻辑:1.编写登录JSP页面,提供用户名、密码输入框和登录按钮;2.编写LoginServlet,接收表单提交的用户名和密码;3.通过JDBC连接MySQL数据库,校验用户信息;4.登录成功跳转到成功页面,失败返回登录页并提示错误信息。要求:代码规范、注释清晰,实现参数获取、数据校验、页面跳转、异常处理核心逻辑。五、详细答案及解析(一)单项选择题答案+解析1.答案:C解析:JavaWeb资源分为静态资源和动态资源。HTML、CSS、JS属于静态资源,直接由服务器返回给浏览器,无需程序解析;JSP、Servlet、过滤器、监听器都是需要服务器编译运行的动态资源。2.答案:A解析:Servlet生命周期:服务器启动或首次访问Servlet时执行一次init()初始化方法;每次接收客户端请求都会执行service()(doGet/doPost)方法;服务器关闭时执行一次destroy()销毁方法。题目询问只会执行一次的初始化方法,选A。3.答案:C解析:<%!%>声明脚本,用于定义JSP全局变量、成员方法;<%%>普通脚本,编写局部代码;<%=%>输出脚本,输出数据到页面;<%@%>页面指令,导入依赖、设置页面属性。4.答案:C解析:Cookie存储在客户端浏览器,可手动设置setMaxAge()过期时间;Session存储在服务器端,默认超时失效,不会永久保存。ABD表述均错误。5.答案:B解析:Servlet规范中,GET请求由doGet()方法处理,POST请求由doPost()方法处理,service()方法会根据请求方式分发对应请求。6.答案:C解析:out对象是JspWriter类型,用于向浏览器输出文本内容;request接收请求数据,response响应请求,pageContext代表页面上下文。7.答案:B解析:过滤器是JavaWeb的拦截组件,核心功能是拦截所有匹配路径的请求和响应,完成编码过滤、权限校验、日志记录等预处理、后处理工作,不负责具体业务逻辑和数据库操作。8.答案:A解析:EL表达式标准写法为${表达式},用于快速获取域对象中的数据,简化JSP页面代码,#{}是Spring、MyBatis等框架的表达式,不属于EL。9.答案:C解析:转发是服务器内部跳转,只能在当前项目内跳转,地址栏不变、共享request数据;重定向是客户端两次请求,可跨项目、跨域名跳转,地址栏更新。10.答案:B解析:PreparedStatement是预编译SQL对象,可防止SQL注入,支持参数占位符,效率和安全性远高于普通Statement;Connection是数据库连接对象,ResultSet是查询结果集。11.答案:C解析:pageContext仅当前页面有效,request仅单次请求有效,session针对单次会话(多次请求)共享数据,application全局项目共享。12.答案:D解析:Web监听器可监听application、session、request三大域的创建、销毁、属性变更事件,无法监听客户端浏览器关闭的本地事件。13.答案:B解析:web.xml配置中,<url-pattern>指定Servlet的访问请求路径;<servlet-name>定义Servlet名称,<servlet-class>指定Servlet全类名。14.答案:B解析:<c:forEach>是JSTL核心循环标签,用于遍历集合、数组、数字;<c:if>为条件判断标签,<c:choose>为多分支判断标签。15.答案:C解析:MVC三层架构:Model(模型)处理业务逻辑和数据持久化;View(视图)展示页面数据;Controller(控制器)接收请求、分发业务、控制跳转。(二)填空题答案+解析1.init()、service()解析:Servlet完整生命周期三大核心方法:初始化init()、服务处理service()、销毁destroy()。2.Servlet解析:JSP页面经服务器编译后,本质就是一个Servlet程序,最终以Servlet的形式运行在服务器中。3.application(ServletContext)解析:四大域对象作用范围:application>session>request>pageContext。4.30解析:Tomcat服务器中,Session默认最大空闲过期时间为30分钟,可通过web.xml手动修改配置。5.获取数据库连接解析:JDBC标准流程:加载驱动类→获取Connection连接→创建SQL执行对象执行语句→关闭所有资源。6.请求拦截解析:过滤器完整执行流程:拦截客户端请求→预处理请求→放行资源→服务器处理响应→响应后处理。7.页面、html解析:JSP注释分为两种:<%--页面注释--%>(仅服务器可见,不输出到页面)、<!--html注释-->(会输出到浏览器源码)。8.302解析:302代表临时重定向,是Web开发中最常用的重定向状态码;301为永久重定向。(三)简答题详细答案1.Cookie和Session的区别与联系联系:二者都是Web会话跟踪技术,用于解决HTTP协议无状态的问题,记录用户会话信息,保障用户多次请求的数据连贯性。区别:①存储位置:Cookie存储在客户端浏览器,Session存储在服务器端;②安全性:Cookie可被客户端查看、修改,安全性低;Session数据存在服务器,安全性更高;③存储容量:Cookie容量小,单条Cookie不超过4KB;Session无明确容量限制;④生命周期:Cookie可手动设置永久有效或指定过期时间;Session默认30分钟空闲过期,服务器关闭数据清空;⑤依赖关系:Session的实现依赖Cookie,通过Cookie存储SessionID识别用户会话。2.转发(forward)和重定向(redirect)的核心区别①请求次数:转发是一次请求,服务器内部直接跳转;重定向是两次请求,服务器返回跳转指令,客户端重新发起请求;②地址栏变化:转发地址栏URL不变;重定向地址栏更新为新跳转地址;③数据共享:转发可共享request域数据;重定向二次请求,无法共享原request数据;④跳转范围:转发仅支持当前项目内部资源跳转;重定向可跨项目、跨域名跳转;⑤效率:转发无需客户端二次请求,执行效率更高;重定向效率相对较低。3.Servlet和JSP的关系与区别关系:JSP本质是Servlet的简化版本,JSP页面被Tomcat编译后会生成对应的Servlet类,最终都是通过Servlet容器运行,核心底层原理一致。区别:①编写形式:Servlet以Java代码为主,嵌套少量HTML;JSP以HTML页面为主,嵌套少量Java脚本代码;②职责定位:Servlet适合处理后台业务逻辑、请求调度;JSP适合前端页面展示、数据渲染;③开发效率:JSP页面开发更便捷,适合快速开发展示页面;Servlet代码规范性更强,适合复杂业务处理;④运行方式:Servlet需要手动配置访问路径;JSP可直接通过URL访问,无需额外配置。4.MVC架构的核心思想及各层职责核心思想:将Web项目的视图展示、业务逻辑、数据模型分层解耦,各层职责单一、互不干扰,提升代码复用性、可维护性和扩展性。各层职责:①Model(模型层):负责数据处理和业务逻辑,包含实体类、DAO数据库操作、业务Service,封装数据和核心业务规则,不参与页面展示;②View(视图层):负责数据展示和用户交互,主要是JSP、HTML页面,接收用户输入,展示后台返回的处理结果,不处理任何业务逻辑;③Controller(控制层):负责请求调度,主要是Servlet,接收客户端请求,调用Model层处理业务,根据处理结果跳转对应View视图。(四)编程题完整代码+详细解析环境说明:Tomcat9+MySQL8.0+JDK8,导入mysql-connector-java驱动包1.数据库表设计(user表)sql

CREATETABLE`user`(

`id`intPRIMARYKEYAUTO_INCREMENT,

`username`varchar(20)NOTNULLCOMMENT'用户名',

`password`varchar(20)NOTNULLCOMMENT'密码'

)ENGINE=InnoDBDEFAULTCHARSET=utf8;

--插入测试数据

INSERTINTO`user`(username,password)VALUES('zhangsan','123456');2.登录页面login.jspjsp

<%@pagecontentType="text/html;charset=UTF-8"language="java"%>

<html>

<head>

<title>用户登录</title>

</head>

<body>

<h3>用户登录系统</h3>

<%--展示登录错误提示--%>

<fontcolor="red">${errorMsg}</font>

<formaction="loginServlet"method="post">

用户名:<inputtype="text"name="username"placeholder="请输入用户名"><br/>

密  码:<inputtype="password"name="password"placeholder="请输入密码"><br/>

<inputtype="submit"value="登录">

</form>

</body>

</html>3.登录成功页面success.jspjsp

<%@pagecontentType="text/html;charset=UTF-8"language="java"%>

<html>

<head>

<title>登录成功</title>

</head>

<body>

<h3>恭喜,${username}!登录成功!</h3>

</body>

</html>4.核心Servlet:LoginServlet.javajava

importjavax.servlet.ServletException;

importjavax.servlet.annotation.WebServlet;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjava.io.IOException;

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

@WebServlet("/loginServlet")

publicclassLoginServletextendsHttpServlet{

//数据库连接参数

privatestaticfinalStringDRIVER="com.mysql.cj.jdbc.Driver";

privatestaticfinalStringURL="jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC";

privatestaticfinalStringUSER="root";

privatestaticfinalStringPWD="123456";

@Override

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{

//1.设置请求编码,解决中文乱码

request.setCharacterEncoding("UTF-8");

//2.获取表单提交的用户名和密码

Stringusername=request.getParameter("username");

Stringpassword=request.getParameter("password");

//3.基础非空校验

if(username==null||"".equals(username.trim())||password==null||"".equals(password.trim())){

request.setAttribute("errorMsg","用户名和密码不能为空!");

request.getRequestDispatcher("/login.jsp").forward(request,response);

return;

}

Connectionconn=null;

PreparedStatementpstmt=null;

ResultSetrs=null;

try{

//4.加载驱动、获取数据库连接

Class.forName(DRIVER);

conn=DriverManager.getConnection(URL,USER,PWD);

//5.编写预编译SQL,防止SQL注入

Stringsql="select*fromuserwhereusername=?andpassword=?";

pstmt=conn.prepareStatement(sql);

pstmt.setString(1,username);

pstmt.setString(2,password);

//6.执行查询

rs=pstmt.executeQuery();

//7.判断查询结果

if(rs.next()){

//登录成功:将用户名存入域对象,转发到成功页面

request.setAttribute("username",username);

request.getRequestDispatcher("/success.jsp").forward(request,response);

}else{

//登录失败:返回错误提示

request.setAttribute("errorMsg","用户名或密码错误!");

request.getRequestDispatcher("/login.jsp").forward(request,response);

}

}catch(Exceptione){

e.printStackTr

温馨提示

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

评论

0/150

提交评论