第10章 Servlet


教学要求

(1) 熟练掌握:JDK、Eclipse jee的下载安装和使用
(2) 熟练掌握:Jsp的语法
(3) 理解Jsp的内置对象和用途

延伸阅读


10.1 初识Servlet


10.1.1 servlet及其用途

Servlet、JSP规范、JDK版本 Apache官方对各版本的解释
Servlet规范 JSP规范 EL规范 WebSocket规范 JASPIC规范 Tomcat版本 Actual版本 JDK版本
4.0 TBD (2.4?) TBD (3.1?) TBD (1.2?) 1.1 9.0.x 9.0.0.M11 (alpha) 8 and later
3.1 2.3 3.0 1.1 1.1 8.5.x 8.5.6 7 and later
3.1 2.3 3.0 1.1 N/A 8.0.x (superseded) 8.0.38 (superseded) 7 and later
3.0 2.2 2.2 1.1 N/A 7.0.x 7.0.72 6 and later
(7 and later for WebSocket)
2.5 2.1 2.1 N/A N/A 6.0.x 6.0.47 5 and later
2.4 2.0 N/A N/A N/A 5.5.x (archived) 5.5.36 (archived) 1.4 and later
2.3 1.2 N/A N/A N/A 4.1.x (archived) 4.1.40 (archived) 1.3 and later
2.2 1.1 N/A N/A N/A 3.3.x (archived) 3.3.2 (archived) 1.1 and later

相对于之前的版本,Servlet3.0中的Servlet有以下改进:(1) 支持注解配置。(2) 支持异步调用。(3) 直接有对文件上传的支持。

过滤器链
图1 servlet版本与tomcat版本匹配

【例1】录入商品信息

(1) 创建[录入商品信息]页面:WebContent\ch10_sl\AddCommodity_000.html

(2) 在src创建cn.dzj.ch10.servlet包,创建[录入商品信息]的servlet类AddCommodify_000.java

录入商品信息(AddCommodity_000.html)


图2 servlet创建过程

servlet实现过程

Servlet容器响应Web客户请求的时序图

图3 Servlet容器响应Web客户请求的时序图

10.1.2 Servlet生命周期

【例2】 Servlet生命周期测试

(1) 创建的servlet类:cn.dzj.ch10.servlet\LifeCycleServlet_000.java

(2) 创建[Servlet生命周期测试]页面:WebContent\ch10_sl\LifeCycleServlet_000.html

停止tomcat服务器,重启tomcat服务器,在控制台查看提示。

Servlet生命周期测试LifeCycleServlet_000.html

图4 Servlet生命周期

10.1.3 servlet api编程常用接口和类

tomcat源代码下载地址:http://tomcat.apache.org/download-80.cgi Source Code Distributions zip(pgp, md5, sha1) 如apache-tomcat-8.5.8-src.zip

图5 servlet api编程常用接口和类之间关系

(1) Servlet接口

(2) ServletRequest接口

(3) ServletResponset接口

(4) GenericServlet抽象类

(5) HttpServlet抽象类

(6) HttpServletRequest接口

(7) HttpServletResponse接口

(8) ServletConfig接口

servlet.java模板(扩展了HttpServlet的java类)

servlet配置

页面请求

10.1.4 servlet技术特点与jsp的区别

10.2. servlet开发

10.2.1 servlet创建

10.2.2 jsp+javabean+servlet+jdbc的【学生管理系统】应用

【例3】 jsp+javabean+servlet+jdbc的【学生管理系统】应用

(1) 使用src下cn.dzj.ch09.bean包JavaBean类Student_000.java。

(2) 使用src下cn.dzj.ch08包数据库连接公用模块:DBConnection_000.java,使用ch06创建的数据库、表、视图和数据。

(3) 使用src下cn.dzj.ch09.dao包数据访问接口:StudentsDao_000.java

(4) 使用src下cn.dzj.ch09.dao.impl包实现上述接口的操作类:StudentDaoImpl_000.java

(5) 使用src下cn.dzj.ch09.factory包dao工厂类:DaoFactory_000.java

(6) 在src下cn.dzj.ch10.servlet包,创建学生列表servlet类:ListAllStudents_000.java

(7) 创建[显示所有学生信息]页面:WebContent\ch10_du\Student_list_000.jsp

jsp+javabean+servlet+jdbc的【学生管理系统】应用 listStudents

(8) 创建[添加学生信息]页面:WebContent\ch10_du\StudentAdd_000.html

(9) 在src下cn.dzj.ch10.servlet包,创建[添加学生]的servlet类AddStudent_000.java

(10) 创建[更新学生信息]页面:WebContent\ch10_du\StudentUpdateForm_000.jsp

(11) 在src下cn.dzj.ch10.servlet包,创建[添加学生]的servlet类UpdateStudent_000.java

(12) 在src下cn.dzj.ch10.servlet包,创建[删除学生]的servlet类DeleteStudent_000.java

10.2.3 Servlet 3.0 文件上传

【例4】 Servlet 3.0 文件上传演示

(1) 创建[Servlet 3.0 文件上传演示]页面:WebContent\ch10_du\UploadFile_000.html

(2) 创建的servlet类:cn.dzj.ch10.servlet\UploadServlet_000.java

Servlet 3.0 文件上传演示 UploadFile.html

工作空间\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\dujw\WEB-INF\uploadFile下看上传文件。

10.3 servlet 3.0新特性

10.3.1 新增注入

10.3.2 对文件上传的支持

10.3.3 异步处理

10.4 习题


1.填空题(概念、知识点----------讲义中醒目的关键字)

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8) 
   对于如下的一些映射关系:
            Servlet1 映射到 /abc/* 
            Servlet2 映射到 /* 
            Servlet3 映射到 /abc 
            Servlet4 映射到 *.do 
        问题:
            当请求URL为“/abc/a.html”,“/abc/*”和“/*”都匹配,哪个servlet响应
              答:Servlet引擎将调用Servlet1。
            当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,哪个servlet响应
              答: Servlet引擎将调用Servlet3。
            当请求URL为“/abc/a.do”时,“/abc/*”和“*.do”都匹配,哪个servlet响应
             答: Servlet引擎将调用Servlet1。
            当请求URL为“/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应
              答: Servlet引擎将调用Servlet2。
            当请求URL为“/xxx/yyy/a.do”时,“/*”和“*.do”都匹配,哪个servlet响应
              答: Servlet引擎将调用Servlet2。【 即:/*  的优先级 高于  *.do  】
              

2.操作题

(1)

(2)

(3)

(4)

3.编程题

【习题3.1】jsp+javabean+servlet+jdbc的【图书管理系统】应用

(1) 创建的有关图书的表、视图和数据。

(2) 使用src下cn.dzj.ch08包数据库连接公用模块:DBConnection_000.java,使用ch06创建的数据库、表、视图和数据。

(3) 使用src下cn.dzj.ch09.bean包JavaBean类Book_000.java。

(4) 使用src下cn.dzj.ch09.dao包数据访问接口:BookDao_000.java

(5) 使用src下cn.dzj.ch09.dao.impl包实现上述接口的操作类:BookDaoImpl_000.java

(6) 使用src下cn.dzj.ch09.factory包dao工厂类:DaoFactory_000.java

(7) 在src下cn.dzj.ch10.servlet包,创建图书列表servlet类:ListAllBooks_000.java

(8) 创建[显示所有图书信息]页面:WebContent\ch10_du\BooksAllList_000.jsp

【习题1】 jsp+javabean+servlet+jdbc的【图书管理系统】应用 listStudents

(9) 创建[添加图书信息]页面:WebContent\ch10_du\BookAdd_000.html

(10) 在src下cn.dzj.ch10.servlet包,创建[添加图书]的servlet类AddBook_000.java

(11) 创建[更新图书信息]页面:WebContent\ch10_du\BookUpdateForm_000.jsp

(12) 在src下cn.dzj.ch10.servlet包,创建[添加图书]的servlet类UpdateBook_000.java

(13) 在src下cn.dzj.ch10.servlet包,创建[删除图书]的servlet类DeleteBook_000.java

【习题3.2】jsp+javabean+servlet+jdbc编写【员工管理系统】应用

【例7 】字符编码过滤器(添加图书)

(1) 在src下cn.dzj.ch10.filter包,创建CharactorFilter.java。

(2) 在src下创建ch10.com.du.servlet包,创建AddServlet.java。

(3) 修改WebContent/WEB-INF/web.xml,在web-app中添加下列配置

(4) 在WebContent/jw_du/ch10_du/3下,创建index.jsp

【例3 】字符编码过滤器(添加图书)

本章参考文献



返回目录