一、选择题
1.下面关于Servlet描述错误的是(C)
A .Servlet是一个特殊的java类,它必须直接或间接实现Servlet接口
B. Servlet接口定义了Servlet的生命周期方法
C.当多个客户请求一个Servlet时,服务器为每个客户开启了一个进程(线程)
D.Servlet客户线程调用Servlet方法响应客户请求
2.Http全称是(C)
A.Hypertext Transport Protocol
B.Hyper text Transport Protocol
C.Hypertext Transfaer Protocol
D.Hyper text Transfaer Protocol
3.Http哪个请求方式,请求参数会出现在网址上(A)
A.Get
B.Post
C.delete
D.以上都不对
解: Get Post请求参数都会出现在网址上,但Post的请求参数是加密的,在网址上看不到。
4.以下描述错误的是(B)
A.Web服务器主要功能是提供方网上信息浏览服务
B.Tomca是一个非免费的基于Java的WEB应用软件容器
C.Tomca使用前提是必须安装JDK
D.Tomcat是一个支持JavaWEB最小的WEB容器,由Apache提供
解:Tomcat是免费的。
5.下面对于自定义类Servlet1描述正确的是(ABC)
A.class Servlet1 implements javax.servlet.Servlet
B.class Servlet1 extends javax.servlet.GenericServlet
C.class Servlet1 extends javax.servlet.HttpServlet
D.class Servlet1 extends javax.servlet.ServletRequest
解:创建Servlet的三种方式
7.下面哪个选项是用来删除客服端Cookie数据(B)
A.response.deleteCookie(cookie)
B.cookie.setMaxAge(0);response.addCookie(cookie)
C.request.deleteCookie(cookie)
D.cookie.setMaxAge(-1);response.addCookie(cookie)
8.下面哪个语句可以将Session中的属性删除©
A.Session.unbind(“key”)
B.Session.remove(“key”)
C.Session.removeAttribute(“key”)
D.Session.deleteAttribute(“key”)
9.对于声明对象<%!..%>的说法错误的是(C)
A.一次可以声明多个变量和方法
B.一个声明仅在一个页面下有效
C.声明的变量将作为局部变量
D.在预定义中声明的变量将在页面加载的时候被初始化
10.可以在下面哪个标记之间插入Java程序段(A)
A.<%…%>
B.<%…/>
C.</…%>
D.<%…!>
关于过滤器描述正确的是(BD)
A.Filter接口定义了init() service()和destroy()方法
B.会传入ServletRequest与ServletResponse至Filter
C.要执行下一个过滤器,必须执行FilterChan的next方法
D.如果要获取初始参数,要使用FilterConfig对象
11.下面关于过滤器描述正确的是(BD)
A.必须考虑前后过滤器之间的关系
B.打开过滤去后不能改变程序原有的功能
C.设计Servlet时必须考虑到未来假装有过滤器的需求
D.每个过滤器的设计为独立相互不影响的组件
二.简答题
1.简述Java进行TCP通信的流程,要求涉及到关键类和关键方法写出来
解:1、服务器初始化——LISTEN
(1)调用socket函数创建文件描述符。
(2)调用bind函数将当前的文件描述符和ip/port绑定在一起。如果这个端口已经被其他进程占用了,就会bind失败。
(3)调用listen函数声明当前这个文件描述符作为一个服务器的文件描述符,为accept做好准备。
(4)调用accept函数阻塞等待客户端连接起来。
2、建立连接的过程——三次握手
第一次:调用connect函数发出SYN段向服务器发起连接请求,并阻塞等待服务器应答。
第二次:服务器收到客户端的SYN段后,会应答一个SYN-ACK段表示“同一建立连接”。
第三次:服务器端收到SYN-ACK后会从connect函数中返回,同时应答一个ACK段。
3、数据传输的过程
建立连接后,TCP协议提供全双工的通信服务。所谓全双工,意思是:在同一条链路中的同一时刻,通信双方可以同时写数据。相对的概念叫做半双工,即:在同一条链路中的同一时刻,只能由一方来写数据。
(1)服务器从accept函数返回后立刻调用read函数读socket里的数据。读socket就像读管道一样,如果没有数据到达就阻塞等待。
(2)客户端调用write函数发送请求给服务器,服务器收到后就向客户端回复ACK,并从read函数中返回,对客户端的请求进行处理。在此期间客户端调用read函数阻塞等待服务器的应答。
(3)服务器调用write函数将处理结果发回客户端,客户端收到后就回复ACK。服务器再次调用read函数阻塞等待下一条请求,。
(4)客户端从read函数中返回,并发送下一条请求,如此循环下去。
4、断开连接的过程——四次挥手
第一次:如果客户端没有更多的请求就调用close函数关闭连接,客户端会向服务器端发送FIN端。
第二次:服务器收到FIN后会回应一个ACK,同时read返回0。
第三次:客户端收到FIN后,再返回一个ACK给服务器。
2.简述实现Servlet的方法和步骤
解:实现Servlet有三个方法,分别为:实现Servlet接口,继承GenericServlet类,继承HttpServlet类
步骤为:
通过实现Servlet接口方法创建Servlet需要实现接口中的所有方法:init(),service(),destroy(),getServletConfig(),getServletInfo方法
继承GenericServlet类子类必须实现:service()方法
继承HttpServlet类必须重写:doXXX()方法