tceic.com
学霸学习网 这下你爽了
当前位置:首页 >> 计算机软件及应用 >>

第8章 Java Servlet基础_图文

普通高等教育“十一五”国家级规划教材

<JSP程序设计>第8章

Java Servlet基础
Power point 制作:耿祥义 张跃平

配合< JSP程序设计>例子源代码一起使用

第8章导读
主要内容 ? Servlet类与servlet对象 ? 编写web.xml ? servlet对象的创建与运行 ? servlet对象的工作原理 ? doGet和doPost方法 ? 重定向与转发 ? 使用session 难点 ? servlet对象的工作原理 ? 重定向与转发 关键实践 ? 使用servlet读文件

第8章 Java Servlet基础
Java Servlet技术的核心就是在服务器端创建能 响应用户请求的对象,被创建的对象习惯上称做 一个servlet对象。 在JSP技术出现之前,Web应用开发人员就是自 己编写创建 servlet 对象的类,并负责编译生成成 字节码文件、复制这个字节码文件到服务器的特 定目录中,以便服务器使用这个字节码创建一个 servlet对象来响应用户的请求.

§8.1 Servlet类与servlet对象
1.编写Servlet类 编写创建 servlet 对象的类就是编写 HttpServlet 类的子类 , 即一个 Servlet类。 注:HttpServlet类在javax.servlet.http包中 Servlet类必须有包名。 参考p244 Hello.java 编译成功后得到字节码文件Hello.class。 2.字节码文件的保存 在当前Web服务目录下建立如下目录结构:
Web服务目录\WEB-INF\classes

根据类的包名(比如:package china.dalian; ),在目录classes下建立相 应的子目录.
Web服务目录\WEB-INF\classes\china\dalian

把Servlet类的字节码,比如Hello.class的字节码文件复制到复制到上 述目录中。

注:要重新启动Tomcat服务器。

§8.2 编写web.xml
Servlet 类的字节码保存到指定的目录后,我们必须为Tomcat服务器 编写一个部署文件,只有这样, Tomcat 服务器才会按用户的请求使 用Servlet字节码文件创建对象。 该部署文件是一个 XML 文件,名字是 web.xml ,该文件由 Tomcat 服 务器负责管理。 编写的web.xml文件保存到Web服务目录的WEB-INF子目录中
Web服务目录\WEB-INF

参考p245 web.xml web.xml文件中标记的具体内容及其作用 1.根标记 2.<servlet>标记及子标记 3. <servlet-mapping>标记及子标记 注:修改web.xml文件不必重新启动Tomcat服务器。

§8.3 servlet对象的创建与运行
用户可以根据 web.xml 部署文件来请求服务器创 建并运行一个servlet对象。 如果服务器没有名字为 hello 的 servlet 对象,服 务器就会根据 web.xml 文件中 <servlet> 标记的子标 记 <servlet-class> 指定的 Servlet 类创建一个名字 为hello的servet对象。 当用户请求服务器运行一个servlet对象时,必须 根据 web.xml 文件中 <servlet-mapping> 标记的子标 记<url-pattern>指定的格式输入请求。
例如: http://127.0.0.1:8080/ch8/lookHello

参考p244 Hello.java, p245 web.xml

§8.4 servlet对象的工作原理
servlet 对象由 Tomcat 服务器负责管理, Tomcat 服务器通过读取web.xml创建并运行servlet对象。 8.4.1 servlet 对象的生命周期
(1) 初始化Servlet对象。Servlet对象第一次被请求加 载 时 , 服 务 器 初 始 化 这 个 Servlet 对 象 , 即 创 建 一 个 Servlet 对象,对象调用 init() 方法完成必要的初始化工 作。 (2)诞生的Servlet对象再调用service()方法响应客户的 请求。 (3)当服务器关闭时,调用destroy()方法,消灭Servlet 对象。

8.4.2 init方法
该方法是 HttpServlet 类中的方法,我们可以在子类中重写 这个方法。init方法的声明格式:
public void init(ServletConfig config) throws ServletException

servlet 对 象 第 一 次 被 请 求 加 载 时 , 服 务 器 创 建 一 个 servlet 对象,这个对象调用 init 方法完成必要的初始化工 作。 init 方法只被调用一次,即在 servlet 第一次被请求加载 时调用该方法。

8.4.3 service方法
该方法是 HttpServlet类中的方法,我们可以在子类中直接继 承该方法或重写这个方法。service方法的声明格式:
public void service(HttpServletRequest request HttpServletResponse response) throw ServletException,IOException

当servlet对象成功创建和初始化之后,该对象就调用service方 法来处理用户的请求并返回响应。 service方法可能被多次调用。

8.4.4 destroy方法
该方法是HttpServlet类中的方法,子类可直接继承这个方法, 一般不需要重写。destroy方法的声明格式:
public destroy()

当服务器终止服务时,destroy()方法会被执行,消灭servlet对 象。

§8.5 通过JSP页面访问servlet
可以通过 JSP 页面来请求一个 servlet 。也就是 说 , 可 以 让 JSP 页 面 负 责 数 据 的 显 示 , 而 让 一 个 servlet去做和处理数据有关的事情。 8.5.1 通过表单向servlet提交数据
Web服务目录下的JSP页面都可以通过表单或超链接请求该 Web服务目录下的某个servlet。 例8-1 P249
注意 : 如果 web.xml 文件中 <servlet-mapping> 标记的子标记 <url-pattern> 指定的
请 求 servlet 的 格 式 是 “ /lookHello” , 那 么 JSP 页 面 请 求 servlet 时 , 必 须 要 写 成 “lookHello”,不可以写成“/lookHello”,否则将变成请求root服务目录下的某个 servlet。

8.5.2 通过超链接访问servlet
可以在 JSP 页面中单击一个超链接,请求一个 servlet对象。
例8-2 P251
注意 : 如果 web.xml 文件中 <servlet-mapping> 标记的子标记 <url-pattern> 指定的
请 求 servlet 的 格 式 是 “ /lookHello” , 那 么 JSP 页 面 请 求 servlet 时 , 必 须 要 写 成 “lookHello”,不可以写成“/lookHello”,否则将变成请求root服务目录下的某个 servlet。

§8.6 共享变量 Servlet 类是 HttpServlet 的一个子类, 那么在编写子类时就可以声明某些成员变量。 当用户请求加载 Servlet 时,服务器分别为 每个用户启动一个线程,在该线程中, Servlet调用service()方法响应客户请求, 那么 Servlet 类的成员变量是被所有线程共 享的数据。
例8-3 P252

§8.7 doGet和doPost方法
可以在 Servlet 类中重写 doPost() 或 doGet() 方 法来响应用户的请求,如果不论用户请求类型是 POST 还是 GET ,服务器的处理过程完全相同,那么 我们可以只在doPost()方法中编写处理过程,而在 doGet() 方法中再调用 doPost() 方法即可,或只在 doGet() 方法中编写处理过程,而在 doPost() 方法 中再调用doGet()方法。

如果根据请求的类型进行不同的处理,就需在 两个方法中编写不同的处理过程。
例8-4 P254

§8.8 重定向与转发
1. sendRedirect()方法 使 用 该 可 以 将 用 户 重 新 定 向 到 一 个 JSP 页 面 或 另 一 个 Servlet。 2. RequestDispatcher对象 使用该对象调用
void forward(ServletRequest request,ServletResponse response)

方法可以将用户对当前 JSP 页面或 Servlet 的请求转发给 RequestDispatcher 对象所指定的 JSP 页面或 Servlet 。实现 转发的步骤:
(1)得到RequestDispatcher对象 例如:
RequestDispatcher dispatcher= request.getRequestDispatcher("a.jsp");

(2)转发 例如:
dispatcher.forward (request,response);

例8-5 P257

§8.9 使用session 可以在Servlet 类中使用session 对象记录有关
连接的信息。
HttpServletRequest 对 象 request 调 用 getSession()方法获取用户的会话对象:
HttpSession session= request.getSession(true);

一个用户在不同的 Servlet 中获取的 session 对 象是完全相同的。不同的用户的session对象互不相 同。
例8-6 P259


网站首页 | 网站地图 | 学霸百科 | 新词新语
All rights reserved Powered by 学霸学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com