JavaWeb练习题答案

JavaWeb练习题答案

在这里插入图片描述

选择

  1. 超链接指向的地址写在哪个属性里 ©

A. Value

B. url

C. Href

D. Action

  1. 在表单中添加隐藏域时,需要设置标记的type属性值为 (B)

A. Hidden

B. submit

C. Text

D. File

  1. 不是JSP运行必须的是 (D)

A. 操作系统

B. Java JDK

C. 支持Jsp的Web服务器

D. 数据库

  1. 下面哪种是B/S结构 (B)

A. 数据库/服务器

B. 浏览器/服务器

C. 控制台/服务器

D. 客户端/服务器

  1. 下面哪些标记不可以改变文本的格式 (D)

A. h2

B. center

C. br

D. input

  1. 以下哪个不属于JSP指令标签 (A)

A. jsp:include

B. taglib

C. Include

D. page

  1. 下面哪个不可以作为标签的属性 ©

A. id

B. method

C. src

D. action

  1. 在Java Web中,Servlet从实例化到消亡是一个生命周期。下列描述正确的是 (A)

A. init()方法是容器调用的Servlet实例的第一个方法

B. 在典型的Servlet生命周期模型中,每次Web请求就会创建一个Servlet实例,请求结束Servlet就消亡了

C. 在容器把请求传送给Servlet之后,在调用Servlet实例的doGet或者doPost方法之前,容器不会调用Servlet实例的其他方法

D. 在Servlet 实例消亡之前,容器调用Servlet实例的close()方法

解析:
每个Servlet的运行都遵循如下生命周期:

1. 创建Servlet实例

web容器负责加载Servlet,当web容器启动时或者是在第一次使用这个Servlet时,容器会负责创建Servlet实例,但
是用户必须通过部署描述符(web.xml)指定Servlet的位置,也就是Servlet所在的类名称,成功加载后,web容器会通
过反射的方式对Servlet进行实例化。

2. WEB容器调用Servlet的init()方法,对Servlet进行初始化

在Servlet实例化之后,Servlet容器会调用init()方法,来初始化该对象,主要是为了让Servlet对象在处理客户请求前
可以完成一些初始化的工作,例如,建立数据库的连接,获取配置信息等。对于每一个Servlet实例,init()方法只能
被调用一次。init()方法有一个类型为ServletConfig的参数,Servlet容器通过这个参数向Servlet传递配置信息。
Servlet使用ServletConfig对象从Web应用程序的配置信息中获取以名-值对形式提供的初始化参数。另外,在
Servlet中,还可以通过ServletConfig对象获取描述Servlet运行环境的ServletContext对象,使用该对象,Servlet可
以和它的Servlet容器进行通信。无论有多少客户机访问Servlet,都不会重复执行init()。


3. Servlet初始化之后,将一直存在于容器中,service()响应客户端请求

1. 如果客户端发送GET请求,容器调用Servlet的doGet方法处理并响应请求

2. 如果客户端发送POST请求,容器调用Servlet的doPost方法处理并响应请求

3. 或者统一用service()方法处理来响应用户请求

service()是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法
就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在
HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。要注意的是,在
service()方法被容器调用之前,必须确保init()方法正确完成。容器会构造一个表示客户端请求信息的请求对象(类型
为ServletRequest)和一个用于对客户端进行响应的响应对象(类型为ServletResponse)作为参数传递给service()方
法。在service()方法中,Servlet对象通过ServletRequest对象得到客户端的相关信息和请求信息,在对请求进行处
理后,调用ServletResponse对象的方法设置响应信息。

4. WEB容器决定销毁Servlet时,先调用Servlet的destroy()方法,通常在关闭web应用之前销毁Servlet

destroy()仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当容器检测到一个Servlet对象应该从服务中被
移除的时候,容器会调用该对象的destroy()方法,以便让Servlet对象可以释放它所使用的资源,保存数据到持久存
储设备中,例如,将内存中的数据保存到数据库中,关闭数据库的连接等。当需要释放内存或者容器关闭时,容器
就会调用Servlet对象的destroy()方法。在Servlet容器调用destroy()方法前,如果还有其他的线程正在service()方法
中执行,容器会等待这些线程执行完毕或等待服务器设定的超时值到达。一旦Servlet对象的destroy()方法被调用,
容器不会再把其他的请求发送给该对象。如果需要该Servlet再次为客户端服务,容器将会重新产生一个Servlet对象
来处理客户端的请求。在destroy()方法调用之后,容器会释放这个Servlet对象,在随后的时间内,该对象会被Java
的垃圾收集器所回收。
  1. 仔细查看下面的这段代码: (D)
<style>   
    .one{    font-family:宋体;    font-size:24px;    color:red;    }  
</style> 

​ 这段css代码会改变哪一个标签的样式

A. < h2 id=“one”> 应用了选择器one

B. < h2 type=“one”> 应用了选择器one

C. < h2 name=“one”> 应用了选择器one

D. < h2 class=“one”> 应用了选择器one

  1. 包含CSS样式的方式,不包含哪种 ©

A. 内嵌式

B. 链接式

C. 注入式

D. 行内样式

  1. 下面( )命令可用于编译Java程序 ©

A. Javadoc

B. Javap

C. javac

D. Java

  1. Java源代码文件的扩展名是 ©

A. .com

B. 以上都不对

C. .java

D. .class

  1. 对于ServletRequest接口的获取请求参数的方法的描述那一项是正确的? ©

A. getParameter方法只用于接收POST请求参数,接收GET请求参数需要使用getQueryString方法

B. 如果一个参数key有多个值,那么getParameter(key)方法会返回空

C. 如果一个参数key有多个值,那么getParameterValues(key)方法会返回一个包含所有值的字符串数组

D. getParameter方法返回Object对象,使用前要强制类型转换:如String str=(String) request.getParameter(key)

解析:
获取请求参数通用方式的常用方法:
	getParameter 根据参数名称获取参数值
	getParameterValues 根据参数名称获取参数值的数组
	getParameterNames 获取所有请求参数的名称
	getParameterMap 获取所有参数的Map集合
  1. 下面哪个标记可以更改网页的标题 (A)

A. title

B. body

C. head

D. html

  1. 下面哪一组属于JSP动作标识 (D)

A. <c:out> jsp:include

B. jsp:include jsp:page

C. jsp:include <c:out>

D. jsp:include jsp:forward

解析:
JSP三大指令: 
	1. page指令:JSP三大指令之一,page指令用来设置整个JSP页面的相关属性和功能;包括制定JSP脚本语言的种类、导入的包或者类、制定页面编码的字符集   <%@ page 属性1= “值1” 属性2=“值2” …%>
	2. include指令:JSP三大指令之一,用来将一个页面引入到本页面。分为静态包含和动态包含两种情况。   <%@ page 属性1= “值1” 属性2=“值2” …%>
	3. taglib指令:JSP三大指令之一,使用taglib指令引入JSTL的标准标签库或者自定义的标签库,可以简化JSP的语法,从而简化JSP页面的设计。   <%@taglib uri=“标签描述文件” prefix=“前缀名” %> 
JSP动作标记: 
	1. include动作标记   <jsp:include page = “URL”/>或<jsp:include page = “URL” >
	2. forward动作标记   <jsp:param name = “” value = “”>
	3. useBean动作标记   <jsp:useBean id=“bean的名字” class=“创建beans的字节码文件” scope=“bean有效范围” />
  1. 在Jsp页面中嵌入Java逻辑代码。应用的哪个标记 (D)

A. <!-- – >

B. /* */

C. <%-- --%>

D. <% %>

  1. 关于MVC架构的缺点,下列的叙述哪一项是不正确的 (B)

A. 提高了对开发人员的要求

B. 代码复用率低

C. 增加了文件管理的难度

D. 产生较多的文件

  1. 在Jsp页面中不包括,下面哪项内容 (A)

A. 属性文件

B. 动态脚本

C. HTML标记语言

D. JSP指令标签项

解析:
JSP Page指令的属性:
	language 属性-->设置当前页面中编写 JSP 脚本所使用的语言,默认值为 java    <%@ page language="java" %>
	contenType 属性-->设置发送到客户端文档响应报头的 MIME(Multipurpose Internet MailExtention)类型和字符
编码,多个值之间用“;”分开  <%@ page contenType="MIME 类型; charset=字符编码" %>
	import 属性-->用来导入程序中要用到的包或类,可以有多个值,无论是 Java 核心包中自带的类还是用户自行编
写的类,都要在 import 中引入  <%@ page import="包名.类名" %>
	info 属性-->设置 JSP 页面的相关信息,如当前页面的作者、编写时间等。此值可设置为任意字符串,由 
Servlet.getServletInfo() 方法来获取所设置的值  <%@ page info="可以是任意的字符串"%>
	extends 属性-->指定将 JSP 页面转换为 Servlet 后继承的类。在 JSP 中,通常不会设置该属性,JSP 容器会提
供继承的父类。
	session 属性-->表示当前页面是否支持 session,如果为 false,则在 JSP 页面中不能使用 session 对象以及 
scope=session 的 JavaBean 或 EJB。该属性的默认值为 true。
	errorPage 属性-->用于指定JSP文件的相对路径,在页面出错时,将转到这个 JSP 文件来进行处理。
	isErrorPage 属性-->指示一个页面是否为错误处理页面。设置为 true 时,在这个 JSP 页面中的内置对象 
exception 将被定义,其值将被设定为调用此页面的 JSP 页面的错误对象,以处理该页面所产生的错误。   <%@ page isErrorPage="true" %>
	pageEncoding 属性-->设置 JSP 页面字符的编码,常见的编码类型有 ISO-8859-1、gb2312、utf-8 和 GBK 等。
默认值为 ISO-8859-1。   <%@ page pageEncoding="字符编码" %>
  1. 仔细查看下面的这段web配置: (A)
< servlet>
< servlet-name>SimpleServlet< /servlet-name>
< servlet-class>com.lyq.SimpleServlet< /servlet-class>
< /servlet>
< servlet-mapping>
< servlet-name>SimpleServlet< /servlet-name>
< url-pattern>/SimpleServlet< /url-pattern>
< /servlet-mapping>

JSP中使用哪个URL可是访问此配置中的Servlet

A. /SimpleServlet

B. com.lyq.SimpleServlet

C. SimpleServlet

D. Servlet

  1. 要设置JSP页面支持的语言,要设置page指令的哪个属性 (D)

A. contentType属性

B. Import属性

C. extends属性

D. language属性

  1. jsp的哪个指令允许页面使用者自定义标签库? (B)

A. include指令

B. taglib指令

C. page指令

D. plugin指令

  1. 下面哪项内容使用request对象无法实现 (D)

A. 定义属性

B. 获取客户端IP

C. 获取表单提交的信息

D. 将页面重定向至index.jsp页

解析:
知识点一、

String getParameter(String name)	返回name指定参数的参数值
String[] getParameterValues(String name)	返回包含参数name的所有值的数组
void setAttribute(String,Object)	存储此请求中的属性
Object getAttribute(String name)	返回指定属性的属性值
String getContentType()	得到请求体的MIME类型
String getProtocol()	返回请求用的协议类型及版本号
String getServerName()	返回接受请求的服务器主机名
int getServerPort()	返回服务器接受此请求所用的端口号
String getCharacterEncoding()	返回字符编码方式
void setCharacterEncoding()	设置请求的字符编码方式
int getContentLength()	返回请求体的长度(以字节数)
String getRemoteAddr()	返回发送此请求的客户端IP地址
String getRealPath(String path)	返回一虚拟路径的真实路径
String request.getContextPath()	返回上下文路径

知识点二、
请求重定向,转发

请求转发:
	请求转发是服务器行为,即用户向服务器发送了一次http请求,该请求可能会经过多个信息资源处理以后返回给用户,各个信息资源使用请求转发机制互相转发请求,从用户的感官上来看,是感觉不到请求转发的。
请求转发的关键点:
	从第一次发送请求到最后一次发送请求的过程中,web容器只创建一次request和response对象,新的页面继续处理同一个请求。
	其本质是服务器将request对象在页面之间进行了相互的传递。
	可以共用request对象信息。
	服务器内部进行的转发
	只有一次请求
	地址栏不会发生变化
	必须是在同一台服务器下完成
	
	> //获取请求转发器
	> RequestDispatcher dispatcher = req.getRequestDispatcher("/myservlet04.do");
	> //请求转发
	> dispatcher.forward(req, resp);


请求重定向:
	请求是客户端行为(客户端跳转)。服务器端在响应第一次请求的时候,让浏览器再向另外一个URL发出请求,从而达到转发的目的。它本质上是两次HTTP请求,对应两个request对象。
几个关键问题
	有两次请求
	地址栏会发生改变
	HttpServletRequest不能可以在这两次请求中共享数据
	可以共享context,session域的数据
	可以在不同服务器下完成
	
	> resp.setStatus(302);
	> resp.setHeader("Location", "/myservlet04.do");
	
	> resp.sendRedirect("myservlet04.do")

  1. HttpServlet类中,用来处理POST请求的方法是 ©

A. doHead

B. doGet

C. doPost

D. doPut

  1. 下面哪个接口可以向数据库发送sql (A)

A. PreparedStatement

B. ResultSet

C. DriverManager

D. Connection

  1. 下面哪项不属于Jsp内置对象 (A)

A. include

B. out

C. session

D. page

解析:
Jsp一共定义了9个对象:request、response、session、application、out、pagecontext、config、page、
exception
  1. 开发Servlet程序通常继承哪个接口 (A)

A. HttpServlet

B. Servlet

C. Service

D. RequestDispatcher

  1. Servlet程序的入口点是 ©

A. init()

B. main()

C. service()

D. doGet()

  1. 以下哪个对象提供了访问和放置页面中共享数据的方式 (A)

A. pageContext

B. response

C. request

D. session

解析:
jsp四大作用域
page域: 只能在当前jsp页面中使用(当前页面)
request域: 只能在同一个请求中使用(转发)
session域: 只能在同一个会话(session对象)中使用(私有的)
context域: 只能在同一个web应用中使用。(全局的)
  1. 获取用户提交的表单属性,使用的是request对象的什么方法 (D)

A. getRemotePort()方法

B. setAttribute()方法

C. setCharacterEncoding()方法

D. getParameter()方法

  1. session的有效有效时间是以什么为单位的 (A)

A. 秒

B. 毫秒

C. 分钟

D. 小时

  1. 下面的代码是哪种数据库的驱动 Class.forName(“com.mysql.jdbc.Driver”) (B)

A. SqlServer

B. MySQL

C. DB2

D. Oracle

  1. 下列动态网页和静态网页的根本区别描述错误的是 (D)

A. 静态网页服务器端返回的HTML文件是事先存储好的

B. 动态网页服务器端返回的HTML文件是程序生成的

C. 静态网页文件里只有HTML标记,没有程序代码

D. 动态网页中只有程序,不能有HTML代码

  1. 下列关于Servlet接口的说法中,正确的是 ©

A. Servlet接口中只有一个默认的实现类HttpServlet

B. Servlet接口中定义了4个抽象方法

C. Servlet接口的抽象方法中,init()、service()和destroy()方法可以表现Servlet的生命周期

D. GenericServlet类不是Servlet接口的实现类

在这里插入图片描述

在这里插入图片描述

  1. Servlet的service()方法是作用是 ©

A. 完成初始化工作

B. 获取Servlet对象的配置信息

C. 处理客户端的请求

D. 释放资源

填空

  1. 在网页中添加一个表单,需要添加 【 】 标记。
解析:form
  1. 使用< jsp:setProperty>动作标记可以在JSP页面中设置Bean的属性,但必须保证Bean有对应的【 】方法。
解析:getter setter
  1. 在表单中添加一个提交按钮,< input>标记的type属性值应该为【 】。
解析:submit
  1. Servlet中使用的方法doGet,【 】 ,【 】
解析: doPost  service
  1. HTML中换行标记是【 】,段落标记是【 】,标题标记是【 】,居中标记是【 】。
解析: br  p  h1-h6(title) center 
  1. Tomcat服务器的默认端口号是【 】
解析:8080
  1. 把图片固定成300像素宽、200像素高。 < img src=“red.jpg” 【 】/>
解析:width=300px;height=200px;
  1. 能在浏览器的地址栏中看到提交数据的表单提交方式是【 】
解析:get
  1. JSP页面中包含有几种注释形式【 】
解析:
<% // 单行注释 %>
<% /*
        多行注释
    */
%>

<% /**
        文档注释
    */
%>
<!-- html注释 -->
<%--  隐藏注释 --%>
  1. JSP的编译指令标记通常是指page指令,【 】,【 】。
解析: taglib  include
  1. 要实现将index.jsp页面,转发至erter,.jsp页面中,需要使用【 】标识。
解析:jsp:forward
  1. 在“<%=”和“%>”标记之间放置【 】,可以直接输出其值。
解析: 表达式
  1. 在表单中添加一个提交按钮【 】。 < form action=“welcome.jsp” > < !— 请在此处添加提交按钮 --> < /from>
解析:<input type="button" value="提交">
  1. include指令中 的file属性的意思是【 】
解析:指定引入文件的相对路径
  1. 一般用JSP来处理【 】,用Servlet来实现【 】
解析: 页面显示     业务逻辑
  1. 负责处理客户请求的对象是【 】。
解析: request
  1. JSP的Page编译指令的属性Language的默认值是【 】。
解析: java
  1. 要把Java的表达式结果输出到JSP页面中使用的是【 】。
解析: <%=  %>
  1. JSP页面中request.getParamter(String )得到的数据,其类型是【 】。
解析: String
  1. 要包含一个外部文件,需要使用【 】动作标识。
解析:jsp:include
  1. 当一个客户线程执行某个方法时,其他客户必须等待,直到这个客户线程调用执行完毕该方法后,其他客户线程才能执行,这样的方法在定义时必须使用关键字【 】。
解析:synchronized
  1. 在连接数据库之前,首先要加载要连接数据库的驱动到JVM(Java虚拟机),通过java.lang.Class类的静态方法【 】实现。
解析: forName
  1. JavaBean的作用范围可以是page、request、session和【 】四个作用范围中的一种
解析: context域

jsp四大作用域
page域: 只能在当前jsp页面中使用(当前页面)
request域: 只能在同一个请求中使用(转发)
session域: 只能在同一个会话(session对象)中使用(私有的)
context域: 只能在同一个web应用中使用。(全局的)
  1. Servlet的生命周期的三个阶段分别为【 】阶段、【 】阶段和【 】阶段。
解析: init()   service()    destroy()
  1. 能在浏览器的地址栏中看到提交数据的表单提交方式是【 】
解析: get
  1. 对于insert、update和delete语句,调用【 】方法,而select语句则调用【 】方法
解析:executeUpdate  executeQuery
  1. JavaBean的属性必须声明为private,方法必须声明为【 】访问类型
解析: public
  1. Servlet在调用doGet()或doPose()方法之前,首先调用【 】方法。
解析: init()
  1. 为了实现请求重定向,HttpServletResponse接口定义了一个【 】方法
解析:sendRedirect()
  1. Java字节码文件的扩展名是【 】。
解析:.class
  1. Servlet的配置主要有两种方式,分别是通过Web应用的配置文件【 】来完成配置和使用【 】注解的方式完成。
解析:web.xml    @WebServlet
  1. 假设Form表单的提交方式为GET,那么在Servlet中调用的是【 】方法。
解析: DoGet()
  1. Servlet的生命周期大致可以分为三个阶段,分别是【 】、【 】、【 】和销毁阶段。
解析: init()   service()   destroy() 
  1. 如果当前Web资源不想处理请求,RequestDispatcher接口提供了一个【 】方法,该方法可以将当前请求传递给其他Web资源对这些信息进行处理并响应给客户端,这种方式称为请求转发。
解析: forward()
  1. 添加一个超链接“百度”,点击之后可以连接到百度搜索【 】。
解析: <a href="www.baidu.com"> </a>

简答题

1. 实现第一个JDBC程序。

提示:

第一步加载并注册数据库驱动

第二步通过DriverManager获取数据库连接(数据库名字db,数据库用户root,数据库密码123456)

第三步通过Connection对象获取Statement对象

第四步使用Statement对象执行SQL语句(sql语句为String sql = "select * from users";)

第五步遍历输出结果集

请按照提示完成代码编写
2.简述请求转发和重定向的区别 
3.程序填空--显示用户上次访问时间
当用户访问某些Web应用时,经常会显示出该用户上一次的访问时间。例如,QQ登录成功后,会显示用户上次的登录时间。本案例要求使用Cookie技术实现显示用户上次的访问时间。
@WebServlet(name = "ServletDemo11",value = "/ServletDemo11")
public class ServletDemo11 extends HttpServlet {


    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //    指定服务器输出内容的编码方式为UTF-8,防止发生乱码
        resp.setContentType("①                                ");
//        获取所有的cookie
        Cookie[] cookies = req.getCookies();

//       定义一个flag变量用于判断cookie是否为空
        boolean= false;
//        遍历cookies数组
        if (cookies != null && cookies.length > 0) {
//            定义一个字符串,用于保存 lastTime
            String lastTime = "lastTime";
            for (Cookie cookie : cookies) {
//                获取cookie的名称
                String name =;
//                判断是否为lastTime
                if (lastTime.equals(name)) {
//                    该cookie不是第一次登录,显示上次登录的时间
                    flag = true;
//                    获取cookie的value
                    String value =;
                    System.out.println(value);
                    System.out.println("------------");
//                    解码
                    value = URLDecoder.decode(value, "utf-8");
                    System.out.println(value);
                    resp.getWriter().write("欢迎回来 , 您上次访问的时间是: " + value);


//                    重新设置访问的时间
                    Date date = new Date();
                    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年mm月dd日 HH:mm:ss");
                    String format = simpleDateFormat.format(date);
                    System.out.println(format);
                    System.out.println("-------------");
                    String encode = URLEncoder.encode(format,"utf-8");
                    System.out.println(encode);
//                    保存cookie的值
                    cookie.;
//                    设置cookie的存活时间 一个月
                    cookie.;
//                    将cookie返回
                    resp.addCookie(cookie);
                    break;
                }
            }
            if (cookies == null || cookies.length == 0 || flag == false) {
                Date date = new Date();
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年mm月dd日 HH:mm:ss");
                String format = simpleDateFormat.format(date);
                System.out.println(format);
                System.out.println("-------------");
                String encode = URLEncoder.encode(format,"utf-8");
                System.out.println(encode);
//                创建一个cookie
                Cookie cookie = new Cookie(lastTime,encode);
//                    设置cookie的存活时间 一个月
                cookie.setMaxAge(60 * 60 * 24 * 30);
//                    加入当前cookie请求时间
                resp.addCookie(cookie);
                resp.getWriter().write("您好欢迎首次登陆!!!");
            }

        }
    }
}

4.有人说:JSP是Servlet的高级实现,在MVC中,控制器部分应该用JSP实现,请您回答JSP和servlet的异同
5.简单回答Servlet的工作过程。
  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铲屎官白茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值