servlet与jsp之间的关系
《JSP动态网站开发》复习题

《JSP动态网站开发》复习题一、选择题1.在传统的HTML页面中加入()就构成了一个JSP页面文件。
A、JAVA程序片B、JSP标签C、用“<%”、“%>”标记符号括起来的程序D、JAVA程序片和JSP标签2.配置JSP运行环境,若WEB应用服务器选用TOMCAT,以下说法正确的是:()A、先安装TOMCAT,再安装JDKB、先安装JDK,再安装TOMCATC、不需安装JDK,安装TOMCAT就可以了D、JDK和TOMCAT只要都安装就可以了,安装顺序没关系3.对于“<%!”、“%>”之间声明的变量,以下说法正确的是:()A、不是JSP页面的成员变量B、多个用户同时访问该页面时,任何一个用户对这些变量的操作,都会影响到其他用户C、多个用户同时访问该页面时,每个用户对这些变量的操作都是互相独立的,不会互相影响D、是JSP页面的局部变量4.在客户端浏览器的源代码中可以看到()A、JSP注释B、HTML注释C、JSP注释和HTML注释D、JAVA注释5.page指令的作用是:()A、用来定义整个JSP页面的一些属性和这些属性的值B、用来在JSP页面内某处嵌入一个文件C、使该JSP页面动态包含一个文件D、指示JSP页面加载Java plugin6.page指令的import属性的作用是()A、定义JSP页面响应的MIME类型B、定义JSP页面使用的脚本语言C、为JSP页面引入JAVA包中的类D、定义JSP页面字符的编码7.page指令的()属性可以设置JSP页面是否可多线程访问A、sessionB、bufferC、isThreadSafeD、info8.()可在JSP页面出现该指令的位置处,静态插入一个文件。
A、page指令标签B、page指令的import属性C、include指令标签D、include动作标签9.以下对象中的()不是JSP的内置对象。
A、requestB、sessionC、applicationD、bean10.在JSP中,内置对象()封装了用户提交的信息,使用该对象可以获取用户提交的信息。
JAVAWEB面试题(含答案)

1、jsp和servlet的区别、共同点、各自应用的范围??JSP是Servlet技术的扩展,本质上就是Servlet的简易方式。
JSP编译后是“类servlet”。
Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。
而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑。
在struts框架中,JSP位于MVC设计模式的视图层,而Servlet位于控制层.2、cookie和session的作用、区别、应用范围,session的工作原理Cookie:主要用在保存客户端,其值在客户端与服务端之间传送,不安全,存储的数据量有限。
Session:保存在服务端,每一个session在服务端有一个sessionID作一个标识。
存储的数据量大,安全性高。
占用服务端的内存资源。
3、jstl是什么?优点有哪些??JSTL(JSP Standard Tag Library,JSP标准标签库)是一个不断完善的开放源代码的JSP标签库,由四个定制标记库(core、format、xml和sql)和一对通用标记库验证器(ScriptFreeTLV和PermittedTaglibsTLV)组成。
优点有:最大程序地提高了WEB应用在各应用服务器在应用程序服务器之间提供了一致的接口,最大程序地提高了1、在应用程序服务器之间提供了一致的接口,之间的移植。
2、简化了JSP和WEB应用程序的开发。
3、以一种统一的方式减少了JSP中的scriptlet代码数量,可以达到没有任何scriptlet 代码的程序。
在我们公司的项目中是不允许有任何的scriptlet代码出现在JSP中。
4、允许JSP设计工具与WEB应用程序开发的进一步集成。
相信不久就会有支持JSTL的IDE 开发工具出现。
4、j2ee的优越性主要表现在哪些方面?MVC模式a、J2EE基于JAVA技术,与平台无关b、J2EE拥有开放标准,许多大型公司实现了对该规范支持的应用服务器。
jsp复习

不能。因为 javabean 是普通的 java 类,MVC 中的 servlet 要完成从客户端接收数据,采用的 servlet 是 HTTP 协议,而普 通的 javabean 不能完成该功能。 2、有人说:JSP 是 Servlet 的高级实现,在 MVC 中,控制器部分应该用 JSP 实现,请您回答 JSP 和 servlet 的异同。 相似:
3. jsp:setProperty:设置 JavaBean 的属性。 4. jsp:getProperty:输出某个 JavaBean 的属性。 5. jsp:forward:把请求转到一个新的页面。 6. jsp:plugin:根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记 4. 说明 MVC 设计模式中,M、V、C 分别代表什么,有什么作用。 答案:M 代表 Model(模型),该组件是对软件所处理问题逻辑的一种抽象,封装了问题的核心数据,逻辑和功能实现,独立于具体 的界面显示以及 I/O 操作。 V 代表 View(视图),该组件将表示模型数据,逻辑关系以及状态信息,以某种形式展现给用户。视图组件从模型组件获得显示信息, 并且对于相同的显示信息可以通过不同的显示形式或视图展现给用户。 C 代表 Controller(控制器),该组件主要负责用户与软件之间的交互操作,控制模型状态变化的传播,以确保用户界面与模型状态的 统一。5.JavaBean 的主要规范是什么? 5.简述使用 JDBC 技术的主要步骤? 答案: 1.注册和加载驱动器 ; 2.与数据库建立连接; 3.发送 SQL 语句; 4.处理结果; 5.关闭连接; 6.如何连接数据库? 答案: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); String url = "jdbc:odbc:数据源名称 "; DriverManager.getConnection(url, "sa", ""); 7.简述 JavaBean 的书写规范。 答案: (1)JavaBean 是一个 public 的类。 (2)类要实现 Serializable 接口 (3)要有一个默认构造函数,以便任何一个容器都可以创建 JavaBean 的实例。 (4) 存放属性的变量为 protected 或 private 特性。 (5)设置和获取属性时,使用 setXXX()和 getXXX()方法。
Jsp和Servlet关系

Jsp和Servlet关系为什么会出现Jsp?其实对于服务器来说它只认识Servlet,我们完全可以在Servlet⽤resp.getWriter().write("");画出⽹页的界⾯,但是仅仅⼀个很简单的界⾯就要重复的书写resp.getWriter().write(""),并且这还没有加上js、css以及jquery。
但是我们在Servlet写的是java代码可以有逻辑的判断,但是在html、css中⽆法加⼊逻辑导致页⾯是静态的。
为了解决这⼀问题出现了jsp,在jsp中可以书写Java代码、js代码、html代码等。
我们都知道浏览器发送请求到服务器,服务器通过解析其中Servlet的别名找到对应的Servlet并执⾏其中的service⽅法做出处理和响应,那么对于服务器来说它只认识Servlet,那么我们编辑的Jsp到底是如何被服务器识别的?实际上服务器还是将.jsp当作Servlet的别名在你局部配置下的web.xml找有没有对应的Servlet,如果没有找到对应的Servlet就去Tomcat的公共配置下的web.xml(Tomcat安装⽬录conf下的web.xml)找对应的Servlet。
会找到如下内容:org.apache.jasper.servlet.JspServlet将对应的jsp⽂件转为Servlet。
那么转的Servlet在什么地⽅呢?打开Tomcat下的work⽂件夹⼀直点到:找你正在运⾏的项⽬的jsp测试的jsp:<%@ page language="java" contentType="text/html; charset=utf-8"pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Insert title here</title></head><body>666</body></html> 被编译好的Java⽂件:/** Generated by the Jasper component of Apache Tomcat* Version: Apache Tomcat/8.5.46* Generated at: 2019-10-16 09:05:10 UTC* Note: The last modified time of this file was set to* the last modified time of the source file after* generation to assist with modification tracking.*/package org.apache.jsp;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.jsp.*;public final class index_jsp extends org.apache.jasper.runtime.HttpJspBaseimplements org.apache.jasper.runtime.JspSourceDependent,org.apache.jasper.runtime.JspSourceImports {private static final javax.servlet.jsp.JspFactory _jspxFactory =javax.servlet.jsp.JspFactory.getDefaultFactory();private static java.util.Map<ng.String,ng.Long> _jspx_dependants;private static final java.util.Set<ng.String> _jspx_imports_packages;private static final java.util.Set<ng.String> _jspx_imports_classes;static {_jspx_imports_packages = new java.util.HashSet<>();_jspx_imports_packages.add("javax.servlet");_jspx_imports_packages.add("javax.servlet.http");_jspx_imports_packages.add("javax.servlet.jsp");_jspx_imports_classes = null;}private volatile javax.el.ExpressionFactory _el_expressionfactory;private volatile org.apache.tomcat.InstanceManager _jsp_instancemanager;public java.util.Map<ng.String,ng.Long> getDependants() {return _jspx_dependants;}public java.util.Set<ng.String> getPackageImports() {return _jspx_imports_packages;}public java.util.Set<ng.String> getClassImports() {return _jspx_imports_classes;}public javax.el.ExpressionFactory _jsp_getExpressionFactory() {if (_el_expressionfactory == null) {synchronized (this) {if (_el_expressionfactory == null) {_el_expressionfactory = _jspxFactory.getJspApplicationContext(getServletConfig().getServletContext()).getExpressionFactory();}}}return _el_expressionfactory;}public org.apache.tomcat.InstanceManager _jsp_getInstanceManager() {if (_jsp_instancemanager == null) {synchronized (this) {if (_jsp_instancemanager == null) {_jsp_instancemanager = org.apache.jasper.runtime.InstanceManagerFactory.getInstanceManager(getServletConfig());}}}return _jsp_instancemanager;}public void _jspInit() {}public void _jspDestroy() {}public void _jspService(final javax.servlet.http.HttpServletRequest request, final javax.servlet.http.HttpServletResponse response)throws java.io.IOException, javax.servlet.ServletException {final ng.String _jspx_method = request.getMethod();if (!"GET".equals(_jspx_method) && !"POST".equals(_jspx_method) && !"HEAD".equals(_jspx_method) && !javax.servlet.DispatcherType.ERROR.equals(request. response.sendError(HttpServletResponse.SC_METHOD_NOT_ALLOWED, "JSPs only permit GET POST or HEAD");return;}final javax.servlet.jsp.PageContext pageContext;javax.servlet.http.HttpSession session = null;final javax.servlet.ServletContext application;final javax.servlet.ServletConfig config;javax.servlet.jsp.JspWriter out = null;final ng.Object page = this;javax.servlet.jsp.JspWriter _jspx_out = null;javax.servlet.jsp.PageContext _jspx_page_context = null;try {response.setContentType("text/html; charset=ISO-8859-1");pageContext = _jspxFactory.getPageContext(this, request, response,null, true, 8192, true);_jspx_page_context = pageContext;application = pageContext.getServletContext();config = pageContext.getServletConfig();session = pageContext.getSession();out = pageContext.getOut();_jspx_out = out;out.write("\r\n");out.write("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"/TR/html4/loose.dtd\">\r\n");out.write("<html>\r\n");out.write("<head>\r\n");out.write("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\r\n");out.write("<title>Insert title here</title>\r\n");out.write("</head>\r\n");out.write("<body>\r\n");out.write("666\r\n");out.write("</body>\r\n");out.write("</html>");} catch (ng.Throwable t) {if (!(t instanceof javax.servlet.jsp.SkipPageException)){out = _jspx_out;if (out != null && out.getBufferSize() != 0)try {if (response.isCommitted()) {out.flush();} else {out.clearBuffer();}} catch (java.io.IOException e) {}if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);else throw new ServletException(t);}} finally {_jspxFactory.releasePageContext(_jspx_page_context);}}}但是我们发现这个类并没有继承HttpServlet⽽是继承了org.apache.jasper.runtime.HttpJspBase并且⾥⾯也没有service⽅法⽽是_jspservice⽅法。
jsp考试题及答案

jsp考试题及答案一、选择题(每题2分,共20分)1. JSP页面是由哪种语言编写的?A. JavaB. JavaScriptC. HTMLD. XML答案:A2. JSP页面通常被编译成什么类型的文件?A. .javaB. .jspC. .classD. .html答案:C3. Servlet是JSP的基础,以下哪个不是Servlet的生命周期方法?A. init()B. service()C. doGet()D. destroy()答案:C4. 在JSP中,以下哪个指令用于指定JSP页面使用的JSP版本?A. <%@ page version="2.0" %>B. <%@ include file="header.jsp" %>C. <%@ taglib uri="/jsp/jstl/core" prefix="c" %>D. <%@ page import="java.util.*" %>答案:A5. JSP页面中,以下哪个不是标准的JSP动作元素?A. <jsp:forward>B. <jsp:include>C. <jsp:useBean>D. <jsp:scriptlet>答案:D6. 在JSP页面中,以下哪个不是表达式(EL)的隐式对象?A. requestB. responseC. sessionD. out答案:D7. JSP页面中,以下哪个不是JSTL(JavaServer Pages Standard Tag Library)提供的标签?A. <c:forEach>B. <c:if>C. <c:choose>D. <jsp:scriptlet>答案:D8. 在JSP页面中,以下哪个不是JSP内置对象?A. requestB. responseC. sessionD. app答案:D9. JSP页面中的注释,以下哪个不会被发送到客户端浏览器?A. HTML注释B. JSP注释C. 单行注释(//)D. 多行注释(/* */)答案:B10. 在JSP页面中,以下哪个不是JSP的指令?A. <%@ page %>B. <%@ include %>C. <%@ taglib %>D. <%@ response %>答案:D二、填空题(每空2分,共20分)1. JSP页面的默认后缀是 jsp 。
JSP Servlet生命周期

JSP Servlet生命周期Servlet与Servlet容器的关系有点像枪和子弹的关系,枪是为子弹而生,而子弹又让枪有了杀伤力。
虽然它们是彼此依存的,但是又相互独立发展。
从技术角度来说是为了解耦,通过标准化接口来相互协作。
Servlet运行在Servlet容器中,其生命周期由容器来管理。
Servlet的生命周期通过javax.Servlet.Servlet接口中的init()、service()和destroy()方法来表示。
Servlet 的生命周期包含了下面4个阶段:1.加载ServletServlet容器负责加载和实例化Servlet。
当Servlet容器启动时,或者在容器检测到需要这个Servlet来响应第一个请求时,创建Servlet实例。
主要是解析web.xml 文件,这个文件描述了一个Web应用的关键信息,也是一个Web应用的入口。
Servlet容器可以从本地文件系统、远程文件系统或者网络服务中,通过类加载器加载Servlet类,成功加载后,容器创建Servlet的实例。
因为容器是通过Java的反射API来创建Servlet实例,调用的是Servlet的默认构造方法(即不带参数的构造方法),所以在编写Servlet类的时候,不应该提供带参数的构造方法。
2.初始化在Servlet被实例化之后,Servlet容器将调用Servlet的init()方法初始化这个对象。
初始化的目的是为了让Servlet对象在处理客户端请求前完成一些初始化的工作,如建立数据库的连接,获取配置信息等。
在初始化期间,Servlet实例可以通过容器的ServletConfig对象从Web应用程序的配置信息(web.xml中)中获取初始化的参数信息。
事实上,Servlet从被web.xml中解析到完成初始化,这个过程非常复杂,中间有很多过程,包括各种容器状态的转化引起的监听事件的触发、各种访问权限的控制和一些不可预料的错误发生的判断行为等等。
servlet技术简介

Servlet技术是Sun公司提供的一种实现动态网页的解决方案,它是基于Java编程语言的WEB服务器端编程技术,主要用于在WEB服务器端获得客户端的访问请求信息和动态生成对客户端的响应消息。
Servlet技术也是JSP技术(另外一种动态网页开发技术)的基础。
一个Servlet程序就是一个实现了特殊接口的Java类,用于被支持Servlet的WEB服务器调用和运行,即只能运行于具有Servlet引擎的WEB服务器端。
一个Servlet程序负责处理它所对应的一个或一组URL地址的访问请求,接收访问请求信息和产生响应内容。
Applet是用于浏览器端的Java小程序,在浏览器端被解释执行,用于在HTML网页中实现一些桌面应用程序的功能,被称为“小应用程序”。
Servlet是用于WEB服务器端的Java小程序,它在WEB服务器端被解释执行,用于处理客户端的请求和产生动态网页内容。
源于Applet的命名,这种WEB服务器端的Java小程序就被命名为了Servlet,与Applet相对应,Servlet可以被称之为“小服务程序”。
Servlet与普通java程序相比,只是输入信息的来源和输出结果的目标不一样,所以,普通Java程序所能完成的大多数任务,Servlet程序都可以完成。
Servlet程序具有如下的一些基本功能:l 获取客户端通过HTML的FORM表单递交的数据和URL后面的参数信息;l 创建对客户端的响应消息内容;l 访问服务器端的文件系统;l 连接数据库并开发基于数据库的应用;l 调用其它的Java类。
Servlet是运行在服务器端的多线程纯java程序,它处理请求的信息并将信息发送到客户端。
这样说吧其实你的JSP页面在客户端请求过后会由WEB容器转译成Servlet源代码,再将Servlet源代码经过编译加载到内存中执行,最后把结果响应给客户端。
====================================================================== =========================================servlet简介servlet容器:负责处理客户请求、把请求传送给servlet并把结果返回给客户。
java总结

1、Servlet与JSP有什么区别?Servlet和JSP完成的功能是相同的,都可以接收用户的请求,可以对用户进行响应,可以调用业务方法。
不同点在于JSP是在html或者xml中嵌入了Java代码或者JSP的标记,在制作页面方面具有优势,可以使用网页编辑工具来制作网页,然后嵌入Java或者JSP的标记。
Servlet是纯Java代码,通常用于控制,不用于输出。
在MVC模式中,JSP通常充当视图,Servlet通常充当控制器。
另外,JSP 在运行的时候还要转换成类似于Servlet的Java代码。
2、Servelt通常有哪些方法init方法,完成初始化service方法,包括doGet和doPost,用于接收用户的请求,调用后台的JavaBean或者EJB,选择界面对用户响应。
destroy方法,用于释放资源3、谈谈Servlet的生命周期当接收到请求的时候,容器察看对应的Servlet对象是否存在,如果不存在,需要加载Servetl,实例化Servlet,调用init方法进行初始化。
如果已经存在,根据用户的请求创建request和response对象,把这两个对象作为参数调用Servlet对象的service方法,Servlet通过这个方法与用户进行交互,方法执行完之后,对请求的处理结束。
Servelt对象继续等待下一个请求。
当应用卸载的时候,调用destroy 方法释放资源。
多个请求共享Servelt对象。
4、Servlet API的两个主要包javax.servlet.*;javax.servlet.http.*;5、编写Servlet需要继承的类是什么?HttpServlet6、编写Servlet通常需要实现的两个方法是什么?doGet方法和doPost方法7、doGet方法和doPost方法中的两个参数是什么?HttpServletRequest和HttpServletResponse,前者封装了与请求相关的信息,后者封装了与响应相关的信息。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
P riv a te isO rd e rVa lid (… ){ ……… } P riv a te sa v e O rd e r(… ){ ……… } v o id < h tm l> <body> < c :fo r E a c h ite m = "$ ......{ o rd e r} "> < /c :fo rE a c h > < /b o d y > < /h tm l> 表示 JSP v o id
7.1.4 Servlet常用类接口
ja v a x .se rv le t.S e rv le t 接口
ja v a x .se rv le t.G.se rv le t.h ttp .H ttp S e rv le t 抽象类
请求处理
S e r v le t p u b lic c la ss O rd e rS e rv le t… { p u b lic v o id D o G e t(… ) … .. if(b e a n .isO rd e rVa lid (… ) b e a n .sa v e O rd e r(… ); … fo rw a rd (“ c o u t.jsp ” ) )}
7.2 Servlet与JSP之间的关系
7.2.1 Servlet与JSP的关系 7.2.2 Servlet与JSP的区别
(1)JSP是HTML(或XML)与Java代码结合的
嵌套型语言;而Servlet则是纯Java类。
(2)JSP是以显示为中心的。 (3)JSP使人们把显示和逻辑分隔成为可能,这
图7-6 MVC模型
该MVC模型使Web应用程序更结构 化和模块化,因此易于开发和扩展。应用 程序被分成如下3部分。 (1)Model
(2)View (3)Controller
这种结构适合于以下情形: (1)Web根据用户在运行时提供的信息 而定。 (2)Web站点上的数据经常改变,比如, 天气预报或新闻标题页等。 (3)Web要使用来自合作伙伴或商业数 据库的信息。
JavaB ean
isO rd e rVa lid ()
图7-4 请求处理、业务逻辑和表示的分离
sa v e O rd e r()
表 示 层
应 用 层 数据层
图7-5 网络的三层结构
C o n tro lle r se rv le t
请求 Ja v a 浏览器 响应 Vie w M odel JS P B ean 数据库或 文件系统
纯 se r v le t P u b lic O rd e rS e rv le t… .{ P u b lic v o id d o G e t(… ){ If(isO rd e rIn fo Va lid (re q ){ sa v e O rd e rIn fo (re q ); o u t.P rin tIn (“ < h tm l> ” ); o u t.P rin tIn (“ < b o d y > ” ); ……… c la ss
自 己 的 se rv le t 类
图7-7 典型的servlet的继承性
1.HttpServlet (1)doGet (2)doPost (3)doPut此方法用来处理HTTP的PUT请求。 (4)doDelete (5)doHead (6)doOption (7)doTrace
2.HttpServletRequest 3.HttpServletResponse 4.HttpSession (1)查看或处理会话信息, (2)通过把其他对象绑定到会话对象上, 来实现在线购物等功能。
7.1.3 Servlet的应用范围和缺陷
(1)要开发和维护应用的各个方面,就需要 对Java编程知识全面地了解,因为处理代码 和HTML不可堆积在一起。 (2)如果要改变应用的外观,或者增加对新 客户类型的支持,则需要对Servlet代码进行 更新和重编译。 (3)在设计应用界面时,很难充分利用Web 页面开发工具,如果这种工具用于开发Web 页面布局,所生成的HTML就必须手工地嵌 入到Servlet代码中。
7.3.2 Servlet在JSP网站开发中
的应用
7.1.2 Servlet的生命周期
(1)初始化事件
初始化事件
In it
请求
S e rv ic e g o G e t() d o P o st()
执行的 开发 线程
响应
终止事件
D e stro y
S e rv le t 生 存 周 期
图7-3 Servlet的生命周期
(2)执行-处理请求和响应 (3)终止事件或卸载
意味着显示和逻辑开发可以并行进行;而Servlet并 没有将输出HTML语句和逻辑处理分离开。
(4)从网络三层结构的角度看,一个网络项目最
少分为三层:数据层、商业逻辑层和表示层。
7.3 Servlet在JSP网站开发中的应用
7.3.1 JSP开发网站的两种模式
1.模式一——JSP+JavaBean 2.模式二——JSP+Servlet+JavaBean
第 7 章 JSP与Servlet
7.1 Servlet介绍 7.2 Servlet与JSP之间的关系
7.3 Servlet在JSP网站开发中的应用
7.1 Servlet介绍
7.1.1 什么是Servlet
Servlet是位于Web服务器内部的、服 务器端的、独立于平台和协议的Java应用 程序,可以生成动态的Web。
(1)高效 (2)方便 (3)功能强大
(4)可移植性好
(5)节省投资
请求 客户 响应
服务器 数据库或 S erv let 文件系统
图7-1 Web服务器装载,执行并管理Servlet的过程
(1)客户向服务器发送对页面的请求。 (2)如果Servlet还没有装入,服务器就装入
它。 (3)服务器把请求信息送给Servlet,给每一 个请求创建一个执行的新线程(Java语言的线 程允许同时执行多个任务。 (4)Serlvet处理这个请求,生成一个响应并 传递给服务器。 (5)服务器把响应送回给客户。