第1章 Web 前端基础
1.在以下标记中,用于改置页面标题的是()。
A. <title>
B.
C. <head>
D. <html>
注:caption是表格名称(标题)
- 若设计网页的背景图形为bg.png,在以下标记中正确的是()。
A. <body background="bg.png">
B. <body ground="bg.png">
C. <body image="bg.png">
D. < body bgcolor="bg.png">
- 下列关于 HTML 文件的说法正确的是()。
A. HTML 标记都必须配对使用
B. 在<title>和</itle>标记之间的是头信息
C. HTML 标记是区分大小写的,跟表示的意思是不一样的
D. <!-- -->标记是注释标记
注:HTML标签是无关大小写的,跟表示的意思是一样的
- 下列()表示的不是按钮。
A. type="submit" B. type="reset"
C. **type="myButton" ** D. type="button
- 若产生一个4行30列的多行文本域,在以下方法中,正确的是()。
A. <input type="text" rows="4" cols="30" name="txtintrol">
B. <textarea rows="4" cols="30" name="txtintro">
C. <textarea rows="4" cols="30" name="txtintro"></textarea>
D. <textarea rows="30" cols="4" name="txtintro"*</textarea>
下列属性中用于设置文本框显示宽度的属性是()。
A. size
B. maxlength
C. value
D. length下面对表单的说法错误的是()。
A. 表单在Web页面中用来给访问者填写信息,从而能采集客户端信息,使页面具有交互信息的功能
B. 当用户填写完信息后单击普通按钮做提交(submit)操作
C. 一个表单用<form></form>标签来创建
D. action 属性的值是指处理程序的程序名(包括网络路径、网址或相对路径)
- 下面说法中错误的是()。
A. 在HTML语言中,<input>标记具有重要的地位。它能够将浏览器中的控件加载到HTML 文档中,该标记既有开始标记,又有结束标记
B. <input type="text”>是设定一个单行的文本输入区域
C. size 属性指定控件宽度,表示该文本输入框所能显示的最大字符数
D. maxlength 属性表示该文本输入框允许用户输入的最大字符数
- 下面对于按钮的说法中正确的是()。
A. 按钮可分为普通按钮、提交按钮和重置按钮
B. <input type="button”>表示这是一个提交到服务器的按钮
C. <input type="reset">表示这是一个普通按钮
D. name 属性用来指定按钮页面显示的名称
- 下面说法中错误的是()。
A. <input type="checkbox " checked>中的checked 属性用来设置该复选框默认是否被选中
B. <input type="hidden”>表示一个隐藏区域,用户可以在其中输入某些要传选的信息
C. <input type="password”>表示这是一个密码区域,当用户输入密码时区域内第会显示“*”号
D. <input type="radio">表示这是一个单选按钮
注:<input type="hidden”>表示一个隐藏区域,用户无法在其中输入信息。
- 下列说法中错误的是()。
A. <select></select>标记对用来创建一个菜单下拉列表框
B. 下拉列表框中的 multiple 属性不用赋值,直接加入到标记中即可使用,加入此属性后列表框就可以多选
C. <option>标记用来指定列表框中的一个选项
D. 不可以设定输入多行的文本区的大小
- 下面对于样式表的说法中错误的是(
A. CSS 就是 Cascading Style Sheets,中文翻译为“层叠样式表”,简称样式表
B. 将CSS 指定的格式加入到 HTML 中的方法有两种
C. 外部链接CSS 时需要在HTML文件里加一个超链接,连接到外部的CSs如
D. 内定义 CSS 时需要在 HTIML 文件内的<head>/bead标记对之同加一段CSS的描述内容
注:CSS将指定的格式加入到HTML中的方法就一种,即在HTML文件内的<head>标签进行定义。
- 下面对于样式表的说法中错误的是()。
A.CSS 的定义由3个部分构成,即选择符(selector)、属性(properties)和属性的取值(value)
B.选择符可以是多种形式,一般是要定义样式的HTML标记,用户可以通过此方法定义它的属性和值,属性和值要用逗号隔开
C. CSS 可以定义字体属性
D. CSS 可以定义颜色和背景属性
注:选择符不需要用逗号隔开属性和值。
14.下列说法中错误的是()。
A. p {font-family:"sans serif"} 定义段落字体 sans serif
B. p{text-align:"center;color:red"}定义段落居中排列,并且段落中的文字为红色
C. background-image 属性用来设置背景图片
D. background-color 属性用来设置背景颜色
注:在CSS中,多个属性应该使用分号而不是逗号进行分隔。
15.()对象表示浏览器的窗口,可用来检索关于该窗口状态的信息。
A. document
B. window
C. location
D. history
16.() 对象表示给定浏览器窗口中的 HTML 文档,用来检索关于文档的信息。
A. document
B. window
C. screen
D. history
17.()方法要求窗口显示刚刚访问的前一个页面。
A. back()
B. go()
C. display()
D. view()
- 有关变量的命名规则,下列说法中错误的是()。
A. 以字母、下画线(_)或美元符号($)开头
B. 首字符之外的字符可以是下画线、美元符号,或任何的字母、数字
C. 不能有空格,不区分大小写
D. 不能使用 JavaScript 中的关键字或保留字命名
单击按钮触发的事件是()。
A. onClick
B. onFocus
C. onChange
D. onLoad页面加载时产生的事件是()。
A. onClick
B. onFocus
C. onChange
D. onLoad
21.用HTML编写网页版个人简历,具体要求如下:
(1)页面内容以 DIV+CSS形式体现。
(2)信息内容包括个人基础信息、近期照片、学习经历、兴趣爱好、求职意间。
<!DOCTYPE html>
<meta charset="UTF-8">
<html>
<head>
<style>
.resume {
width: 60%;
margin: auto;
background-color: #f2f2f2;
padding: 20px;
font-family: Arial, sans-serif;
}
.section {
margin-bottom: 20px;
}
.section h2 {
color: #333;
}
.section p {
color: #666;
}
</style>
</head>
<body>
<div class="resume">
<div class="section">
<h2>个人基础信息</h2>
<p>姓名:张三</p>
<p>年龄:25</p>
<p>性别:男</p>
<p>电话:123456789</p>
<p>邮箱:[email protected]</p>
</div>
<div class="section">
<h2>近期照片</h2>
<img src="photo.jpg" alt="近期照片">
</div>
<div class="section">
<h2>学习经历</h2>
<p>2015-2019:北京大学,计算机科学与技术专业</p>
<p>2019-至今:清华大学,人工智能专业</p>
</div>
<div class="section">
<h2>兴趣爱好</h2>
<p>阅读</p>
<p>旅行</p>
<p>编程</p>
</div>
<div class="section">
<h2>求职意向</h2>
<p>期望职位:人工智能工程师</p>
<p>期望薪资:面议</p>
<p>期望地点:北京</p>
</div>
</div>
</body>
</html>
第2章 Java Web 开发环境的构建
1.安装 Tomcat 服务器所在的计算机需要事先安装JDK 吗?
安装Tomcat服务器所在的计算机需要事先安装JDK(Java开发工具包)。因为Tomcat是用Java语言编写的,它需要Java运行环境来正常工作。因此,在安装Tomcat之前,必须确保计算机上已经安装了JDK。
- Tomcat 服务器的默认端口号是什么?如果想修改该端口号,应该修改哪个文件?
Tomcat服务器的默认端口号是8080。如果想修改该端口号,应该修改Tomcat的配置文件server.xml。在该文件中,可以找到对应的端口配置并进行修改。
- First.jsp 和 first.jsp 是否为相同的JSP文件名?
在Web程序中,First.jsp和first.jsp被视为相同的JSP文件名。
- JSP 引擎是怎样处理JSP 页面中的HTML 标记的?
JSP引擎会将JSP页面中的HTML标记直接输出到响应的页面中。当客户端请求JSP页面时,JSP引擎会解析JSP页面,将其中的HTML标记直接发送给客户端,使得客户端可以渲染页面。同时,JSP引擎也会处理其中的JSP元素和脚本代码,并生成相应的Java Servlet代码来处理请求和生成响应。
- 当用户请求JSP 页面时,JSP 引擎将会执行该页面的字节码文件响应客户的请求,执行字节码文件的结果是()。
A.发送一个JSP 源文件到客户端
B. 发送一个 Java 文件到客户端
C. 发送一个 HTML 页面到客户端
D. 什么都不做
第3章 JSP语法
1.JSP 页面由哪几种主要元素组成?
HTML页面标签:这是用来构建页面结构的HTML代码。
指令:指令是用来定义整个页面的相关信息,例如页面的字符集编码等。指令格式为<%@指令名 属性名=”值”%>。
表达式:表达式是用于在JSP页面中进行数据绑定和计算的,例如获取请求参数、数据库查询结果等。表达式的格式为 <%=表达式%>。
代码片段:代码片段是在JSP页面中嵌入的Java代码,可以用来处理复杂的业务逻辑。代码片段的格式为 <%java代码%>。
声明:声明是定义类成员的地方,其格式为 <%! 类成员 %>。
注释:注释是用来解释代码或者提供其他信息的一种方式,其格式为 <%-- jsp注释内容 --%>。
动作:动作是JSP页面中执行特定任务的标签,如包含其他文件、导入Java包等。动作的格式为 jsp:动作名</jsp:动作名>。
- 如果有3个用户访问一个JSP 页面,则该页面中的Java 程序片将被执行几次?
如果有3个用户访问一个JSP页面,该页面中的Java程序片段将会被执行3次,分别为每个用户的访问执行一次。每次访问都会触发JSP引擎执行相应的Java程序片段来生成动态内容。
3."<%!"和"%>"之间的声明的变量与 "<%"和"%>"之间的声明的变量有何不同?
"<%!" 和 "%>" 之间的声明用于定义全局变量和方法,它们会被插入到生成的servlet类的成员变量或方法中,因此这些变量和方法在整个JSP页面中都是可见的。
而 "<%" 和 "%>" 之间的声明用于写入Java代码片段,这些代码片段会被插入到生成的servlet类的service()方法中。因此,这些变量和方法只在当前的代码片段内部可见。
- 动作标记 include 和指令标记 include 的区别是什么?
jsp:include 是一个动作标记,它在运行时动态包含其他文件的内容,可以包含静态或动态资源,包含的内容将在运行时被处理和执行。 <%@ include %> 是一个指令标记,它在翻译阶段静态地包含其他文件的内容,包含的内容将在翻译阶段被插入到JSP页面中。
jsp:include 可以包含动态的内容,例如其他JSP页面或Servlet的输出。 <%@ include %> 只能包含静态的内容,例如HTML片段或文本文件。 因此,主要区别在于包含的时间点和包含内容的类型。
5.在一个JSP 页面中是否允许使用 page指令为 contentType 属性设置多个值?是否许使用 page 指令为 import 属性设置多个值?
在一个JSP页面中,page指令的contentType属性只能设置一个值。这个值用于指定生成的Servlet响应的内容类型。 同样地,page指令的import属性也只能设置一个值。这个值用于导入Java类或包,以便在JSP页面中使用这些类。 因此,page指令的contentType属性和import属性都只能设置单个值。
- 用户可以在以下()标记之间插入 Java 程序片。
A.“<%”和“%>”
B.“<%”和“/>”
D.“<%”和“!>”
C. “</”和“%>”
7.JSP 的page 指令的language属性的默认值是()。
A. Java
В. С
C. CH
D. SQL
- 用户可以在以下()标记之间插入变量与方法声明。
A. “<%”和“%>”
B.“<%!”和“%>”
C.“</”和“%>”
D.“<%”和“ >”
9.下列变量声明在()范围内有效。
<%! Date dateTime;
int countNum;
%>
A. 从定义开始处有效,客户之间不共享
B. 在整个页面内有效,客户之间不共享
C. 在整个页面内有效,被多个客户共享
D. 从定义开始处有效,被多个客户共享
10、在“ ”和 ”标记之同声明的Java方法称为页面的成员方法,其()有效。
A. 从定义处之后
B. 在整个页面内
C. 从定义处之前
D. 不确定
11.在“<%=”和“%>”标记之间放置()可以直接输出其值。
A.变量
B. Java 表达式
C.字符串
D. 数字
- include 指令用于在JSP 页面中静态插入一个文件,所插入文件可以是JSP 页画、HTML 网页、文本文件或一段Java 代码,但必须保证插入后形成的文件是()。
A.一个完整的HTML 文件
C.一个完整的TXT文件
B.一个完整的JSP文件
D.一个完整的 Java 源文件
- 组成“<%=”标记的各字符之间()。
A. 可以有空格
B.不可以有空格
C. 必须有空格
D. 不确定
第4章 JSP内置对象
- 下面()操作不能关闭session对象。
A. 用户刷新当前界面调用
B. 用户关闭浏览器
C. session 达到设置的最长“发呆”时间
D. session 对象的 invalidate()方法
- 有如下程序片段:
<form>
<input type = "text" name = "id">
<input type = "submit" value ="提交">
</form>
下面()语句可以获取用户输入的信息。
A. request.getParameter("id");
B. request.getAttribute("submit");
C. session.getParameter(key, "id");
D. session.getAttribute(key, "id");
- 下面的()内置对象是对客户的请求做出响应,向客户端发送数据的。
A. request
B. session
C. response
D. application
- 可以使用()方法实现客户的重定向。
A. response.setStatus;
B. response.setHeader;
C. response.setContentType;
D. response.sendRedirect;
- 下面不属于JSP 内置对象的是()。
A. out 对象
B. response 对象
C. application 对象
D. cookie 对象
- 下面对象中作用域最大的是(
A. page
B. request
C. application
D. session
- 在JSP 中保存用户会话信息使用()对象。
A. page
B. request
C. application
D. session
- 如果选择一个对象保存聊天室信息,则选择()。
A. page
B. request
C. application
D. session
注:在聊天室应用中,如果要保存聊天室信息,应该选择C. application 对象。因为 application 对象是全局的,可以在整个应用程序中共享数据,适合用于保存聊天室信息这样的全局数据。
- 什么对象是JSP 的内置对象?常见的内置对象有哪些?
具体内容写过一遍了不再赘述https://blog.csdn.net/qiqi_liuliu/article/details/13548350110.request、session 和 application 对象的作用域是什么?它们之间有什么区别?
与上一题一样,直接点超链接里头看
- 一个用户在不同 web 服务中的 session 对象相同吗?一个用户在同一 Web 服务的不同子目录中的 session 对象相同吗?
不同的Web服务中,即使是同一个用户,其session对象也是不同的。每个Web服务都有自己独立的session管理机制,因此无法共享session对象。 在同一个Web服务的不同子目录中,session对象是相同的。这是因为session对象是与用户的会话相关联的,而不是与特定的子目录相关联的。因此,无论用户访问Web服务的哪个子目录,其session对象都是相同的。
- session 对象的生命周期依赖于哪些因素?
- 会话期间:Session对象的生命周期与用户的会话期间相关联。当用户在浏览器中打开一个会话并与Web服务器进行交互时,会话开始;当用户关闭浏览器或会话超时时,会话结束。
- 会话超时设置:Web服务器通常会设置session的超时时间,超过这个时间没有活动的会话将被销毁。这个超时时间可以在服务器的配置中进行设置。
- 手动失效:Session对象也可以被程序员手动失效,通过调用session.invalidate()方法来销毁session对象。
- 简述 forward 动作标记与 response.sendRedirect()两种跳转的区别。
- 执行位置:- forward动作标记是在服务器端执行的,由服务器内部进行页面跳转,客户端浏览器不知道页面的真实路径。- response.sendRedirect()是在客户端执行的,服务器会向客户端发送一个重定向的响应,客户端浏览器会再次发送请求到新的URL。
- URL变化:- forward动作标记不会改变浏览器的URL,因为是服务器内部进行的页面跳转。- response.sendRedirect()会改变浏览器的URL,因为是客户端重新发送请求到新的URL。
- 数据共享:- forward动作标记可以在跳转的过程中共享request域中的数据。- response.sendRedirect()不能直接在跳转的过程中共享数据,需要通过URL参数或者session来传递数据。
第5章 JSP 与 JavaBean
- 下面方式中正确使用JavaBean 的是()。
A. <jsp:useBean id-"address" class="tom. AddressBean" scope="page"/>
B. <jsp:useBean name="address" class="tom. AddressBean" scope="page"/>
C. <jsp:useBean bean="address" class="tom. AddressBean" scope="page" />
D. <isp:useBean beanName="address" class="AddressBean" scope="page" />
- JavaBean 中方法的访问属性必须是()。
A. private
B. public
C. protected
D. friendly
3.在JSP 中调用 JavaBean 时不会用到的标记是()。
A. <javabean>
B. jsp:useBean
C. jsp:setProperty
D. jsp:getProperty
- JavaBean 的作用域可以是() page, session fil application.
A. request
B. response
C. out
D. 以上都不对
- 在 testjsp 文件中有如下一行代码:
<jsp:useBean class="tom. jiafei.Test" id-"user" scope="___"/>
要使user 对象一直存在于会话中,直到终止或被删除为止,在下画线处应填入()。
A. page
B. request
C. session
D. application
- 在JSP 中使用jsp:useBean动作可以将 JavaBean 引入JSP 页面,对JavaBean 的访问范围不能是()。
A. page
B. request
C. response
D. application
- 下面语句与<jsp:getProperty name="aBean" property="jsp"/>等价的是()。
A. <%=jsp()%>
B. <out.print(aBean.getJsp);%>
C. <%=aBean.setJsp()%>
D. <%aBean.setJsp();%>
8.以下是有关jsp:setProperty 和 jsp:getProperty 标记的描述,正确的是()。
A. Ssp:setProperty> 和jsp:getProperty标记都必须在<jsp:useBean>的开始标记和结束标记之间
B.这两个标记的 name 属性值必须与sjsp:useBean>标记的id 属性值相对应
C.这两个标记的 name 属性值可以与jsp:useBean标记的 id 属性值不同
D. 以上均不对
- 在JSP 中使用jsp:getProperty标记时不会出现的属性是()。
A. name
B. property
C. value
D. 以上皆不会出现
第6章 Java Servlet 基础
1.servlet对象是在服务器端被创建的,还是在用户端被创建的?
Servlet对象是在服务器端被创建的。 当客户端发送一个HTTP请求时,服务器端的Servlet容器会创建一个新的Servlet实例来处理这个请求,然后返回响应给客户端。因此,Servlet对象的创建和管理完全是在服务器端进行的。
- 什么是转发?什么是重定问?它们有什么区别?
转发(forward)是指在服务器端将请求转发到另一个资源(Servlet、JSP等)进行处理,然后将处理结果返回给客户端。在转发过程中,客户端浏览器并不知道页面的真实路径,整个过程对客户端来说是透明的。转发是通过RequestDispatcher对象实现的。
重定向(redirect)是指在服务器端返回一个特殊的响应给客户端,告诉客户端去请求另一个URL。客户端浏览器会收到这个响应后,会再次发送一个新的请求到这个新的URL。在重定向过程中,客户端浏览器会改变URL,因此客户端可以看到新的URL。重定向是通过发送特殊的HTTP响应码(如302)和Location头来实现的。
区别:
- 位置:转发是在服务器内部进行的,对客户端来说是透明的;重定向是通过客户端浏览器重新发送请求到新的URL实现的。
- URL变化:转发不会改变浏览器的URL;重定向会改变浏览器的URL。
- 数据共享:转发可以在跳转的过程中共享request域中的数据;重定向不能直接在跳转的过程中共享数据,需要通过URL参数或者session来传递数据。
3.简述 Servlet 的生命周期与运行原理。
Servlet的生命周期:
- 初始化阶段:当Servlet容器接收到对Servlet的第一个请求时,会创建Servlet实例并调用其init()方法进行初始化。在init()方法中,Servlet可以进行一些初始化操作,比如读取配置文件、建立数据库连接等。
- 请求处理阶段:一旦Servlet被初始化,它就可以处理来自客户端的请求。每次接收到请求时,Servlet容器会调用Servlet的service()方法来处理请求,并生成响应。在service()方法中,Servlet可以根据请求的类型(GET、POST等)来进行相应的处理。
- 销毁阶段:当Servlet容器决定将Servlet实例销毁时(比如服务器关闭或者应用程序重新部署),会调用Servlet的destroy()方法来执行一些清理操作,比如关闭数据库连接、释放资源等。
Servlet的运行原理: Servlet容器(比如Tomcat)负责管理Servlet的生命周期和调用。
当客户端发送请求时,Servlet容器会根据URL中的映射关系找到对应的Servlet,并创建一个线程来处理这个请求。 Servlet容器会根据需要创建新的Servlet实例,或者重用已经存在的Servlet实例。 在处理完请求后,Servlet容器会将生成的响应返回给客户端,并根据需要保持或销毁Servlet实例。
4.Servlet 对象初始化时是调用 init 方法还是 service 方法?
Servlet对象初始化时是调用 init 方法。init 方法是在Servlet对象初始化阶段被调用,用于进行一些初始化操作,比如读取配置文件、建立数据库连接等。一旦Servlet对象初始化完成,就可以通过调用 service 方法来处理客户端请求。
- 下列选项中,()不是 Servlet 中使用的方法。
A. doGet
B. doPost
C. service
D. close
- 下列选项中,对 Servlet 描述错误的是()。
A. Servlet 是一个特的 Java 类,它必须直接或间接实现 Servlet 接口
B. Servlet 接口定义了 Servlet 的生命周期方法
C. 当多个客户请求一个 Servlet 时,服务器为每一个客户启动一个进程
D. Servlet 客户线程调用service 方法响应客户的请求
- 下列 Servlet 的方法中,()方法载入时被执行,且只执行一次,负责对 Servlet
生行初始化。
A. service()
B. init()
C. doPost()
D. destroy()
- 下列 Servlet 的方法中,()方法用来为请求服务,在 Servlet 生命周期中,Servet
被请求一次它就会被调用一次。
A. service()
B. init()
C. doPost()
D. destroy()
- 下列方法中,()方法当服务器关闭时被调用,用来释放 Servet 所占的资源。
A. service()
B. init()
C. doPost()
D.** destroy()**
- 阅读下面代码片段:
JavaBeanClass bean=new JavaBeanClass (parameter) ;
HttpSession session=request. getSession (true) ;
session. setAttribute ("keyword", bean) ;
关于该段代码创建的bean,下列叙述正确的是()。
A. request 周期的 bean
B. application 周期的bean
C. session 周期的 bean
D. Page 周期的 bean
- 阅读下面代码片段:
RequestDispatcher dispatcher=request. getRequestDispatcher ("a. jsp");
dispatcher. forward (request, response) ;
关于该段代码的作用,下列叙述正确的是()。
A. 页面重定向到a.jsp 页面
B. 将请求转发到 a.jsp 页面
C. 从a.jsp定向到当前页面
D. 从a.jsp转发到当前页面
第7章 会话跟踪技术
- 会话跟踪技术有哪些?
- Cookie:在客户端存储小段文本数据,随后每次请求都会将这些数据发送给服务器。可以用于跟踪用户会话和存储会话相关的数据。
- Session:在服务器端存储用户会话数据,每个用户都有一个唯一的会话标识。通常使用Cookie来传递会话标识,然后在服务器端存储会话数据。
- URL 重写:将会话标识信息附加到URL中,以便在用户请求时传递会话信息。这种方法在URL中添加参数来标识会话。
- 隐藏表单字段:在HTML表单中添加隐藏字段来存储会话信息,以便在用户提交表单时传递会话数据。
- URL 重定向:在重定向响应中将会话信息作为URL参数传递给客户端,以便在客户端进行页面跳转时传递会话数据。
- 在工程实践中为什么要进行会话跟踪?
- 用户身份识别:会话跟踪可以用于识别用户身份,保持用户登录状态,以便在多个页面之间保持用户的身份信息和权限。
- 购物车和订单处理:在电子商务网站中,会话跟踪可以用于跟踪用户的购物车内容和订单信息,以便在用户浏览和购买商品时保持购物车状态和订单信息。
- 个性化体验:通过会话跟踪,网站可以根据用户的偏好和历史行为提供个性化的推荐和内容,提高用户体验和满意度。
- 数据传递:会话跟踪可以用于在用户请求之间传递数据,比如在多个页面之间共享用户的输入信息或者状态数据。
- 安全性:会话跟踪可以用于实现安全性需求,比如防止跨站请求伪造(CSRF)攻击,保护用户会话数据的安全性。
- 性能优化:通过会话跟踪,网站可以对用户的访问行为进行分析和优化,提高网站的性能和用户体验。
- 浏览器禁用 Cookie 后,如何进行会话跟踪?
当浏览器禁用了Cookie后,可以使用其他会话跟踪技术来实现会话跟踪。
第8章 过滤器和监听器
- 简述过滤器的运行原理。
- 拦截请求:当客户端发送HTTP请求时,过滤器可以拦截这些请求。过滤器可以在请求到达Servlet之前对请求进行处理,比如校验、修改、记录日志等。
- 过滤器链:如果存在多个过滤器,它们会形成一个过滤器链。每个过滤器都有机会对请求进行处理,然后将请求传递给下一个过滤器,或者直接传递给Servlet进行处理。
- 处理请求:当请求通过所有过滤器后,最终会到达Servlet,由Servlet来处理请求并生成响应。
- 拦截响应:在Servlet生成响应后,响应会经过过滤器链中的过滤器。过滤器可以在响应发送到客户端之前对响应进行处理,比如压缩、加密、添加响应头等。
- 过滤器链执行顺序:过滤器的执行顺序由它们在web.xml中的配置顺序决定。先配置的过滤器先执行,后配置的过滤器后执行。
- Filter 接口中有哪些方法?它们分别具有什么功能?
- void init(FilterConfig filterConfig)- 该方法在过滤器被初始化时调用,用于进行一些初始化操作。- 参数filterConfig包含了过滤器的配置信息,可以通过该参数获取初始化参数、Servlet上下文等信息。
- void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)- 该方法用于实际拦截请求和响应,对它们进行处理,并将请求传递给下一个过滤器或目标Servlet。- 参数request表示客户端的请求,参数response表示要返回给客户端的响应,参数chain表示过滤器链,通过调用chain.doFilter(request, response)可以将请求传递给下一个过滤器或目标Servlet。
- void destroy()- 该方法在过滤器被销毁时调用,用于进行一些清理操作。- 在该方法中可以释放资源、关闭连接等清理工作。
- 过滤器可以实现哪些常用功能?
- 日志记录:记录请求和响应的信息,用于分析和监控应用程序的运行情况。
- 权限验证:对请求进行身份验证和权限检查,以确保用户有权访问特定的资源或执行特定的操作。
- 数据压缩:对响应数据进行压缩,以减少传输数据量,提高网站性能。
- 字符编码转换:在请求和响应中进行字符编码的转换,确保数据的正确传输和显示。
- 请求过滤:对请求进行过滤和处理,比如防止恶意请求、拦截特定的请求等。
- 响应处理:对响应进行处理,比如添加响应头、重定向等。
- 性能监控:监控请求的处理时间、资源消耗等性能指标,用于性能优化和故障排查。
- 安全防护:实施安全策略,比如防止跨站脚本攻击(XSS)、防止跨站请求伪造(CSRF)等。
- 缓存控制:控制缓存策略,比如设置缓存过期时间、强制刷新缓存等。
- 请求转发和重定向:根据特定条件对请求进行转发或重定向到其他资源。
- 简述监听器的分类。
- ServletContext 监听器:用于监听Web应用程序的生命周期事件,比如Web应用程序的启动和关闭。常用的监听器接口是
ServletContextListener
,它包括contextInitialized
和contextDestroyed
方法,分别在Web应用程序启动和关闭时被调用。- HttpSession 监听器:用于监听HTTP会话(Session)的生命周期事件,比如会话的创建、销毁、属性的添加和移除。常用的监听器接口是
HttpSessionListener
和HttpSessionAttributeListener
,分别用于监听会话的创建和销毁,以及会话属性的变化。- ServletRequest 监听器:用于监听HTTP请求的生命周期事件,比如请求的到达、离开、属性的添加和移除。常用的监听器接口是
ServletRequestListener
和ServletRequestAttributeListener
,分别用于监听请求的到达和离开,以及请求属性的变化。- 监听器的上下文初始化和销毁:用于监听Web应用程序的上下文初始化和销毁事件。常用的监听器接口是
ServletContextListener
,通过实现contextInitialized
和contextDestroyed
方法来监听上下文的初始化和销毁。
- 哪种监听器不需要部署?
在JavaEE中,ServletContext监听器不需要显式部署。当Web应用程序启动时,容器会自动检测并调用实现了ServletContextListener接口的监听器,无需在web.xml文件中进行特殊配置。这使得ServletContext监听器成为一种非常便捷的方式来执行应用程序初始化和清理逻辑。
第9章 EL和JSTL
1.在Web 应用程序中有以下程序代码段,执行后转发到某个JSP页面:
ArrayList<String> dogNames = new ArrayList<String> ();
dogNames.add("goodDog" );
request.setAttribute ("dogs", dogNames);
下列选项中,()可以正确地使用EL 取得数组中的值。
A. ${ dogs.0}
B. ${ dogs [0]}
C. ${ dogs. [0]}
D. ${ dogs "0"}
- JSTL 标签()可以实现Java 程序中的if语句功能。
A. <c:set>
B. <c:out>
C. <c: forEach>
D. <c:if>
3.()不是EL 的隐含对象。
A. request
B. pageScope
C. sessionScope
D. applicationScope
- JSTL 标签()可以实现Java 程序中的for 语句功能。
A. <c:set>
B. <c:out>
C. <c: forEach>
D. <c:if>
5.与jsp:include功能类似的JSTL 标签是()。
A. <c:url>
B. <c:redirect>
C. <c:include >
D. <c:import>
第10章 文件的上传与下载
1.基于表单的文件上传需要注意什么?
- 表单的enctype属性:确保表单的
enctype
属性被设置为multipart/form-data
,以支持文件上传。这样表单数据和文件数据都能被发送到服务器。- 文件大小限制:需要在服务器端和客户端都进行文件大小的限制。在服务器端,需要配置Web服务器和应用服务器的文件上传大小限制。在客户端,可以使用HTML5的
<input type="file">
元素的accept
和size
属性进行文件类型和大小的限制。- 文件类型限制:需要对文件类型进行限制,以确保只接受特定类型的文件。这可以通过客户端和服务器端的校验来实现。
- 文件名的安全性:需要对上传的文件名进行安全性校验,以防止恶意文件名导致的安全漏洞。
- 文件存储路径:需要指定文件上传后的存储路径,并确保该路径对应的文件夹有足够的权限进行文件写入。
- 处理上传文件:在服务器端,需要编写处理文件上传的代码,对上传的文件进行处理和存储。
- 异常处理:需要对文件上传过程中可能出现的异常进行处理,比如文件过大、文件类型不符、存储路径无权限等情况。
- 安全性考虑:需要考虑文件上传过程中的安全性问题,比如防止跨站脚本攻击(XSS)、拒绝服务攻击(DoS)等。
2.文件下载的实现方法有哪些?它们的优缺点是什么?
- 直接链接下载:在网页上提供文件下载的超链接,用户点击链接即可下载文件。这是最简单的实现方法,但无法进行权限控制和统计下载量。
- 通过后端服务器提供下载接口:通过后端服务器提供一个接口,用户访问该接口并传入文件标识,后端服务器返回文件内容。这种方式可以实现权限控制和下载统计,但需要后端服务器进行额外的处理。
- 使用HTML5的download属性:在HTML5中,可以使用
<a>
标签的download
属性来指定文件的下载名称,使得用户点击链接时可以直接下载文件。这种方法简单方便,但不适用于较老的浏览器。- 使用JavaScript进行下载:通过JavaScript动态生成下载链接,并模拟用户点击该链接来触发文件下载。这种方法可以在不刷新页面的情况下进行文件下载,但需要考虑浏览器兼容性和安全性。
- 使用第三方库:可以使用第三方库如jQuery File Download等来简化文件下载的实现,提供更多的功能和兼容性支持。
这些方法各有优缺点:
- 直接链接下载:简单方便,但无法进行权限控制和下载统计。
- 通过后端服务器提供下载接口:可以实现权限控制和下载统计,但需要后端服务器进行额外的处理。
- 使用HTML5的download属性:简单方便,但不适用于较老的浏览器。
- 使用JavaScript进行下载:可以在不刷新页面的情况下进行文件下载,但需要考虑浏览器兼容性和安全性。
- 使用第三方库:提供更多的功能和兼容性支持,但引入了额外的依赖。
第11章 JDBC 数据库访问
- JDBC能完成哪些工作?
- 建立数据库连接:JDBC提供了
DriverManager
类和DataSource
接口来建立与数据库的连接,可以连接各种不同类型的数据库。- 执行SQL语句:通过JDBC可以执行数据库操作的SQL语句,包括查询、插入、更新和删除等操作。
- 处理查询结果:JDBC能够获取和处理SQL查询的结果集,将查询结果转化为Java对象或数据结构进行进一步处理。
- 事务管理:JDBC支持事务管理,可以通过
Connection
对象进行事务的提交、回滚和设置事务的隔离级别等操作。- 元数据访问:JDBC可以获取数据库的元数据信息,包括表结构、索引、触发器等信息。
- 异常处理:JDBC提供了异常处理机制,能够捕获和处理数据库操作中可能出现的异常。
- 批处理操作:JDBC支持批处理操作,可以一次性执行多个SQL语句,提高数据库操作的效率。
2.使用纯Java 数据库驱动程序访问数据库时,有哪些步骤?
详情见此https://blog.csdn.net/qiqi_liuliu/article/details/131611766?spm=1001.2014.3001.55023. JDBC 连接数据库的常用方式有哪些?
- 使用DriverManager:通过
DriverManager
类来获取数据库连接,使用数据库厂商提供的JDBC驱动程序来连接数据库。- 使用DataSource:通过
DataSource
接口来获取数据库连接,这种方式通常用于连接池的管理,可以提高数据库连接的复用性和性能。- 使用连接池:使用第三方连接池库,如Apache Commons DBCP、C3P0、HikariCP等,通过配置连接池参数来管理数据库连接,提高连接的复用性和性能。
- 使用框架:使用一些ORM(对象关系映射)框架,如Hibernate、MyBatis等,这些框架提供了自己的数据库连接管理机制。
- 下列选项中,()不是JDBC 的工作任务。
A. 与数据库建立连接
B. 操作数据库,处理数据库返回的结果
C. 在网页中生成表格
D. 向数据库管理系统发送SQL 语句
- 在JDBC中,()接口不能被 Connection 创建。
A. Statement
B. PreparedStatement
C. CallableStatement
D. RowsetStatement
- 查询结果集 ResultSet 对象是以统一的行列形式组织数据的,执行“ResultSet rs=stmt.executeQuery (“'select bid,name,author,publish,price from book”);”语句,得到的结果集rs 的列数为()。
A. 4
B. 5
С. 6
D. 不确定
- 给出了如下的查询条件字符串 “String condition="insert book values(?,?,?,?,?)";”,()接口适合执行该 SQL 查询。
A. Statement
C. CallableStatement
B. PreparedStatement
D. 不确定
第12章 Ajax、JSON以及jQuery 技术
- XMLHttpRequest 对象有()个返回状态值。
A. 3
B. 4
С. 5
D. 6
- 对象 XMLHttpRequest 的属性 readyState值()表示异步访问服务器通信已经完成。
A. 1
B. 2
С. 3
D. 4
第13章 电子商务平台的设计与实现
无
第14章 Struts 2 框架基础
- result 的类型 redirectAction 表示()。
A. 处理 action 链,跳转到下一个 action
B. 转发到一个 JSP
C. 重定向到一个 action
D. 重定向到一个 JSP
- result 的类型 redirect 表示()。
A. 处理 action 链,跳转到下一个 action
B. 转发到一个 JSP
C. 重定向到一个 action 或一个JSP
D. 重定向到一个 JSP
- Struts 2 的默认配置文件是()。
A. xeb.xml
B. struts.xml
C. user.ml
D. server.xml
- 某 action 的配置如下:
<action name="hello" class="action.HelloAction">
<result name="error">/error.jsp</result>
</ action>
当执行该action 时会调用对应类中的()方法。
A. execute()
B. doPost()
C. doGet()
D. service()
- 在 Struts2的 Web 应用 hello 中 struts.xml的配置如下:
<package name="user" extends="struts-default" namespace="/my">
<action name="hello" class="action.HelloAction">
<result>/ success.jsp</result>
</action>
</package>
需要访问该 action 时,输入的 URL 地址是(
A. http://localhost:8080/hello/user/hello.action
B. http:/localhost:8080/hello/my/hello.jsp
C. http://localhost:8080/hello/my/hello.action
D. http://localhost:8080/hello/user/hello.jsp
- result 的类型 dispatcher 表示()。
A. 处理 action 链,跳转到下一个 action
B. 转发到一个 JSP
C. 重定向到一个 action
D. 重定向到一个 JSP
- 某 action 的配置如下:
<action name="hello" class="action.HelloAction">
<result>/main.jsp</result>
<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
<result name="input">/login.jsp</result>
</action>
调用该 action 后返回值是"success”,则显示的页面是()。
A. main.jsp
B. success.jsp
C. error.jsp
D. login.jsp
- 某 action 的配置如下:
<action name="hello">
<result >/success.jsp</result>
</action>
访问该 action 时会调用()类。
A. Action
B. ActionSupport
C. HelloAction
D. UserAction
- 某action 的配置如下:
<action name="hello" class="action.HelloAction" method="update">
<result>/success.jsp</result>
</action>
访问该 action 时会执行 HelloAction 类中的()方法。
A. execute
B. delete
C. select
D. update
- 在 Struts 2的 Action 类中访问 Servlet API 有哪几种方法?其中与 HttpServlet 耦合的方法是哪几种?
- 实现 ServletRequestAware 接口:通过实现 ServletRequestAware 接口,可以在Action类中获取HttpServletRequest对象。
- 实现 ServletResponseAware 接口:通过实现 ServletResponseAware 接口,可以在Action类中获取HttpServletResponse对象。
- 实现 ServletContextAware 接口:通过实现 ServletContextAware 接口,可以在Action类中获取ServletContext对象。
- 使用ServletActionContext类:ServletActionContext类提供了一些静态方法,可以方便地获取HttpServletRequest、HttpServletResponse等对象。
与HttpServlet耦合的方法通常是指直接依赖于HttpServlet的方法,这些方法通常是通过实现特定的接口或者继承特定的类来实现的。在Struts 2中,与HttpServlet耦合的方法包括:
- 实现
ServletRequestAware
接口- 实现
ServletResponseAware
接口- 使用
ServletActionContext
类
- 结果类型redirect 与 redirectAction 的区别是什么?
- result类型redirect:- 当一个action执行完毕后,如果result类型为redirect,它会发送一个HTTP重定向到指定的URL。这意味着浏览器会收到一个302状态码,并重新请求指定的URL。- 适用于需要将用户重定向到另一个页面,例如在表单提交后重定向到一个结果页面。
- redirectAction:-
redirectAction
是一个特殊的result类型,它允许在执行完当前action后,重定向到另一个action。- 适用于需要在action执行后立即重定向到另一个action,而不经过任何JSP页面的情况。
- 在 Action 中接收请求参数有哪几种方式?你认为哪种方式比较方便?
- 使用属性:在Action类中定义与请求参数同名的属性,并提供对应的setter方法,Struts 2会自动将请求参数的值注入到属性中。
- 实现 ParameterAware 接口:通过实现ParameterAware接口,可以在Action类中获取请求参数的Map。
- 使用属性驱动:通过在Action类中定义属性,并提供对应的setter方法,Struts 2会自动将请求参数的值注入到属性中,这种方式通常称为属性驱动。
- 使用模型驱动:通过实现ModelDriven接口,可以在Action类中使用一个模型对象来接收请求参数。
- 使用Servlet API:通过在Action类中获取HttpServletRequest对象,可以直接从请求中获取参数。
第15章 Spring MVC 框架基础
- 在开发 Spring MVC 应用时,如何部署 DispatcherServlet?又如何创建 Spring MVC的配置文件?
部署DispatcherServlet:
在web.xml中配置DispatcherServlet:
<servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-mvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
创建Spring MVC的配置文件:
- 创建Spring MVC的配置文件(spring-mvc-servlet.xml),用于配置Spring MVC相关的内容,例如控制器、视图解析器、拦截器等。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置控制器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 其他配置,如拦截器等 --> </beans>
- 简述 Spring MVC 的工作流程。
- 客户端发送请求:客户端(如浏览器)发送HTTP请求到服务器。
- DispatcherServlet接收请求:请求首先被DispatcherServlet接收,DispatcherServlet是Spring MVC中的核心控制器,它作为前端控制器负责统一请求的分发和处理。
- HandlerMapping选择处理器:DispatcherServlet通过HandlerMapping来确定请求对应的处理器(Controller),HandlerMapping会根据请求的URL或其他条件来选择合适的处理器。
- 处理器执行:被选定的处理器(Controller)执行请求处理逻辑,处理器会根据请求的参数和业务逻辑来处理请求,并生成相应的数据模型(Model)。
- ModelAndView创建:处理器将处理结果封装到ModelAndView对象中,该对象包含了视图名称和模型数据。
- ViewResolver解析视图:DispatcherServlet使用ViewResolver来将逻辑视图名称解析为具体的视图对象。
- 视图渲染:视图对象负责将模型数据渲染为最终的输出,通常是HTML、JSON等格式的响应。
- 响应返回客户端:渲染后的视图结果会作为HTTP响应返回给客户端,客户端可以看到最终的处理结果。
- 举例说明数据绑定的优点。
- 简化开发:数据绑定可以减少开发人员编写的代码量。通过自动绑定用户输入到数据模型,开发人员无需手动编写大量的数据接收和验证逻辑。
- 减少重复代码:数据绑定可以减少重复的代码,例如在不同的表单中使用相同的数据模型,避免了重复编写数据接收和处理的代码。
- 提高代码可读性:使用数据绑定可以使代码更加清晰和易于理解。通过直接绑定到数据模型,可以清楚地了解数据的来源和如何被使用。
- 减少错误:手动处理用户输入数据可能会导致错误,例如类型转换错误、空指针异常等。数据绑定可以减少这些潜在的错误,提高应用程序的稳定性。
- 提高用户体验:数据绑定可以使用户在填写表单时更加便捷,减少了用户输入的复杂性,提高了用户体验。
- Spring MVC 有哪些表单标签?其中,可以绑定集合数据的标签有哪些?
- 表单标签:-
<form:form>
:用于创建表单,并将表单数据绑定到控制器的命令对象。-<form:input>
:用于创建文本输入框。-<form:textarea>
:用于创建文本域。-<form:password>
:用于创建密码输入框。-<form:checkbox>
:用于创建复选框。-<form:select>
:用于创建下拉列表。-<form:radiobutton>
:用于创建单选按钮。-<form:hidden>
:用于创建隐藏字段。- 可以绑定集合数据的标签:-
<form:select>
:可以绑定一个集合或Map类型的数据到下拉列表。-<form:radiobuttons>
:可以绑定一个集合或Map类型的数据到单选按钮组。-<form:checkboxes>
:可以绑定一个集合或Map类型的数据到复选框组。
5.@ModelAttribute 可实现哪些功能?
- 数据预处理:
@ModelAttribute
注解可以用于在请求处理方法执行之前,对数据进行预处理或初始化。通过在方法上标记@ModelAttribute
注解,可以在每次请求到达处理方法之前执行该方法,从而准备数据供处理方法使用。- 数据绑定:
@ModelAttribute
注解可以用于将数据绑定到模型中。当一个请求处理方法返回一个对象时,Spring MVC会自动将该对象添加到模型中,如果在方法参数上使用@ModelAttribute
注解,也可以将数据绑定到指定的对象中。- 表单数据绑定:
@ModelAttribute
注解可以用于将表单数据绑定到对象中。当处理包含表单数据的请求时,可以使用@ModelAttribute
注解将表单数据直接绑定到对象的属性中,简化数据绑定的过程。- 全局数据传递:
@ModelAttribute
注解可以用于在多个请求处理方法中共享数据。通过在控制器类中定义一个带有@ModelAttribute
注解的方法,可以在该控制器中的所有请求处理方法中共享该方法返回的数据。- 初始化表单数据:
@ModelAttribute
注解可以用于在表单页面初始化时提供数据。通过在控制器中定义一个带有@ModelAttribute
注解的方法,可以在表单页面初始化时将数据传递给表单。
版权归原作者 青春pig头少年 所有, 如有侵权,请联系我们删除。