Servlet复习(S2)
<!-- /* Font Definitions */ @font-face{font-family:宋体; panose-1:21 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134;mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3135135232 16 0 262145 0;} @font-face {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 11; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable;mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:"";margin:0; margin-bottom:0; text-align:justify;text-justify:inter-ideograph; mso-pagination:none; font-size:14px;mso-bidi-font-size:16px; font-family:"Times New Roman";mso-fareast-font-family:宋体; mso-font-kerning:1px;} /* Page Definitions */ @page {mso-page-border-surround-header:no;mso-page-border-surround-footer:no;} @page Section1 {size:816px 1056px;margin:96px 120px 96px 120px; mso-header-margin:48px;mso-footer-margin:48px; mso-paper-source:0;} div.Section1 {page:Section1;}-->
1. 列举 6 个常用的 EL 隐式对象 .
答: pageContext , pageScope , requestScope , sessionScope , applicationScope , param , paramValues
2. servlet 中如何创建会话 (session) 对象,如何销毁会话?
答:创建会话:调用request.getSession() 或 request.getSession(true) 销毁 : a) 超过最大非活动时间,
即超过 setMaxInactiveInterval()所设定的时间b)invalidate(), 手动注销会话对象 c. 关闭浏览器
3. 请写出 Java Web 应用程序的核心目录结构
答:工程名 WEB-INF classes lib web.xml
4. 请列举 8 个 jsp 页面隐式对象
答: request , response , application , session , pageContext , config , page , exception , out
5. include 指令和 include 标准动作有什么区别?
答: a) 一 : 执行时间上 :
i. <%@ include file= ” relativeURI ” %> 是在翻译阶段执行
ii. <jsp:include page= ” relativeURI ” flush= ” true ” /> 在请求处理阶段执行 .
b) 二 : 引入内容的不同 :
i. <%@ include file= ” relativeURI ” %> 引入静态文本 (html,jsp), 在 JSP 页面被转化
成 servlet 之前和它融和到一起 .
ii. <jsp:include page= ” relativeURI ” flush= ” true ” /> 引入执行页面或 servlet 所生成的应答文本 .
Include- 指令与 Include 动作的区别如下 :
(1). 动态包含使用 <jsp:include> 标签来实现 (2).<jsp:include page= “ included.jsp ” flush= “true ” /> 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。 (3). 动态包含可以给被包含的页面传递参数 (4). 静态包含使用 include 伪码实现 (5). 不会检查所含文件的变化,适用于包含静态页面 (6). 静态包含不能给被包含的页面传递参数
6. MVC 设计模式中包含哪三种角色在 Java Web 应用程序中分别由哪三种组件扮演并说明作用?
答: M 是指 : 模型<Model> -- 由 dao 组建和 javaBean 组件来承担
V 是指 : 视图 <View> -- 由 HTML 和 JSP 页面来承担 ;
C 是指 : 控制器 <Controller> -- 由 servlet 组建来承担 ;
Javabean 充当模型,用来封装数据,实现业务 Jsp 充当视图,用来显示数据
Servlet 充当控制器,用来接收并处理请求,控制页面跳转
7. 现有一个 servlet ,要求跳转到相同 web 目录下的名为display.jsp 的页面,现要求写出两
种 servlet 到 jsp 页面的跳转语句,并说明跳转语句和重定向的区别
答:重定向: response.sendRedirect( “ display.jsp ” );
转发:request.getRequestDispatcher( “ display.jsp ” ).forward(request,response);
a.A 与 B 页面之间发生重定向或转发 ,重定向时 ,A 与 B 使用不同的请求对象 , 转发时 ,A 与 B
使用同一个请求对象
a. 重定向可跳转到任何页面 , 包括外部应用程序 , 转发只限于本应用程序之内
c. 转发属于服务器端跳转 , 地址栏不会改变 , 一次请求 . 转发只能争对于当前应用 , 不能跨应用 ;
d. 重定向属于客户端跳转 , 地址栏改变 , 多次请求 . 重定向可以跨应用 ;
8 .请解释数据库连接池的原理?
答:理解 : 连接池它是由容器进行管理 ,不需要用户去关心 , 由容器管理事务 , 支持声明式事务 , 全局事务 , 两阶段提交 , 节省编码时间 . 提交效率 , 配置一定数目的连接对象 , 随时可以取到连接对象 , 将资源统一进行管理 ;
基本原理 : (1) 数据库连接池在初始化的时候 , 将创建一定数量的数据库连接到连接池中 , 这些数据库连接的数量 , 是由最小数据库连接数俩设定的 , (2) 无论这些数据库 , 是否被使用 , 连接池都将一直保持至少拥有这么多的连接数量 , 连接池数量限定了这个连接池能占有的最大连接数 ,(3) 当应用程序向连接池请求的连接数,超过最大的连接数是 , 这些请求将加入队列之中 .
9 .现有一 Servlet ,在其中声明两个 Users 类型的对象,给 age 属性赋值,并将他们分别存
入 request 和 session 作用域,当该 servlet 跳转至一个名为 list.jsp 的页面时,要求在 list.jsp
页面显示 request 和 session 作用域中存储的 Users 对象的 age 属性值。核心代码如下,请按
要求完成代码填空。
servlet
Public class MyServlet extends HttpServlet{
public void doGet(HttpServletRequestrequest, HttpServletResponse response) throws
ServletException, IOException {
HttpSession session=request.getSession();
Users mary=new Users(); mary.setAge(18);
Users jack=new Users(); jack.setAge(22);
request.setAttribute( “ student ” ,mary); // 将 mary 对象放入 request 作用域,属性名是 student
session.setAttribute( “ student ” ,jack);// 将 jack 对象放入 session 作用域,属性名是 student
request.getReqeustDispatcher(“list.jsp”).forword(request,response);
// 页面跳转至 list.jsp , list.jsp 与 servlet 在同一目录下 }}
Jsp 代码:
<body>
Name: ${reqeuestScope.student.age} <! ―用 EL 表达式显示 mary 的年龄: 18 -->
或者 Name:${student.age} <! ―用 EL 表达式显示 mary 的年龄: 18 -->
Name: ${sessionScope.student.age} <!-- 用 EL 表达式显示 jack 的年龄: 22 -->
</body>
9.Servlet--servlet( 代码题目 ), 会写 Servlet,( 继承什么父类 , 重写什么方法 ?), 会将对象 ( 比如 User) 保存到不同作用域 , 会区别转发和重定向的区别
答 : 自定义 testServlet 继承至 HttpServlet 父类 , 一般重写父类的doPost() 与 doGet();
request.setAttribute("Zhou",User); // 保存到 request 作用域中 ;
HttpSession session=request.getSession(); // 保存到 session 作用域中 ;
session.setAttribute("Zhou", User);
转发和重定向的区别如下 :
转发属于服务器端跳转 , 地址栏不会改变 , 一次请求 . 转发只能争对于当前应用 , 不能跨应用 ;
重定向属于客户端跳转 , 地址栏改变 , 多次请求 . 重定向可以跨应用 ;
10 .写出 <jsp:useBean> 动作的主要属性和属性取值的含义?
答:<jsp:useBean id=”name” class=”package.class” scope=”scope”/>
id 属性: javaBean 的引用名
class 属性: javaBean 所属的类名;
scope 属性:指定 javaBean 对象存在范围,包含( page , request , session , application )四个范围值。
11 .在一个处理登录的业务中,给定 login.jsp 登录页面,表单提交登录后,发送请求到一个
名为 LoginServ 的 Servlet 中验证用户名和密码。有名为 UserDao 的业务类,其中有原型为
boolean checkUser(String username,Stringpwd) 的方法用来验证用户名和密码,用户名与密码
正确返回 true ,否则返回 false 。现要求在 LoginServ 中接收用户名和密码,调用业务验证其
正确性,并完成转发和重定向的任务。请按上述题意完成以下相关代码填空。
答:
LoginServ.java
main.jsp
public class LoginServ extends HttpServlet{
public void doPost(HttpServletRequestrequest,
HttpServletResponse response) throwsServletException,
IOException {
response.setContentType("text/html");
request.setCharacterEncoding("utf-8");
Stringuname=request.getParameter("uname"); // 获取用户名
Stringpwd=request.getParameter("pwd");// 获取密码
UserDao dao=new UserDao(); // 创建业务类对象
if(dao.checkUser(uname, pwd)){ // 如果通过验证
// 在 request 作用域中设置欢迎信息,在 main.jsp 中显示
request.setAttribute("welcome","Welcome");
request.getRequestDispatcher("main.jsp").forward(request,
response); // 转发到 main.jsp
}else{ response.sendRedirect("error.jsp");// 重定向到 error.jsp}}}
<%@ page language="java"pageEncoding="utf-8"%>
<!-- 用 EL 显示 request 中的 welcome 属性 -->
${requestScope.welcome} 或 ${welcome}
11.Servlet--servlet( 代码题目 ) 代码填空 , 如何从请求中获得数据 ? 处理数据 ( 比如验证 )? 保存数据 ? 转发或重定向答 : Stringstr=request.getParameter(" 参数 ") 获得请求数据的值 ;
request.setAttribute("str",str); // 把 str 字符串保存在 request范围内 ;
12 .假设在 jsp 页面的 session 中存有一个名为“ bookList ”的 List 集合对象, List 集合中存
放 Book (包括 bid , bname , bprice 三个属性,并有相应的 get 和 set 方法)类型的对象,现
在要求写出在 jsp 页面中引用 jstl 的 taglib( 核心标签对应 url 为
“http://java.sun.com/jsp/jstl/core ”,前缀 prefix="c") 指令,并写出使用 jstl 的 forEach 标签遍
历 List 集合 , 并将数据显示在 table 中。
答:
<%@ taglib uri= ” http://java.sun.com/jsp/jstl/core ” prefix= ” c ” > --1 分
<table>
<c:forEach items= ” ${bookList} ” var= ” book ” > -- 写出 foreach 标签,属性取值正确
<tr>
<td>${book.bid}</td>
<td>${book.bname}</td>
<td>${book.bprice}</td>
</tr>
</c:forEach></table> --- 正确结束标签
13 .如何设置一个 WEB 程序的默认欢迎页为welcome.jsp( 写出 web.xml 文档中间的具体配置 ) ?
答:在当前 WEB 工程的 web.xml 文件中添加如下设置:
<web-app> .....
<welcome-file-list>
<welcome-file>welcome.jsp</welcome-file>
</welcome-file-list>
</web-app>
14 .请谈谈 session 与 application 的区别?
答: session: 该对象是 HttpSession 类型的对象,描述一个客户端与服务器之间的一次通话时
段,该段时间内包含客户端的若干次请求和服务器的相应响应,整个时间段 session 对象都
存在。常用来实现购物车之类的存储当前用户的数据。不同用户有各自的不同 session 对象。
application :该对象是 ServletContext 类型的对象,描述的是本身 Web 程序。该对象在
Web 程序部署到 tomcat 服务器时由容器产生,其生命周期至 Web 程序从 tomcat
服务器卸载出去时消失。是所有客户端能共享的一个全局对象,整个系统只有一份。
session -- 是会话对象 , 当用户请求服务器的时候 , 则就为浏览器创建了一个 httpSession 对象 ,
只要在这个会话中 , 都能进行访问。 application -- 是应用程序对象 , 在整个应用程序 , 都能访问的到 .
15 . HTTP 协议请求方法 GET 与 POST 的区别?( 2 点以上区别)
GET 方法 : 1.GET 方法提交数据不安全,数据置于请求行,客户端地址栏可见 ;
2.GET 方法提交的数据大小限制在 255 个字符之内 3.GET 方法可以设置书签和使用电子邮件发送
2.POST 方法 : 1.POST 方法提交数据安全,数据置于消息主体内,客户端地址栏不可见
2.POST 方法提交的数据大小没有限制 3.POST 方法不可以设置书签或不能通过电子邮件发送 .
get请求是通过 url 方式进行提交 , 使用 get 方式提交数据不安全 , 有长度的限制 , 不能超过 255 个字节 ,
可以添加到收藏夹 , 可以设置成书签 , 以邮件的方式 , 进行发送 .
post 是以数据包传替数据 , 地址栏内不可见 . 相对于 get 来说 , 比较安全 . 参数没有长度的限制 ,
不能以邮件的方式发送书签。
16 . HTTP 协议消息的分类与组成?
1. 请求消息组成:请求行、消息头、空行、消息主体
2. 响应消息组成:状态行、消息头、空行、消息主体
http 协议是一种无状态协议 , 当客户端像服务器端发送请求时, 服务器端根据请求 , 响应至客户端 , 比较之间断开连接 , 不保存客户端的信息。这就是 HTTP 无状态会话;
我们除了提交的请求数据外 , 浏览器同时也把 HTTP 协议的相关信息提交给了服务器 . 客户端发送的请求消息文本流 , 由以下内容组成
(1) 请求行 : 包括方法 , 统一资源标示符 (URI) 和 HTTP 协议版本 ;
(2) 头信息 : 典型的请求信息类型于以下内容 ;
GET/monitor/test.jsp?username=a&userpass=b HTTP/1.1 -- 使用的是 get 方式提交的请求数据 , 并指定现在使用是 HTTP 协议的 1.1 版本
Host:localhost:8088 -- 主机使用的端口是 8088;
User-Agent:Mozilla/5.0(window;U;Window NT 5.1;ZH-CN;) --User-Agent 头 , 指的是客户端使用的浏览器 ;
Accept:text/xml,application/xml,test/html;text/plain; --Accept 头信息提供有关客户端可以接受 MIME 类型列表 ;
在头信息之后 , 客户端发送一个空白行 , 指示请求消息结束 , 请求消息有服务器进一步处理 , 并生成相应的响应消息 ;
17 .请详细说明什么是 Servlet ? (50 字以上 )
Servlet(Server Letter) 即小的服务器端程序,是一个特殊的 Java 类,该类必需直接或间接实现 javax.servlet.Servlet 接口。 Servlet 类在服务器端运行,由 Web 容器管理与维护,专用于客户端的请求处理。基于 Java 多线程机制,能满足多个用户的请求与响应。
18 .请详细说明 Servlet 的生命周期以及其对应调用的方法?( 50 字以上)
Servlet 从被客户第一次请求开始,由 Web 容器加载并实例化对象,随后进行:初始化、服务和销毁。一个 Servlet 在初始化时会执行其 init() 方法,在服务阶段执行 serivce() 方法,之后一直常驻内存,直至 Web 容器停止才会执行其destroy() 方法进行对象的销毁工作。
第一阶段 : 加载和实例化 ;-- 当容器启动时 , 容器会在内存中查找是否存在 servlet 实例 , 如果不存在 . 则会创建一个 servlet实例 , 如果存在 , 容器则会直接从内存中读取该 servlet 实例 , 进行加载 ;
第二阶段 :servlet 实例加载完之后 , 就进行初始化工作 , 。则通过 init() 方式进行初始化 , 。
第三阶段 :servlet 初始化完毕后 , 就处于响应请求的就绪状态 .servelt 给客户端的响应由一个 Servlet Response 对象代表 , 当客户端有个请求时, Servlet 容器将 Servlet Request 和 Servlet Response 对象都转交给 servlet ,这两个对象以参数的形式传给 service() 方法内 , 根据请求进行判断 , 如果请求是 get 请求 , 则会调用 doGet 方法 ; 如果请求是 post 请求 , 则会调用 doPost 方法 ;
第四阶段 : 销毁由容器调用 Destroy() 方法进行销毁 servlet 实例 , 指定哪些资源可以被回收 .
19 .请详细说明 Servlet 与 Jsp 的异同点 ?(3 点以上)
1 .Servlet 是一个 Java 类,用于处理客户端的请求,运行于服务器上。 Jsp 是一个动态网页,支持强大的页面动态数据处理,由服务器与客户端共同处理并解释执行。 2 .Servlet 是 Jsp 的实现基础 ,Jsp 翻译后的类也实现了Servlet 接口。 3. Servlet善长业务逻辑的处理,比Jsp 运行速度快 ;Jsp 善于页面表示,运行速度比 Servlet 慢。
jsp 和 servelt 的区分是具体到 MVC 模式的出现越发清晰的 , 在这个设计模式下 :
jsp 只要负责显示层 , 不负责业务逻辑的实现 , 即 view 。 servelt 里面主要负责业务流程的控制, 即 controller, 而数据模型一般通过 javaBean 和 java 类来封装 ; jsp 简单的点就是另一套间的规则写的 servelt 程序,它可以写 java 代码 , 还可以写 html 代码 ,javascript , css. 代码 . 等等 . 首先服务器端 , 会先转成 servlet 程序后 , 就按照 servlet 的执行顺序执行了 . 简单点就是: jsp 就是 servlet 的扩展 ,jsp 第一次执行的时候 , 容器会把 jsp 文件转换成 java 文件 , 然后 , 在编译成 .class 文件 , 而那个 java 文件就是 servlet ;
20 .请详细说明 Jsp 页面的执行过程 ? ( 50 字以上) ( 几个阶段 ? 生命周期描述 ?)
当一个 Jsp 被客户第一次访问时, Web 容器查找并处理该 Jsp 页面。在处理过程中先将该 Jsp 转译成 Java 源文件,再编译成 class 文件,随后加载并实例化对象,依次执行初始化、服务等方法,最后也长期驻留在内存中,
直到 Web 容器停止时才会执行其销毁方法。
JSP 文件会被 Web 容器中的 JSP 引擎转换成 JAVA 源码 , 将产生的 java 的源代码经过编译成.class 文件后,并加载到内存执行;Response( 响应 ) 把结果至客户端。
一般人都会以为 JSP 的执行性能会和 Servlet 相差很多,其实执行性能上的差别只在第一次的执行。因为 JSP 在执行第一次后,会被编译成 Servelt 的类文件,当再重复调用执行时,就直接执行第一次所产生的 Servlet ,而不用再重新把 JSP 编译成 Servlet 。因此,除了第一次的编译花较久的时间之外,之后 JSP 和 Servlet 的执行速度就几乎相同了。
在执行 JSP 网页时,通常可分为两个时期,转译时期 (TranslationTime) 和翻译时期(compilation Time), 执行时期。
21. 请说说会话及会话跟踪的思想与实现 ?(150 字以上 )
客户端从发出请求到服务器,服务器接收请求并响应,随后的客户端与服务器一系列的交互的一段时间,称为会话。
在会话过程中,服务器为客户端分配一块内存空间,该内存空间称为会话对象。同时产生一个唯一的会话标识 (SessionID), 在第一次响应后把 sessionid 发往客户端。客户端在随后的请求时再次将会话标识返回给服务器。服务器就是通过会话标识来区分不同客户以及跟踪客户。
在会话跟踪过程中,客户端与服务器是通过会话标识来达到区分与跟踪的。而会话标识又是借助于 cookie 技术在服务器与客户端之间来回传递。在客户端如果禁用 cookie 时,则会话标识就会丢失,会话跟踪将不法跟踪。
所以有了补充会话跟踪技术 :隐藏表单项与 URL 重写。
21.Servlet-- 会话和会话跟踪 , 描述你对会话和会话跟踪的理解, 会话跟踪的手段有几种 ?
一个会话就是用户通过浏览器与服务器之间进行的一次通话 , 它包含浏览器与服务器之间的多次请求,与响应的过程 ;
会话跟踪的手段有 3 中分别是 : (1)cookie 文件用来保存 sessionId 的文件 ; (2)session 比 cookie 安全不可见 , 但占用 service 资源 ; (3)url 重写 , 这是在用户的 IE 禁止 Cookie 的时候采用的方法 , 因为不管是 Cookie 还是 session 都要借助 Cookie;
22 .列举至少 4 个 JSP 标准动作。
<jsp:useBean id="test"class="pack.mvc.javabean.student" scope="page"> -- 实例化一个 javaBean 对象 ;
<jsp:setProperty name="test" praperty="name"value="ZhouHaiTao"> -- 设置 javaBean 属性 ;
<jsp:getProperty name="test"praperty="name"> -- 获得 javaBean 属性 ;
<jsp:include page="/BookManger/view/show.jsp"> -- 当页面被请求时引入一个文件 ;
<jsp:forward page="/BookManager/view/index.jsp"> -- 把请求转到一个新页面 ;
23 .写出 <jsp:setProperty> 标记的主要属性和属性取值的含义?
答:
<jsp:setProperty name=”BeanName”property=”propertyName” value=”Value”param=”parameter”>
name: 和 <jsp:useBean> 标记中的 id 相同。
property: 对应 javaBean 的属性名
value: 被设置的 javaBean 的属性值,不能和 param 同时使用
param: 被设置的 javaBean 的属性值,来自于某个请求参数。
24 .在 accp.servlet 包中定义一个 UserListServlet.java 的 servlet 子类,用于列出系统用户列表,如果用户想通过浏览器地址栏键入地址: http://localhost:8080/projectname/userlist 访问这个页面,请写出这个 servlet 的配置文件。
<servlet>
<servlet-name> userlist</servlet-name>
<servlet-class>accp.servlet.UserListServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name> userlist</servlet-name>
<url-pattern>/userlist </url-pattern>
</servlet-mapping>
25 .请编写一个简单的过滤器 HelloFilter ,每当经过这个过滤器时都能向控制台输出字符串
“ Hello ”,并且配置它过滤 /UI 目录下所有的内容(主要代码 + 配置文件)。
package filters;
import java.io.IOException;
import javax.servlet.*;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
public class HelloFilter implements Filte{
public void destroy() { }
public void doFilter(ServletRequest arg0,ServletResponse arg1, FilterChain arg2) throws
IOException, ServletException {
System.out.println(“Hello”);
}
public void init(FilterConfig arg0) throwsServletException { }
}
Web.xml 配置文件 :
<filter>
<filter-name>Check</filter-name>
<filter-class>filters.HelloFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Check</filter-name>
<url-pattern>/UI/*</url-pattern>
</filter-mapping>
public class testFilter implements Filter {
public void destroy() {
// TODO Auto-generated method stub
System.out.println(" 过滤器销毁 "); }
public void doFilter(ServletRequest arg0, ServletResponse arg1,
FilterChain chain) throwsIOException, ServletException {
// TODO Auto-generated methodstub
HttpServletRequestrequest=(HttpServletRequest)arg0;
HttpServletResponseresponse=(HttpServletResponse)arg1;
request.setCharacterEncoding("GBK"); // 设置编码格式 ;
response.setCharacterEncoding("GBK");
// 进入下一个过滤器 ;
System.out.println(" 第一次处理乱码 ");
chain.doFilter(request,response);
System.out.println(" 第二次处理乱码 ");
}
public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated methodstub
System.out.println(" 过滤器加载 !");} }
26.Servlet--simpletag,SimpleTag 接口的生命周期描述 ( 几个主要方法 ? 什么时候被调用 ?) SimpleTagSupport 是实现类 .
1.JSP2.0 中为了简化标签的复杂性,增加了制作 SimpleTag 的标签接口 SimpleTag 以及 SimpleTagSupport 标签类。
2.SimpleTagSupport 类是实现 SimpleTag 接口的。它只需要实现一个 doTag() 方法即可,而不需要一堆回传值。
3. 创建一个标签处理程序,可以直接或间接地实现 SimpleTag 接口。
simpleTag 的生命周期描述如下 :
(1) 每次遇到标签时,容器构造一个SimpleTage 的实例,并且这个构造方法没有参数。和经典的标签是一样的, SimpleTag 不能进行缓冲,故不能重用,每次都需要构造新的实例。
(2) 调用构造方法后,就用setJspContext() 和 setParent() 方法,只有这个标签在另一个标签内时,才调用 setParent() 方法。
(3) 容器调用每个属性的setter 方法以设置这些属性的值。 (4) 如果存在 Body ,那么就使用setJspBody 方法设置这个标签的标签体。(5) 容器调用 doTag 方法,所有的标签的逻辑,迭代和 Body 计算都在这个方法中。
1. 什么是 HTTP ?作用是什么?( 20 字以上描述)
HTTP(Hypertext Transfer Protocol) 即超文本传输控制协议,是 WWW 服务程序所用的协议。
作用:该协议用于计算机与计算机之间进行通讯。是 Web 程序客户端与服务器交互必备的协议 HTTP 协议是一种无状态的协议。
10. 请解释 Cookie 和 URL 重写实现会话跟踪的原理(50 字以上 ) ?
1)Cookie 是一个服务器发往客户端的一小段信息。它主要用于在客户端与服务器之间来回传递会话标识。
2)URL 重写是一种会话跟踪技术,它采用在服务器上开辟会话对象来存储客户信息,并以字符串的形式来传递会话标识,而不是借用 Cookie 来传递会话标识。它是保证在客户端即使禁用 Cookie 而仍然维持会话跟踪的最有效技术之一。
12. 请说说连接池技术有何优点所在?( 50 字以上)
连接池技术是一种基于 JDBC 技术而实现数据库连接的技术,其主要的思想是预先与数据库建立若干的连接对象存储于服务器内存缓冲区中,当客户需要与数据库建立连接时,直接从服务器的内存中拿取一个连接对象,当用完之后,又将连接对象放回服务器。其优点是能提供客户最快捷的数据库连接体验,以及实现数据库服务的分布式应用。
11.JSTL 标签库中包括哪些核心标签 , 并说明它们各自的作用?
核心标签 : <%@ tagliburi="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:set>: 定义一个作用域变量 <c:remove>: 删除一个作用域变量 <c:out>: 输出一个表达式的值
<c:catch>: 捕获一个异常 <c:if>: 条件判断 <c:forEach>: 循环处理
<c:forTokens>: 分割字符串 <c:choose>: 多分支处理
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/h_ls07/archive/2009/09/02/4510317.aspx