servlet技术简介

合集下载

jsp+servlet+jdbc实现对数据库的增删改查

jsp+servlet+jdbc实现对数据库的增删改查

jsp+servlet+jdbc实现对数据库的增删改查⼀、JSP和Servlet的简单介绍1、Servlet和JSP简介:Java开发Web应⽤程序时⽤到的技术主要有两种,即Servlet和JSP,Servlet是在服务器端执⾏的Java程序,⼀个被称为Servlet容器的程序(其实就是服务器)负责执⾏Java程序,⽽JSP(Java Server Page)则是⼀个页⾯,由JSP容器负责执⾏.2、Servlet和JSP的区别:Servlet以Java程序为主,输出HTML代码时需要使⽤out.println函数,也就是说Java中内嵌HTML;⽽JSP则以HTML页⾯为主,需要写Java代码时则在页⾯中直接插⼊Java代码,即HTML中内嵌Java.3、MVC模型MVC模型就是将数据、逻辑处理、⽤户界⾯分离的⼀种⽅法1)、M(Model, 模型):⽤于数据处理、逻辑处理2)、V(View,视图):⽤于显⽰⽤户界⾯3)、C(Controller,控制器):根据客户端的请求控制逻辑⾛向和画⾯⽽在Java中,MVC这三个部分则分别对应于 JavaBeans、JSP和Servlet1)、M = JavaBeans:⽤于传递数据,拥有与数据相关的逻辑处理2)、V = JSP:从Model接收数据并⽣成HTML3)、C = Servlet:接收HTTP请求并控制Model和View4、jdbc连接,可参考⽂章:⼆、代码演⽰,实现了book的添加删除和修改功能1、环境的配置myeclipse+tomcat+MySQL2、Book中bean类package example.bean.book;public class Book {// 编号private int id;// 图书名称private String name;// 价格private double price;// 数量private int bookCount;// 作者private String author;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public double getPrice() {return price;}public void setPrice(double price) {this.price = price;}public int getBookCount() {return bookCount;}public void setBookCount(int bookCount) {this.bookCount = bookCount;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}}3、Servlet类1)、FindServlet.javapackage example.servlet.book;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import example.bean.book.Book;/*** Servlet implementation class FindServlet*/public class FindServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse* response)*/protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {try {// 加载数据库驱动,注册到驱动管理器Class.forName("com.mysql.jdbc.Driver");// 数据库连接字符串String url = "jdbc:mysql://localhost:3306/db_book?useUnicode=true&characterEncoding=utf-8"; // 数据库⽤户名String username = "root";// 数据库密码String password = "";// 创建Connection连接Connection conn = DriverManager.getConnection(url, username,password);// 添加图书信息的SQL语句String sql = "select * from tb_books";// 获取StatementStatement statement = conn.createStatement();ResultSet resultSet = statement.executeQuery(sql);List<Book> list = new ArrayList<Book>();while (resultSet.next()) {Book book = new Book();book.setId(resultSet.getInt("id"));book.setName(resultSet.getString("name"));book.setPrice(resultSet.getDouble("price"));book.setBookCount(resultSet.getInt("bookCount"));book.setAuthor(resultSet.getString("author"));list.add(book);}request.setAttribute("list", list);resultSet.close();statement.close();conn.close();} catch (Exception e) {e.printStackTrace();}request.getRequestDispatcher("book_list.jsp").forward(request, response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse* response)*/protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}2)、UpdateServlet.java类package example.servlet.book;import java.io.IOException;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/*** Servlet implementation class UpdateServlet*/public class UpdateServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse* response)*/protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {int id = Integer.valueOf(request.getParameter("id"));int bookCount = Integer.valueOf(request.getParameter("bookCount"));try {// 加载数据库驱动,注册到驱动管理器Class.forName("com.mysql.jdbc.Driver");// 数据库连接字符串String url = "jdbc:mysql://localhost:3306/db_book";// 数据库⽤户名String username = "root";// 数据库密码String password = "";// 创建Connection连接Connection conn = DriverManager.getConnection(url, username,password);// 更新SQL语句String sql = "update tb_books set bookcount=? where id=?";// 获取PreparedStatementPreparedStatement ps = conn.prepareStatement(sql);// 对SQL语句中的第⼀个参数赋值ps.setInt(1, bookCount);// 对SQL语句中的第⼆个参数赋值ps.setInt(2, id);// 执⾏更新操作ps.executeUpdate();// 关闭PreparedStatementps.close();// 关闭Connectionconn.close();e.printStackTrace();}// 重定向到FindServletresponse.sendRedirect("FindServlet");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse* response)*/protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubdoGet(request, response);}}3)、DeleteServlet类package example.servlet.book;import java.io.IOException;import java.sql.Connection;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import example.dao.book.BookJdbcDao;import example.dao.book.ConnectionFactory;/*** Servlet implementation class DeleteServlet*/public class DeleteServlet extends HttpServlet {private static final long serialVersionUID = 1L;/*** @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse* response)*/protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {int id = Integer.valueOf(request.getParameter("id"));try {// // 加载数据库驱动,注册到驱动管理器// Class.forName("com.mysql.jdbc.Driver");// // 数据库连接字符串// String url = "jdbc:mysql://localhost:3306/db_book";// // 数据库⽤户名// String username = "root";// // 数据库密码// String password = "";// // 创建Connection连接// Connection conn = DriverManager.getConnection(url, username,// password);// // 删除图书信息的SQL语句// String sql = "delete from tb_books where id=?";// // 获取PreparedStatement// PreparedStatement ps = conn.prepareStatement(sql);// // 对SQL语句中的第⼀个占位符赋值// ps.setInt(1, id);// // 执⾏更新操作// ps.executeUpdate();// // 关闭PreparedStatement// ps.close();// // 关闭Connection// conn.close();BookJdbcDao bookDao=new BookJdbcDao();Connection conn=ConnectionFactory.getInstance().getConnection();bookDao.delete(conn,id);} catch (Exception e) {e.printStackTrace();}// 重定向到FindServletresponse.sendRedirect("FindServlet");}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse* response)*/protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}4、servlet访问url映射配置:由于客户端是通过URL地址访问web服务器中的资源,所以Servlet程序若想被外界访问,必须把servlet程序映射到⼀个URL地址上,这个⼯作在web.xml⽂件中使⽤<servlet>元素和<servlet-mapping>元素完成,<servlet>元素⽤于注册Servlet,它包含有两个主要的⼦元素:<servlet-name>和<servlet-class>,分别⽤于设置Servlet的注册名称和Servlet的完整类名。

java web笔记

java web笔记

java web笔记JavaWeb是一种基于Java语言开发的Web应用程序开发技术,其主要模块包括Servlet、JSP、JavaBean以及Java EE(Enterprise Edition)等。

1. ServletServlet是一种Java程序,用于处理HTTP请求和响应。

它可以接收来自客户端的HTTP请求并生成HTTP响应。

Servlet实现了javax.servlet.Servlet接口,可以在Web容器中运行。

Servlet可以通过doGet()、doPost()等方法处理HTTP请求,通过request对象获取请求参数,通过response对象生成响应内容。

Servlet还可以通过init()方法进行初始化,通过destroy()方法进行终止。

2. JSPJSP是Java Server Pages的缩写,它是一种基于HTML和Java 的Web开发技术。

JSP可以将Java代码嵌入到HTML页面中,以便动态生成Web页面。

JSP页面可以使用JavaBean来处理业务逻辑,在JSP中使用标签库可以简化开发,如JSTL标签库、EL表达式等。

3. JavaBeanJavaBean是一种Java类,它封装了应用程序中的数据和业务逻辑。

JavaBean通常包含get/set方法,可以通过这些方法访问和修改JavaBean中的属性。

JavaBean的作用是将数据和业务逻辑分离,使得应用程序具有更高的可维护性和可重用性。

4. Java EEJava EE是Java平台的企业版,它提供了一系列API和规范,用于开发大型分布式Web应用程序。

Java EE包含了Servlet、JSP、JavaBean等技术,还提供了EJB(Enterprise Java Bean)、JPA(Java Persistence API)、JMS(Java Message Service)等高级技术。

Java EE还包含了Web容器和应用服务器,如Tomcat、WebLogic、WebSphere等,这些容器可以运行Java Web程序,提供了对Java Web 程序的支持和管理。

servlet的基本运行流程

servlet的基本运行流程

Servlet的基本运行流程Servlet是Java Web中的一种技术,能够处理来自客户端的请求并生成响应。

它是在Web服务器上运行的Java类,可以与容器进行交互。

下面将详细描述Servlet的基本运行流程的步骤和流程。

1. Servlet的生命周期Servlet的生命周期包括以下三个阶段: - 初始化阶段(Initialization) - 服务阶段(Service) - 销毁阶段(Destroy)1.1 初始化阶段在Servlet类被加载到容器中时,(通常在Web应用程序启动时),容器会实例化Servlet对象,并调用其init()方法来进行初始化。

该方法只会在Servlet生命周期中被调用一次。

1.2 服务阶段一旦Servlet被初始化后,在其生命周期内,任何对Servlet的请求都会被容器处理。

当接收到一个客户端请求时,容器会创建一个新的线程,并调用Servlet的service()方法来处理该请求。

service()方法会根据请求的类型(GET、POST等)来调用相应的方法(如doGet()、doPost()等)进行处理。

1.3 销毁阶段当Web应用程序被关闭或Servlet容器被关闭时,容器会调用Servlet的destroy()方法来清除资源、释放内存和进行最后的操作,以完成Servlet的销毁过程。

2. Servlet运行流程Servlet的运行流程包括以下几个步骤:2.1 客户端发送请求当客户端(如浏览器)向Web服务器发送一个HTTP请求时,请求首先会到达Web容器。

2.2 容器寻找匹配的ServletWeb容器根据请求的URL来确定匹配的Servlet。

容器会维护一个Servlet映射表,将URL与对应的Servlet进行关联。

2.3 容器创建或获取Servlet实例如果Servlet实例不存在,则容器会创建一个新的Servlet实例,并调用其init()方法来进行初始化。

黑马程序员_javaweb讲义和笔记资料

黑马程序员_javaweb讲义和笔记资料

黑马程序员_javaweb讲义和笔记资料一、简介黑马程序员是一家专业的IT培训机构,提供全面的编程技术培训服务。

javaweb是其中的一门重要课程,本文为黑马程序员_javaweb讲义和笔记的资料整理。

二、javaweb基础知识1. Java语言概述Java语言的特点和优势,Java开发环境的搭建等。

2. Servlet技术Servlet的基本概念、生命周期、Servlet容器等。

3. JSP技术JSP的基本语法、JSP指令、JSP内置对象等。

4. MVC设计模式MVC设计模式在javaweb开发中的应用和实践。

三、javaweb开发流程1. 需求分析分析项目需求,明确开发目标和功能要求。

2. 数据库设计设计数据库表结构,确定数据存储方式和关系。

3. 技术选型根据项目需求和开发要求,选择合适的技术框架和工具。

4. 编码实现使用Java语言和相关技术进行编码实现。

5. 测试调试运行和调试项目,确保功能的正确性和稳定性。

6. 部署上线将项目部署到服务器上线,提供给用户访问和使用。

四、javaweb开发常用框架和工具1. Spring框架Spring框架的介绍和核心特性,以及在javaweb开发中的应用。

2. SpringMVC框架SpringMVC框架的详细讲解,包括请求映射、数据绑定、视图解析等。

3. MyBatis框架MyBatis框架的使用方法和技巧,以及与数据库的集成。

4. Maven工具Maven的基本使用和配置,常用插件介绍。

五、javaweb开发中的常见问题和解决方案1. 数据库连接异常分析数据库连接异常的原因和解决方法。

2. 页面跳转问题页面跳转的实现方式和常见错误排查。

3. 表单数据验证表单数据验证的常用技术和插件,提高数据输入的准确性和安全性。

4. 性能优化优化javaweb应用的性能,减少响应时间和资源占用。

六、实例项目提供一个实例项目,通过对该项目的讲解和分析,帮助学员理解和掌握javaweb开发的方法和技巧。

JSP与Servlet开发技术与典型应用教程完整版课件全套ppt教程最新

JSP与Servlet开发技术与典型应用教程完整版课件全套ppt教程最新
基于某(基于法律方面的原因,将客户名称隐去)生产性企业的实际情况,通过 企业调研、项目可行性分析等一系列过程,开发出一套生产性企业招聘管理系统, 以期实现该企业员工招聘、培训管理规范化、透明化目标。
1.2 需求分析
❖1.2.1 基本框架
该生产性企业招聘管理系统主要分成三个模块:人员招聘管理模块、人员培 训管理模块、岗位管理模块。
JSP与Servlet开发技术与典型应用教程
大连理工大学出版社
第2章 Java Web应用概述
❖ 2.1C/S和B/S体系结构
▪ 2.1.1 C/S模式 ▪ 2.1.2 B/S模式 ▪ 2.1.3 C/S模式与B/S模式对比 ▪ 2.1.4 客户端脚本与服务器脚本
❖ 2.2动态网页技术
▪ 12.2.1 ASP编程技术 ▪ 12.2.2 编程技术 ▪ 12.2.3 PHP编程技术 ▪ 12.2.4 Java Web编程技术
❖ 3.4JSP与Servlet
▪ 3.4.1 Java Web应用程序介绍 ▪ 3.4.2 JSP与Servlet的关系
第3章 JSP与Servlet
教学要求
1.掌握:JDK、Tomcat和Myeclipse安装与配置、Tomcat的管理程序 2.理解:JSP与Servlet的关系、Servlet运行机制、JSP运行机制 3.了解:Tomcat的体系结构、Servlet的基本结构
大连理工大学出版社
第3章 JSP与Servlet
❖ 3.1环境安装与配置
▪ 3.1.1 JDK的安装与配置 ▪ 3.1.2 Tomcat的安装与配置 ▪ 3.1.3 Tomcat的体系结构 ▪ 3.1.4 Tomcat的管理程序 ▪ 3.1.5 MyEclipse的安装与配置

说明 servlet 的三种访问方式

说明 servlet 的三种访问方式

说明 servlet 的三种访问方式Servlet是Java中用于处理Web请求的一种技术。

它可以接收来自客户端的请求,并根据请求做出相应的处理和响应。

在Servlet中,有三种主要的访问方式,即通过URL映射、通过注解和通过web.xml配置文件。

下面将分别介绍这三种访问方式的具体内容。

一、URL映射方式URL映射方式是最常见和最基本的Servlet访问方式之一。

通过URL 映射,可以将Servlet与特定的URL地址关联起来,当客户端请求该URL时,Servlet就会被调用并处理请求。

URL映射方式可以通过在web.xml配置文件中进行设置。

在web.xml文件中,可以使用<servlet>和<servlet-mapping>标签来配置Servlet的URL映射。

首先,需要配置<servlet>标签,其中包含Servlet的名称和类路径。

然后,通过<servlet-mapping>标签来指定Servlet的URL映射关系,即将Servlet的名称与URL地址进行关联。

例如,可以将一个名为HelloServlet的Servlet映射到"/hello"的URL上。

当客户端请求"/hello"时,Servlet容器会找到对应的HelloServlet并调用它的service方法来处理请求。

二、注解方式注解方式是一种相对简单和方便的Servlet访问方式。

通过在Servlet类上添加特定的注解,可以指定Servlet的URL映射关系,从而实现访问。

注解方式可以减少配置文件的使用,使得开发更加便捷。

在Servlet类上添加注解时,需要使用@WebServlet注解,并指定urlPatterns属性来设置URL映射关系。

例如,可以使用@WebServlet(urlPatterns = "/hello")将一个名为HelloServlet 的Servlet映射到"/hello"的URL上。

简述 servlet 的概念和技术特点。

简述 servlet 的概念和技术特点。

简述servlet 的概念和技术特点。

解析:
servlet 的概念:Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态内容。

Servlet 技术具有如下特点:
1.方便:Servlet 提供了大量的实用工具例程,如处理很难完成的HTML 表
单数据、读取和设置HTTP 头,以及处理Cookie 和跟踪会话等。

2.跨平台:Servlet 使用Java 类编写,可以在不同的操作系统平台和不同的
应用服务器平台运行。

3.灵活性和可扩展性强:采用Servlet 开发的Web 应用程序,由于Java类
的继承性及构造函数等特点,使得应用灵活,可随意扩展。

课程管理系统设计毕业论文

课程管理系统设计毕业论文

课程管理系统设计毕业论文目录第一章引言 (1)1.1 Java语言简介 (1)1.2 Java 语言在网络上的应用 (1)1.3 JSP 技术简介 (1)1.4 Servlet技术简介 (2)1.5 JavaBean技术简介 (3)1.6 Tomcat 简介 (4)第二章系统需求分析 (4)2.1 设计目标 (4)2.2 功能简介 (5)2.3 运行环境 (6)2.4 性能需求 (6)2.5 数据需求 (7)第三章系统概要设计 (7)3.1 系统开发环境及工具 (7)3.2 系统体系结构设计 (8)3.3 系统功能划分 (9)第四章系统数据库设计 (10)4.1数据库的需求分析 (10)4.2 数据库的逻辑设计 (10)4.2.1 实体与属性之间的关系 (10)4.2.2 数据库的E-R图 (11)4.3 数据库的物理结构 (11)4.3.1 班级信息表 (11)4.3.2 课程信息表 (11)4.3.3 学生信息表 (11)4.3.4 教师信息表 (12)4.3.5 管理员信息表 (12)4.3.6 选课信息表 (12)4.4 数据库的完整性和安全性 (12)4.4.1 数据库的完整性 (12)4.4.2 数据库的安全性 (12)第五章功能模块设计 (13)5.1 用户登录模块 (13)5.2 学生功能模块 (13)5.2.1 选修课程 (13)5.2.2 查看成绩 (13)5.2.3 更改信息 (13)5.2.4 下载资料 (13)5.3 教师功能模块 (14)5.3.1 挑选学生 (14)5.3.2 查看学生信息 (14)5.3.3 公布成绩 (14)5.3.4 上传资料 (14)5.4 管理员功能模块 (15)5.4.1 学生信息管理 (15)5.4.2 教师信息管理 (15)5.4.3 课程管理 (15)5.4.4 班级管理 (15)第六章系统测试分析 (16)6.1 系统测试目的和原则 (17)6.2 JSP中文乱码问题 (17)6.3 测试环境 (17)6.4 功能测试 (18)6.5 测试结果 (18)第七章绪论 (18)致谢 (18)参考文献 (19)第一章引言1.1 Java语言简介Java语言是当今流行的网络编程语言,它的面向对象、跨平台、分布应用等特点给编程人员带来了一种崭新的概念,使WWW从最初的单纯提供静态信息发展到现在的能够提供各种的动态服务。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

servlet技术简介1.Servlet 是什么?Servlet是使用Java Servlet 应用程序设计接口(API)及相关类和方法的Java 程序。

除了 Java Servlet API,Servlet 还可以使用用以扩展和添加到 API 的 Java 类软件包。

Servlet 在启用 Java 的 Web 服务器上或应用服务器上运行并扩展了该服务器的能力。

Java servlet对于Web服务器就好象Java applet 对于Web浏览器。

Servlet装入Web服务器并在Web服务器内执行,而applet装入Web浏览器并在Web浏览器内执行。

Java Servlet API 定义了一个servlet 和Java使能的服务器之间的一个标准接口,这使得Servlets具有跨服务器平台的特性。

Servlet 通过创建一个框架来扩展服务器的能力,以提供在 Web 上进行请求和响应服务。

当客户机发送请求至服务器时,服务器可以将请求信息发送给Servlet,并让 Servlet 建立起服务器返回给客户机的响应。

当启动 Web 服务器或客户机第一次请求服务时,可以自动装入 Servlet。

装入后, Servlet 继续运行直到其它客户机发出请求。

Servlet 的功能涉及范围很广。

例如,Servlet 可完成如下功能:(1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML页面。

(2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面(HTML 片段)。

(3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。

(4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。

例如,Servlet 可以是多参与者的游戏服务器。

(5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至applet的新连接,并将该连接保持在打开状态。

当允许客户机和服务器简单、高效地执行会话的情况下,applet也可以启动客户浏览器和服务器之间的连接。

可以通过定制协议或标准(如 IIOP)进行通信。

(6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括(SSI)。

(7) 将定制的处理提供给所有服务器的标准例行程序。

例如,Servlet 可以修改如何认证用户。

2.Servlet 的生命周期Servlet 的生命周期始于将它装入 Web 服务器的内存时,并在终止或重新装入 Servlet 时结束。

(1) 初始化在下列时刻装入 Servlet:如果已配置自动装入选项,则在启动服务器时自动装入在服务器启动后,客户机首次向 Servlet 发出请求时重新装入 Servlet 时装入 Servlet 后,服务器创建一个 Servlet 实例并且调用 Servlet 的 init() 方法。

在初始化阶段,Servlet 初始化参数被传递给Servlet 配置对象。

(2) 请求处理对于到达服务器的客户机请求,服务器创建特定于请求的一个“请求”对象和一个“响应”对象。

服务器调用 Servlet 的 service() 方法,该方法用于传递“请求”和“响应”对象。

service() 方法从“请求”对象获得请求信息、处理该请求并用“响应”对象的方法以将响应传回客户机。

service() 方法可以调用其它方法来处理请求,例如 doGet()、doPost() 或其它的方法。

(3) 终止当服务器不再需要 Servlet, 或重新装入 Servlet 的新实例时,服务器会调用 Servlet 的 destroy() 方法。

3. Java Servlet APIJava Servlet 开发工具(JSDK)提供了多个软件包,在编写 Servlet 时需要用到这些软件包。

其中包括两个用于所有 Servlet 的基本软件包:javax.servlet 和 javax.servlet.http。

可从sun公司的Web站点下载 Java Servlet 开发工具。

下面主要介绍javax.servlet.http提供的HTTP Servlet 应用编程接口。

HTTP Servlet 使用一个 HTML 表格来发送和接收数据。

要创建一个 HTTP Servlet,请扩展 HttpServlet 类,该类是用专门的方法来处理 HTML 表格的GenericServlet 的一个子类。

HTML 表单是由 <FORM> 和 </FORM> 标记定义的。

表单中典型地包含输入字段(如文本输入字段、复选框、单选按钮和选择列表)和用于提交数据的按钮。

当提交信息时,它们还指定服务器应执行哪一个Servlet(或其它的程序)。

HttpServlet 类包含 init()、destroy()、service() 等方法。

其中 init() 和 destroy() 方法是继承的。

(1) init() 方法在 Servlet 的生命期中,仅执行一次 init() 方法。

它是在服务器装入Servlet 时执行的。

可以配置服务器,以在启动服务器或客户机首次访问Servlet 时装入 Servlet。

无论有多少客户机访问 Servlet,都不会重复执行init() 。

缺省的 init() 方法通常是符合要求的,但也可以用定制 init() 方法来覆盖它,典型的是管理服务器端资源。

例如,可能编写一个定制 init() 来只用于一次装入 GIF 图像,改进 Servlet 返回 GIF 图像和含有多个客户机请求的性能。

另一个示例是初始化数据库连接。

缺省的 init() 方法设置了 Servlet 的初始化参数,并用它的 ServletConfig 对象参数来启动配置,因此所有覆盖init() 方法的 Servlet 应调用 super.init() 以确保仍然执行这些任务。

在调用 service() 方法之前,应确保已完成了 init() 方法。

(2) service() 方法service() 方法是 Servlet 的核心。

每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。

在 HttpServlet 中已存在 service() 方法。

缺省的服务功能是调用与 HTTP 请求的方法相应的 do 功能。

例如,如果 HTTP 请求方法为 GET,则缺省情况下就调用 doGet() 。

Servlet 应该为 Servlet 支持的 HTTP 方法覆盖 do 功能。

因为 HttpServlet.service() 方法会检查请求方法是否调用了适当的处理方法,不必要覆盖 service() 方法。

只需覆盖相应的 do 方法就可以了。

当一个客户通过HTML 表单发出一个HTTP POST请求时,doPost()方法被调用。

与POST请求相关的参数作为一个单独的HTTP 请求从浏览器发送到服务器。

当需要修改服务器端的数据时,应该使用doPost()方法。

当一个客户通过HTML 表单发出一个HTTP GET请求或直接请求一个URL时,doGet()方法被调用。

与GET请求相关的参数添加到URL的后面,并与这个请求一起发送。

当不会修改服务器端的数据时,应该使用doGet()方法。

Servlet的响应可以是下列几种类型:一个输出流,浏览器根据它的内容类型(如text/HTML)进行解释。

一个HTTP错误响应, 重定向到另一个URL、servlet、JSP。

(3) destroy() 方法destroy() 方法仅执行一次,即在服务器停止且卸装Servlet 时执行该方法。

典型的,将 Servlet 作为服务器进程的一部分来关闭。

缺省的 destroy() 方法通常是符合要求的,但也可以覆盖它,典型的是管理服务器端资源。

例如,如果 Servlet 在运行时会累计统计数据,则可以编写一个 destroy() 方法,该方法用于在未装入 Servlet 时将统计数字保存在文件中。

另一个示例是关闭数据库连接。

当服务器卸装 Servlet 时,将在所有 service() 方法调用完成后,或在指定的时间间隔过后调用 destroy() 方法。

一个Servlet 在运行service() 方法时可能会产生其它的线程,因此请确认在调用 destroy() 方法时,这些线程已终止或完成。

(4) GetServletConfig()方法GetServletConfig()方法返回一个 ServletConfig 对象,该对象用来返回初始化参数和ServletContext。

ServletContext 接口提供有关servlet 的环境信息。

(5) GetServletInfo()方法GetServletInfo()方法是一个可选的方法,它提供有关servlet 的信息,如作者、版本、版权。

当服务器调用sevlet 的Service()、doGet()和doPost()这三个方法时,均需要“请求”和“响应”对象作为参数。

“请求”对象提供有关请求的信息,而“响应”对象提供了一个将响应信息返回给浏览器的一个通信途径。

javax.servlet 软件包中的相关类为ServletResponse和ServletRequest,而javax.servlet.http 软件包中的相关类为HttpServletRequest 和HttpServletResponse。

Servlet 通过这些对象与服务器通信并最终与客户机通信。

Servlet 能通过调用“请求”对象的方法获知客户机环境,服务器环境的信息和所有由客户机提供的信息。

Servlet 可以调用“响应”对象的方法发送响应,该响应是准备发回客户机的。

4.2 创建HTTP Servlet创建一个 HTTP Servlet,通常涉及下列四个步骤:1. 扩展 HttpServlet 抽象类。

2. 重载适当的方法。

]如覆盖(或称为重写)doGet() 或doPost()方法。

3. 如果有 HTTP 请求信息的话,获取该信息。

用 HttpServletRequest 对象来检索 HTML 表格所提交的数据或 URL 上的查询字符串。

“请求”对象含有特定的方法以检索客户机提供的信息,有3个可用的方法:getParameterNames(),getParameter(),getParameterValues()。

4. 生成 HTTP 响应。

HttpServletResponse 对象生成响应,并将它返回到发出请求的客户机上。

相关文档
最新文档