Java Web 开发 从入门到实战(课后习题)

Java Web 开发 从入门到实战(课后习题)

第1章 Web 前端基础

1.在以下标记中,用于改置页面标题的是()。

A. <title>
B. <caption>
C. <head>
D. <html>

注:caption是表格名称(标题)

2. 若设计网页的背景图形为bg.png,在以下标记中正确的是()。

A. <body background="bg.png">
B. <body ground="bg.png">
C. <body image="bg.png">
D. < body bgcolor="bg.png">

3. 下列关于 HTML 文件的说法正确的是()。

A. HTML 标记都必须配对使用
B. 在<title>和</itle>标记之间的是头信息
C. HTML 标记是区分大小写的,<B>跟<b>表示的意思是不一样的
D. <!-- -->标记是注释标记

注:HTML标签是无关大小写的,<B>跟<b>表示的意思是一样的

4. 下列()表示的不是按钮。

A. type="submit"         B. type="reset"
C. type="myButton"         D. type="button

5. 若产生一个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>

6. 下列属性中用于设置文本框显示宽度的属性是()。
A. size
B. maxlength
C. value
D. length

7. 下面对表单的说法错误的是()。

A. 表单在Web页面中用来给访问者填写信息,从而能采集客户端信息,使页面具有交互信息的功能
B. 当用户填写完信息后单击普通按钮做提交(submit)操作
C. 一个表单用<form></form>标签来创建
D. action 属性的值是指处理程序的程序名(包括网络路径、网址或相对路径)

8. 下面说法中错误的是()。

A. 在HTML语言中,<input>标记具有重要的地位。它能够将浏览器中的控件加载到HTML 文档中,该标记既有开始标记,又有结束标记
B. <input type="text”>是设定一个单行的文本输入区域
C. size 属性指定控件宽度,表示该文本输入框所能显示的最大字符数
D. maxlength 属性表示该文本输入框允许用户输入的最大字符数

9. 下面对于按钮的说法中正确的是()。

A. 按钮可分为普通按钮、提交按钮和重置按钮
B. <input type="button”>表示这是一个提交到服务器的按钮
C. <input type="reset">表示这是一个普通按钮
D. name 属性用来指定按钮页面显示的名称

10. 下面说法中错误的是()。

A. <input type="checkbox " checked>中的checked 属性用来设置该复选框默认是否被选中
B. <input type="hidden”>表示一个隐藏区域,用户可以在其中输入某些要传选的信息
C. <input type="password”>表示这是一个密码区域,当用户输入密码时区域内第会显示“*”号
D. <input type="radio">表示这是一个单选按钮

注:<input type="hidden”>表示一个隐藏区域,用户无法在其中输入信息。

11. 下列说法中错误的是()。

A. <select></select>标记对用来创建一个菜单下拉列表框
B. 下拉列表框中的 multiple 属性不用赋值,直接加入到标记中即可使用,加入此属性后列表框就可以多选
C. <option>标记用来指定列表框中的一个选项
D. 不可以设定输入多行的文本区的大小

12. 下面对于样式表的说法中错误的是(

A. CSS 就是 Cascading Style Sheets,中文翻译为“层叠样式表”,简称样式表
B. 将CSS 指定的格式加入到 HTML 中的方法有两种
C. 外部链接CSS 时需要在HTML文件里加一个超链接,连接到外部的CSs如
D. 内定义 CSS 时需要在 HTIML 文件内的<head>/bead标记对之同加一段CSS的描述内容

注:CSS将指定的格式加入到HTML中的方法就一种,即在HTML文件内的<head>标签进行定义。

13. 下面对于样式表的说法中错误的是()。

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()

18. 有关变量的命名规则,下列说法中错误的是()。

A. 以字母、下画线(_)或美元符号($)开头
B. 首字符之外的字符可以是下画线、美元符号,或任何的字母、数字
C. 不能有空格,不区分大小写
D. 不能使用 JavaScript 中的关键字或保留字命名

19. 单击按钮触发的事件是()。
A. onClick
B. onFocus
C. onChange
D. onLoad

20. 页面加载时产生的事件是()。

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>邮箱:zhangsan@example.***</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。

2. Tomcat 服务器的默认端口号是什么?如果想修改该端口号,应该修改哪个文件?

Tomcat服务器的默认端口号是8080。如果想修改该端口号,应该修改Tomcat的配置文件server.xml。在该文件中,可以找到对应的端口配置并进行修改。

3. First.jsp 和 first.jsp 是否为相同的JSP文件名?

在Web程序中,First.jsp和first.jsp被视为相同的JSP文件名。

4. JSP 引擎是怎样处理JSP 页面中的HTML 标记的?

JSP引擎会将JSP页面中的HTML标记直接输出到响应的页面中。当客户端请求JSP页面时,JSP引擎会解析JSP页面,将其中的HTML标记直接发送给客户端,使得客户端可以渲染页面。同时,JSP引擎也会处理其中的JSP元素和脚本代码,并生成相应的Java Servlet代码来处理请求和生成响应。

5. 当用户请求JSP 页面时,JSP 引擎将会执行该页面的字节码文件响应客户的请求,执行字节码文件的结果是()。

A.发送一个JSP 源文件到客户端
B. 发送一个 Java 文件到客户端
C. 发送一个 HTML 页面到客户端
D. 什么都不做

第3章 JSP语法

1.JSP 页面由哪几种主要元素组成?

HTML页面标签:这是用来构建页面结构的HTML代码。
指令:指令是用来定义整个页面的相关信息,例如页面的字符集编码等。指令格式为<%@指令名 属性名=”值”%>。
表达式:表达式是用于在JSP页面中进行数据绑定和计算的,例如获取请求参数、数据库查询结果等。表达式的格式为 <%=表达式%>。
代码片段:代码片段是在JSP页面中嵌入的Java代码,可以用来处理复杂的业务逻辑。代码片段的格式为 <%java代码%>。
声明:声明是定义类成员的地方,其格式为 <%! 类成员 %>。
注释:注释是用来解释代码或者提供其他信息的一种方式,其格式为 <%-- jsp注释内容 --%>。
动作:动作是JSP页面中执行特定任务的标签,如包含其他文件、导入Java包等。动作的格式为 <jsp:动作名></jsp:动作名>。

2. 如果有3个用户访问一个JSP 页面,则该页面中的Java 程序片将被执行几次?

如果有3个用户访问一个JSP页面,该页面中的Java程序片段将会被执行3次,分别为每个用户的访问执行一次。每次访问都会触发JSP引擎执行相应的Java程序片段来生成动态内容。

3."<%!"和"%>"之间的声明的变量与 "<%"和"%>"之间的声明的变量有何不同?

"<%!" 和 "%>" 之间的声明用于定义全局变量和方法,它们会被插入到生成的servlet类的成员变量或方法中,因此这些变量和方法在整个JSP页面中都是可见的。

而 "<%" 和 "%>" 之间的声明用于写入Java代码片段,这些代码片段会被插入到生成的servlet类的service()方法中。因此,这些变量和方法只在当前的代码片段内部可见。

4. 动作标记 include 和指令标记 include 的区别是什么?

1. <jsp:include> 是一个动作标记,它在运行时动态包含其他文件的内容,可以包含静态或动态资源,包含的内容将在运行时被处理和执行。 <%@ include %> 是一个指令标记,它在翻译阶段静态地包含其他文件的内容,包含的内容将在翻译阶段被插入到JSP页面中。

2. <jsp:include> 可以包含动态的内容,例如其他JSP页面或Servlet的输出。 <%@ include %> 只能包含静态的内容,例如HTML片段或文本文件。 因此,主要区别在于包含的时间点和包含内容的类型。

5.在一个JSP 页面中是否允许使用 page指令为 contentType 属性设置多个值?是否许使用 page 指令为 import 属性设置多个值?

在一个JSP页面中,page指令的contentType属性只能设置一个值。这个值用于指定生成的Servlet响应的内容类型。 同样地,page指令的import属性也只能设置一个值。这个值用于导入Java类或包,以便在JSP页面中使用这些类。 因此,page指令的contentType属性和import属性都只能设置单个值。

6. 用户可以在以下()标记之间插入 Java 程序片。

A.“<%”和“%>”
B.“<%”和“/>”
D.“<%”和“!>”
C. “</”和“%>”

7.JSP 的page 指令的language属性的默认值是()。
A. Java
В. С
C. CH
D. SQL

8. 用户可以在以下()标记之间插入变量与方法声明。

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. 数字

12. include 指令用于在JSP 页面中静态插入一个文件,所插入文件可以是JSP 页画、HTML 网页、文本文件或一段Java 代码,但必须保证插入后形成的文件是()。

A.一个完整的HTML 文件
C.一个完整的TXT文件
B.一个完整的JSP文件
D.一个完整的 Java 源文件

13. 组成“<%=”标记的各字符之间()。

A. 可以有空格
B.不可以有空格
C. 必须有空格
D. 不确定

第4章 JSP内置对象

1. 下面()操作不能关闭session对象。

A. 用户刷新当前界面调用
B. 用户关闭浏览器
C. session 达到设置的最长“发呆”时间
D. session 对象的 invalidate()方法

2. 有如下程序片段:

<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");

3. 下面的()内置对象是对客户的请求做出响应,向客户端发送数据的。

A. request
B. session
C. response
D. application

4. 可以使用()方法实现客户的重定向。

A. response.setStatus;
B. response.setHeader;
C. response.setContentType;
D. response.sendRedirect;

5. 下面不属于JSP 内置对象的是()。

A. out 对象
B. response 对象
C. application 对象
D. cookie 对象

6. 下面对象中作用域最大的是(

A. page
B. request
C. application
D. session

7. 在JSP 中保存用户会话信息使用()对象。

A. page
B. request
C. application
D. session

8. 如果选择一个对象保存聊天室信息,则选择()。

A. page
B. request
C. application
D. session

注:在聊天室应用中,如果要保存聊天室信息,应该选择C. application 对象。因为 application 对象是全局的,可以在整个应用程序中共享数据,适合用于保存聊天室信息这样的全局数据。

9. 什么对象是JSP 的内置对象?常见的内置对象有哪些?

具体内容写过一遍了不再赘述https://blog.csdn.***/qiqi_liuliu/article/details/13548350110.request、session 和 application 对象的作用域是什么?它们之间有什么区别?

与上一题一样,直接点超链接里头看

11. 一个用户在不同 web 服务中的 session 对象相同吗?一个用户在同一 Web 服务的不同子目录中的 session 对象相同吗?

        不同的Web服务中,即使是同一个用户,其session对象也是不同的。每个Web服务都有自己独立的session管理机制,因此无法共享session对象。

        在同一个Web服务的不同子目录中,session对象是相同的。这是因为session对象是与用户的会话相关联的,而不是与特定的子目录相关联的。因此,无论用户访问Web服务的哪个子目录,其session对象都是相同的。

12. session 对象的生命周期依赖于哪些因素?

  1. 会话期间:Session对象的生命周期与用户的会话期间相关联。当用户在浏览器中打开一个会话并与Web服务器进行交互时,会话开始;当用户关闭浏览器或会话超时时,会话结束。

  2. 会话超时设置:Web服务器通常会设置session的超时时间,超过这个时间没有活动的会话将被销毁。这个超时时间可以在服务器的配置中进行设置。

  3. 手动失效:Session对象也可以被程序员手动失效,通过调用session.invalidate()方法来销毁session对象。

13. 简述 forward 动作标记与 response.sendRedirect()两种跳转的区别。

  1. 执行位置:

    • forward动作标记是在服务器端执行的,由服务器内部进行页面跳转,客户端浏览器不知道页面的真实路径。
    • response.sendRedirect()是在客户端执行的,服务器会向客户端发送一个重定向的响应,客户端浏览器会再次发送请求到新的URL。
  2. URL变化:

    • forward动作标记不会改变浏览器的URL,因为是服务器内部进行的页面跳转。
    • response.sendRedirect()会改变浏览器的URL,因为是客户端重新发送请求到新的URL。
  3. 数据共享:

    • forward动作标记可以在跳转的过程中共享request域中的数据。
    • response.sendRedirect()不能直接在跳转的过程中共享数据,需要通过URL参数或者session来传递数据。

第5章 JSP 与 JavaBean

1. 下面方式中正确使用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" />

2. JavaBean 中方法的访问属性必须是()。
A. private
B. public
C. protected
D. friendly

3.在JSP 中调用 JavaBean 时不会用到的标记是()。

A. <javabean>
B. <jsp:useBean>
C. <jsp:setProperty>
D. <jsp:getProperty>

4. JavaBean 的作用域可以是() page, session fil application.

A. request
B. response
C. out
D. 以上都不对

5. 在 testjsp 文件中有如下一行代码:

<jsp:useBean class="tom. jiafei.Test" id-"user" scope="___"/>

要使user 对象一直存在于会话中,直到终止或被删除为止,在下画线处应填入()。

A. page
B. request
C. session
D. application

6. 在JSP 中使用<jsp:useBean>动作可以将 JavaBean 引入JSP 页面,对JavaBean 的访问范围不能是()。

A. page
B. request
C. response
D. application

7. 下面语句与<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. 以上均不对

9. 在JSP 中使用<jsp:getProperty>标记时不会出现的属性是()。

A. name
B. property
C. value
D. 以上皆不会出现
 

第6章 Java Servlet 基础

1.servlet对象是在服务器端被创建的,还是在用户端被创建的?

        Servlet对象是在服务器端被创建的。

        当客户端发送一个HTTP请求时,服务器端的Servlet容器会创建一个新的Servlet实例来处理这个请求,然后返回响应给客户端。因此,Servlet对象的创建和管理完全是在服务器端进行的。

2. 什么是转发?什么是重定问?它们有什么区别?

转发(forward)是指在服务器端将请求转发到另一个资源(Servlet、JSP等)进行处理,然后将处理结果返回给客户端。在转发过程中,客户端浏览器并不知道页面的真实路径,整个过程对客户端来说是透明的。转发是通过RequestDispatcher对象实现的。

重定向(redirect)是指在服务器端返回一个特殊的响应给客户端,告诉客户端去请求另一个URL。客户端浏览器会收到这个响应后,会再次发送一个新的请求到这个新的URL。在重定向过程中,客户端浏览器会改变URL,因此客户端可以看到新的URL。重定向是通过发送特殊的HTTP响应码(如302)和Location头来实现的。

区别

  1. 位置:转发是在服务器内部进行的,对客户端来说是透明的;重定向是通过客户端浏览器重新发送请求到新的URL实现的。
  2. URL变化:转发不会改变浏览器的URL;重定向会改变浏览器的URL。
  3. 数据共享:转发可以在跳转的过程中共享request域中的数据;重定向不能直接在跳转的过程中共享数据,需要通过URL参数或者session来传递数据。

3.简述 Servlet 的生命周期与运行原理。

Servlet的生命周期

  1. 初始化阶段:当Servlet容器接收到对Servlet的第一个请求时,会创建Servlet实例并调用其init()方法进行初始化。在init()方法中,Servlet可以进行一些初始化操作,比如读取配置文件、建立数据库连接等。
  2. 请求处理阶段:一旦Servlet被初始化,它就可以处理来自客户端的请求。每次接收到请求时,Servlet容器会调用Servlet的service()方法来处理请求,并生成响应。在service()方法中,Servlet可以根据请求的类型(GET、POST等)来进行相应的处理。
  3. 销毁阶段:当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 方法来处理客户端请求。

5. 下列选项中,()不是 Servlet 中使用的方法。

A. doGet
B. doPost
C. service
D. close

6. 下列选项中,对 Servlet 描述错误的是()。

A. Servlet 是一个特的 Java 类,它必须直接或间接实现 Servlet 接口
B. Servlet 接口定义了 Servlet 的生命周期方法
C. 当多个客户请求一个 Servlet 时,服务器为每一个客户启动一个进程
D. Servlet 客户线程调用service 方法响应客户的请求

7. 下列 Servlet 的方法中,()方法载入时被执行,且只执行一次,负责对 Servlet
生行初始化。

A. service()
B. init()
C. doPost()
D. destroy()

8. 下列 Servlet 的方法中,()方法用来为请求服务,在 Servlet 生命周期中,Servet
被请求一次它就会被调用一次。

A. service()
B. init()
C. doPost()
D. destroy()


9. 下列方法中,()方法当服务器关闭时被调用,用来释放 Servet 所占的资源。

A. service()
B. init()
C. doPost()
D. destroy()

10. 阅读下面代码片段:

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

11. 阅读下面代码片段:

RequestDispatcher dispatcher=request. getRequestDispatcher ("a. jsp");
dispatcher. forward (request, response) ;

关于该段代码的作用,下列叙述正确的是()。

A. 页面重定向到a.jsp 页面
B. 将请求转发到 a.jsp 页面
C. 从a.jsp定向到当前页面
D. 从a.jsp转发到当前页面

第7章 会话跟踪技术

1. 会话跟踪技术有哪些?

  1. Cookie:在客户端存储小段文本数据,随后每次请求都会将这些数据发送给服务器。可以用于跟踪用户会话和存储会话相关的数据。

  2. Session:在服务器端存储用户会话数据,每个用户都有一个唯一的会话标识。通常使用Cookie来传递会话标识,然后在服务器端存储会话数据。

  3. URL 重写:将会话标识信息附加到URL中,以便在用户请求时传递会话信息。这种方法在URL中添加参数来标识会话。

  4. 隐藏表单字段:在HTML表单中添加隐藏字段来存储会话信息,以便在用户提交表单时传递会话数据。

  5. URL 重定向:在重定向响应中将会话信息作为URL参数传递给客户端,以便在客户端进行页面跳转时传递会话数据。

2. 在工程实践中为什么要进行会话跟踪?

  1. 用户身份识别:会话跟踪可以用于识别用户身份,保持用户登录状态,以便在多个页面之间保持用户的身份信息和权限。

  2. 购物车和订单处理:在电子商务网站中,会话跟踪可以用于跟踪用户的购物车内容和订单信息,以便在用户浏览和购买商品时保持购物车状态和订单信息。

  3. 个性化体验:通过会话跟踪,网站可以根据用户的偏好和历史行为提供个性化的推荐和内容,提高用户体验和满意度。

  4. 数据传递:会话跟踪可以用于在用户请求之间传递数据,比如在多个页面之间共享用户的输入信息或者状态数据。

  5. 安全性:会话跟踪可以用于实现安全性需求,比如防止跨站请求伪造(CSRF)攻击,保护用户会话数据的安全性。

  6. 性能优化:通过会话跟踪,网站可以对用户的访问行为进行分析和优化,提高网站的性能和用户体验。

3. 浏览器禁用 Cookie 后,如何进行会话跟踪?

当浏览器禁用了Cookie后,可以使用其他会话跟踪技术来实现会话跟踪。

第8章 过滤器和监听器

1. 简述过滤器的运行原理。

  1. 拦截请求:当客户端发送HTTP请求时,过滤器可以拦截这些请求。过滤器可以在请求到达Servlet之前对请求进行处理,比如校验、修改、记录日志等。

  2. 过滤器链:如果存在多个过滤器,它们会形成一个过滤器链。每个过滤器都有机会对请求进行处理,然后将请求传递给下一个过滤器,或者直接传递给Servlet进行处理。

  3. 处理请求:当请求通过所有过滤器后,最终会到达Servlet,由Servlet来处理请求并生成响应。

  4. 拦截响应:在Servlet生成响应后,响应会经过过滤器链中的过滤器。过滤器可以在响应发送到客户端之前对响应进行处理,比如压缩、加密、添加响应头等。

  5. 过滤器链执行顺序:过滤器的执行顺序由它们在web.xml中的配置顺序决定。先配置的过滤器先执行,后配置的过滤器后执行。

2. Filter 接口中有哪些方法?它们分别具有什么功能?

  1. void init(FilterConfig filterConfig)

    • 该方法在过滤器被初始化时调用,用于进行一些初始化操作。
    • 参数filterConfig包含了过滤器的配置信息,可以通过该参数获取初始化参数、Servlet上下文等信息。
  2. void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

    • 该方法用于实际拦截请求和响应,对它们进行处理,并将请求传递给下一个过滤器或目标Servlet。
    • 参数request表示客户端的请求,参数response表示要返回给客户端的响应,参数chain表示过滤器链,通过调用chain.doFilter(request, response)可以将请求传递给下一个过滤器或目标Servlet。
  3. void destroy()

    • 该方法在过滤器被销毁时调用,用于进行一些清理操作。
    • 在该方法中可以释放资源、关闭连接等清理工作。

3. 过滤器可以实现哪些常用功能?

  1. 日志记录:记录请求和响应的信息,用于分析和监控应用程序的运行情况。

  2. 权限验证:对请求进行身份验证和权限检查,以确保用户有权访问特定的资源或执行特定的操作。

  3. 数据压缩:对响应数据进行压缩,以减少传输数据量,提高网站性能。

  4. 字符编码转换:在请求和响应中进行字符编码的转换,确保数据的正确传输和显示。

  5. 请求过滤:对请求进行过滤和处理,比如防止恶意请求、拦截特定的请求等。

  6. 响应处理:对响应进行处理,比如添加响应头、重定向等。

  7. 性能监控:监控请求的处理时间、资源消耗等性能指标,用于性能优化和故障排查。

  8. 安全防护:实施安全策略,比如防止跨站脚本攻击(XSS)、防止跨站请求伪造(CSRF)等。

  9. 缓存控制:控制缓存策略,比如设置缓存过期时间、强制刷新缓存等。

  10. 请求转发和重定向:根据特定条件对请求进行转发或重定向到其他资源。

4. 简述监听器的分类。

  1. ServletContext 监听器:用于监听Web应用程序的生命周期事件,比如Web应用程序的启动和关闭。常用的监听器接口是ServletContextListener,它包括contextInitializedcontextDestroyed方法,分别在Web应用程序启动和关闭时被调用。

  2. HttpSession 监听器:用于监听HTTP会话(Session)的生命周期事件,比如会话的创建、销毁、属性的添加和移除。常用的监听器接口是HttpSessionListenerHttpSessionAttributeListener,分别用于监听会话的创建和销毁,以及会话属性的变化。

  3. ServletRequest 监听器:用于监听HTTP请求的生命周期事件,比如请求的到达、离开、属性的添加和移除。常用的监听器接口是ServletRequestListenerServletRequestAttributeListener,分别用于监听请求的到达和离开,以及请求属性的变化。

  4. 监听器的上下文初始化和销毁:用于监听Web应用程序的上下文初始化和销毁事件。常用的监听器接口是ServletContextListener,通过实现contextInitializedcontextDestroyed方法来监听上下文的初始化和销毁。

5. 哪种监听器不需要部署?

在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"}

2. 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

4. 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.基于表单的文件上传需要注意什么?

  1. 表单的enctype属性:确保表单的enctype属性被设置为multipart/form-data,以支持文件上传。这样表单数据和文件数据都能被发送到服务器。

  2. 文件大小限制:需要在服务器端和客户端都进行文件大小的限制。在服务器端,需要配置Web服务器和应用服务器的文件上传大小限制。在客户端,可以使用HTML5的<input type="file">元素的a***eptsize属性进行文件类型和大小的限制。

  3. 文件类型限制:需要对文件类型进行限制,以确保只接受特定类型的文件。这可以通过客户端和服务器端的校验来实现。

  4. 文件名的安全性:需要对上传的文件名进行安全性校验,以防止恶意文件名导致的安全漏洞。

  5. 文件存储路径:需要指定文件上传后的存储路径,并确保该路径对应的文件夹有足够的权限进行文件写入。

  6. 处理上传文件:在服务器端,需要编写处理文件上传的代码,对上传的文件进行处理和存储。

  7. 异常处理:需要对文件上传过程中可能出现的异常进行处理,比如文件过大、文件类型不符、存储路径无权限等情况。

  8. 安全性考虑:需要考虑文件上传过程中的安全性问题,比如防止跨站脚本攻击(XSS)、拒绝服务攻击(DoS)等。

2.文件下载的实现方法有哪些?它们的优缺点是什么?

  1. 直接链接下载:在网页上提供文件下载的超链接,用户点击链接即可下载文件。这是最简单的实现方法,但无法进行权限控制和统计下载量。

  2. 通过后端服务器提供下载接口:通过后端服务器提供一个接口,用户访问该接口并传入文件标识,后端服务器返回文件内容。这种方式可以实现权限控制和下载统计,但需要后端服务器进行额外的处理。

  3. 使用HTML5的download属性:在HTML5中,可以使用<a>标签的download属性来指定文件的下载名称,使得用户点击链接时可以直接下载文件。这种方法简单方便,但不适用于较老的浏览器。

  4. 使用JavaScript进行下载:通过JavaScript动态生成下载链接,并模拟用户点击该链接来触发文件下载。这种方法可以在不刷新页面的情况下进行文件下载,但需要考虑浏览器兼容性和安全性。

  5. 使用第三方库:可以使用第三方库如jQuery File Download等来简化文件下载的实现,提供更多的功能和兼容性支持。

这些方法各有优缺点:

  • 直接链接下载:简单方便,但无法进行权限控制和下载统计。

  • 通过后端服务器提供下载接口:可以实现权限控制和下载统计,但需要后端服务器进行额外的处理。

  • 使用HTML5的download属性:简单方便,但不适用于较老的浏览器。

  • 使用JavaScript进行下载:可以在不刷新页面的情况下进行文件下载,但需要考虑浏览器兼容性和安全性。

  • 使用第三方库:提供更多的功能和兼容性支持,但引入了额外的依赖。

第11章 JDBC 数据库访问

1. JDBC能完成哪些工作?

  1. 建立数据库连接:JDBC提供了DriverManager类和DataSource接口来建立与数据库的连接,可以连接各种不同类型的数据库。

  2. 执行SQL语句:通过JDBC可以执行数据库操作的SQL语句,包括查询、插入、更新和删除等操作。

  3. 处理查询结果:JDBC能够获取和处理SQL查询的结果集,将查询结果转化为Java对象或数据结构进行进一步处理。

  4. 事务管理:JDBC支持事务管理,可以通过Connection对象进行事务的提交、回滚和设置事务的隔离级别等操作。

  5. 元数据访问:JDBC可以获取数据库的元数据信息,包括表结构、索引、触发器等信息。

  6. 异常处理:JDBC提供了异常处理机制,能够捕获和处理数据库操作中可能出现的异常。

  7. 批处理操作:JDBC支持批处理操作,可以一次性执行多个SQL语句,提高数据库操作的效率。

2.使用纯Java 数据库驱动程序访问数据库时,有哪些步骤?

详情见此https://blog.csdn.***/qiqi_liuliu/article/details/131611766?spm=1001.2014.3001.55023. JDBC 连接数据库的常用方式有哪些?

  1. 使用DriverManager:通过DriverManager类来获取数据库连接,使用数据库厂商提供的JDBC驱动程序来连接数据库。

  2. 使用DataSource:通过DataSource接口来获取数据库连接,这种方式通常用于连接池的管理,可以提高数据库连接的复用性和性能。

  3. 使用连接池:使用第三方连接池库,如Apache ***mons DBCP、C3P0、HikariCP等,通过配置连接池参数来管理数据库连接,提高连接的复用性和性能。

  4. 使用框架:使用一些ORM(对象关系映射)框架,如Hibernate、MyBatis等,这些框架提供了自己的数据库连接管理机制。

4. 下列选项中,()不是JDBC 的工作任务。

A. 与数据库建立连接
B. 操作数据库,处理数据库返回的结果
C. 在网页中生成表格
D. 向数据库管理系统发送SQL 语句

5. 在JDBC中,()接口不能被 Connection 创建。

A. Statement
B. PreparedStatement
C. CallableStatement
D. RowsetStatement

6. 查询结果集 ResultSet 对象是以统一的行列形式组织数据的,执行“ResultSet rs=stmt.executeQuery (“'select bid,name,author,publish,price from book”);”语句,得到的结果集rs 的列数为()。

A. 4
B. 5
С. 6
D. 不确定

7. 给出了如下的查询条件字符串 “String condition="insert book values(?,?,?,?,?)";”,()接口适合执行该 SQL 查询。

A. Statement
C. CallableStatement
B. PreparedStatement
D. 不确定

第12章 Ajax、JSON以及jQuery 技术

1. XMLHttpRequest 对象有()个返回状态值。

A. 3
B. 4
С. 5
D. 6

2. 对象 XMLHttpRequest 的属性 readyState值()表示异步访问服务器通信已经完成。

A. 1
B. 2
С. 3
D. 4

第13章 电子商务平台的设计与实现

第14章 Struts 2 框架基础

1. result 的类型 redirectAction 表示()。

A. 处理 action 链,跳转到下一个 action
B. 转发到一个 JSP
C. 重定向到一个 action
D. 重定向到一个 JSP

2. result 的类型 redirect 表示()。

A. 处理 action 链,跳转到下一个 action
B. 转发到一个 JSP
C. 重定向到一个 action 或一个JSP
D. 重定向到一个 JSP

3. Struts 2 的默认配置文件是()。

A. xeb.xml
B. struts.xml
C. user.ml
D. server.xml

4. 某 action 的配置如下:

<action name="hello" class="action.HelloAction">
    <result name="error">/error.jsp</result>
</ action>

当执行该action 时会调用对应类中的()方法。

A. execute()
B. doPost()
C. doGet()
D. service()

5. 在 Struts2的 Web 应用 hello 中 struts.xml的配置如下:

<package name="user" extends="struts-default" namespace="/my">
    <action name="hello" class="action.HelloAction">
    <result>/ su***ess.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

6. result 的类型 dispatcher 表示()。

A. 处理 action 链,跳转到下一个 action
B. 转发到一个 JSP
C. 重定向到一个 action
D. 重定向到一个 JSP

7. 某 action 的配置如下:

​​​​​​​<action name="hello" class="action.HelloAction">
    <result>/main.jsp</result>
    <result name="su***ess">/su***ess.jsp</result>
    <result name="error">/error.jsp</result> 
    <result name="input">/login.jsp</result>
</action>

调用该 action 后返回值是"su***ess”,则显示的页面是()。

A. main.jsp
B. su***ess.jsp
C. error.jsp
D. login.jsp

8. 某 action 的配置如下:

<action name="hello">
    <result >/su***ess.jsp</result>
</action>

访问该 action 时会调用()类。
A.  Action
B.  ActionSupport
C. HelloAction
D. UserAction

9. 某action 的配置如下:

<action name="hello" class="action.HelloAction" method="update">
    <result>/su***ess.jsp</result>
</action>

访问该 action 时会执行 HelloAction 类中的()方法。

A. execute
B. delete
C. select
D. update

10. 在 Struts 2的 Action 类中访问 Servlet API 有哪几种方法?其中与 HttpServlet 耦合的方法是哪几种?

  1. 实现 ServletRequestAware 接口:通过实现 ServletRequestAware 接口,可以在Action类中获取HttpServletRequest对象。

  2. 实现 ServletResponseAware 接口:通过实现 ServletResponseAware 接口,可以在Action类中获取HttpServletResponse对象。

  3. 实现 ServletContextAware 接口:通过实现 ServletContextAware 接口,可以在Action类中获取ServletContext对象。

  4. 使用ServletActionContext类:ServletActionContext类提供了一些静态方法,可以方便地获取HttpServletRequest、HttpServletResponse等对象。

与HttpServlet耦合的方法通常是指直接依赖于HttpServlet的方法,这些方法通常是通过实现特定的接口或者继承特定的类来实现的。在Struts 2中,与HttpServlet耦合的方法包括:

  • 实现ServletRequestAware接口
  • 实现ServletResponseAware接口
  • 使用ServletActionContext

11. 结果类型redirect 与 redirectAction 的区别是什么?

  1. result类型redirect

    • 当一个action执行完毕后,如果result类型为redirect,它会发送一个HTTP重定向到指定的URL。这意味着浏览器会收到一个302状态码,并重新请求指定的URL。
    • 适用于需要将用户重定向到另一个页面,例如在表单提交后重定向到一个结果页面。
  2. redirectAction

    • redirectAction是一个特殊的result类型,它允许在执行完当前action后,重定向到另一个action。
    • 适用于需要在action执行后立即重定向到另一个action,而不经过任何JSP页面的情况。

12. 在 Action 中接收请求参数有哪几种方式?你认为哪种方式比较方便?

  1. 使用属性:在Action类中定义与请求参数同名的属性,并提供对应的setter方法,Struts 2会自动将请求参数的值注入到属性中。

  2. 实现 ParameterAware 接口:通过实现ParameterAware接口,可以在Action类中获取请求参数的Map。

  3. 使用属性驱动:通过在Action类中定义属性,并提供对应的setter方法,Struts 2会自动将请求参数的值注入到属性中,这种方式通常称为属性驱动。

  4. 使用模型驱动:通过实现ModelDriven接口,可以在Action类中使用一个模型对象来接收请求参数。

  5. 使用Servlet API:通过在Action类中获取HttpServletRequest对象,可以直接从请求中获取参数。

第15章 Spring MVC 框架基础

1. 在开发 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的配置文件:

2. 创建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>

2. 简述 Spring MVC 的工作流程。

  1. 客户端发送请求:客户端(如浏览器)发送HTTP请求到服务器。

  2. DispatcherServlet接收请求:请求首先被DispatcherServlet接收,DispatcherServlet是Spring MVC中的核心控制器,它作为前端控制器负责统一请求的分发和处理。

  3. HandlerMapping选择处理器:DispatcherServlet通过HandlerMapping来确定请求对应的处理器(Controller),HandlerMapping会根据请求的URL或其他条件来选择合适的处理器。

  4. 处理器执行:被选定的处理器(Controller)执行请求处理逻辑,处理器会根据请求的参数和业务逻辑来处理请求,并生成相应的数据模型(Model)。

  5. ModelAndView创建:处理器将处理结果封装到ModelAndView对象中,该对象包含了视图名称和模型数据。

  6. ViewResolver解析视图:DispatcherServlet使用ViewResolver来将逻辑视图名称解析为具体的视图对象。

  7. 视图渲染:视图对象负责将模型数据渲染为最终的输出,通常是HTML、JSON等格式的响应。

  8. 响应返回客户端:渲染后的视图结果会作为HTTP响应返回给客户端,客户端可以看到最终的处理结果。

3. 举例说明数据绑定的优点。

  1. 简化开发:数据绑定可以减少开发人员编写的代码量。通过自动绑定用户输入到数据模型,开发人员无需手动编写大量的数据接收和验证逻辑。

  2. 减少重复代码:数据绑定可以减少重复的代码,例如在不同的表单中使用相同的数据模型,避免了重复编写数据接收和处理的代码。

  3. 提高代码可读性:使用数据绑定可以使代码更加清晰和易于理解。通过直接绑定到数据模型,可以清楚地了解数据的来源和如何被使用。

  4. 减少错误:手动处理用户输入数据可能会导致错误,例如类型转换错误、空指针异常等。数据绑定可以减少这些潜在的错误,提高应用程序的稳定性。

  5. 提高用户体验:数据绑定可以使用户在填写表单时更加便捷,减少了用户输入的复杂性,提高了用户体验。

4. Spring MVC 有哪些表单标签?其中,可以绑定集合数据的标签有哪些?

  1. 表单标签

    • <form:form>:用于创建表单,并将表单数据绑定到控制器的命令对象。
    • <form:input>:用于创建文本输入框。
    • <form:textarea>:用于创建文本域。
    • <form:password>:用于创建密码输入框。
    • <form:checkbox>:用于创建复选框。
    • <form:select>:用于创建下拉列表。
    • <form:radiobutton>:用于创建单选按钮。
    • <form:hidden>:用于创建隐藏字段。
  2. 可以绑定集合数据的标签

    • <form:select>:可以绑定一个集合或Map类型的数据到下拉列表。
    • <form:radiobuttons>:可以绑定一个集合或Map类型的数据到单选按钮组。
    • <form:checkboxes>:可以绑定一个集合或Map类型的数据到复选框组。

5.@ModelAttribute 可实现哪些功能?

  1. 数据预处理@ModelAttribute 注解可以用于在请求处理方法执行之前,对数据进行预处理或初始化。通过在方法上标记 @ModelAttribute 注解,可以在每次请求到达处理方法之前执行该方法,从而准备数据供处理方法使用。

  2. 数据绑定@ModelAttribute 注解可以用于将数据绑定到模型中。当一个请求处理方法返回一个对象时,Spring MVC会自动将该对象添加到模型中,如果在方法参数上使用 @ModelAttribute 注解,也可以将数据绑定到指定的对象中。

  3. 表单数据绑定@ModelAttribute 注解可以用于将表单数据绑定到对象中。当处理包含表单数据的请求时,可以使用 @ModelAttribute 注解将表单数据直接绑定到对象的属性中,简化数据绑定的过程。

  4. 全局数据传递@ModelAttribute 注解可以用于在多个请求处理方法中共享数据。通过在控制器类中定义一个带有 @ModelAttribute 注解的方法,可以在该控制器中的所有请求处理方法中共享该方法返回的数据。

  5. 初始化表单数据@ModelAttribute 注解可以用于在表单页面初始化时提供数据。通过在控制器中定义一个带有 @ModelAttribute 注解的方法,可以在表单页面初始化时将数据传递给表单。

转载请说明出处内容投诉
CSS教程_站长资源网 » Java Web 开发 从入门到实战(课后习题)

发表评论

欢迎 访客 发表评论

一个令你着迷的主题!

查看演示 官网购买