Javaweb笔记
1.1Web 应用程序
1.1.1 Web 应用程序概述
随着Internet和网络应用程序的发展,其开发体系结构主要分为两种
基于客户端 / 服务器端的 C/S 体系结构

基于浏览器 / 服务器的 B/S 体系结构

B/S结构优势:
B/S 体系结构相对于 C/S 体系结构而言具有更多的优势,目前大量的应用程序开始转移到应用 B/S 体系结构,其主要优势在于以下几点
- 安装维护升级方便,仅部署服务器
- 对客户机配置要求不高,满足服务器配置即可
- 访问范围更广
1.1.2 Web 应用程序的工作原理
Web 应用程序大致可以分为两种,即静态网站和动态网站
- 静态网站采用Html语言编写,放置于 Web 服务器上,用户通过浏览器直接请求解析显示
- 缺点:内容固定不变,改变显示必须修改html代码
- 静态网站
静态网站采用html语言编写,放置于Web服务器上,用户通过浏览器直接请求解析显示。
静态网站主要是使用前端开发语言(html、css、javascript)开发的网站,不涉及到和数据库交换数据。

- 动态网站
动态网站指在html静态页面中嵌入Java、C#、Php等脚本代码,将编写后的页面放入Web服务器,由服务器编译转换为最终html返回给客户端。
动态网站就是运用前端开发语言(html、css、javascript)和后端开发语言(Java、C#、php)共同开发的网站,前端开发语言主要用于页面设计、后端开发语言主要用后端逻辑判断,需要涉及到数据库的数据交换。

1.2 HTTP协议
1.2.1 URL简介
URL 是 UniformResource Locator 的缩写,表示统一资源定位器,它是专为标识网络上的资源位置而设定的一种编码地址方式,即俗称:网址
URL组成:应用层协议、主机 IP 地址或域名、协议端口号、资源路径 / 文件名 应用层协议 😕/ 主机 IP 地址或域名、协议端口号 / 资源所在路径 / 文件名 http://www.oracle.com:80/hk/index.htm

浏览网页时输入的域名最终会转换为IP地址
由于 80 端口是 HTTP 协议默认的端口号,所以在访问网络地址时可以省略该端口号
1.2.2 HTTP 协议概述
**HTTP:超级文本传输协议(Hypertext Transfer Protocol)**是关于如何在网络上传输超级文本及HTML 文档的协议(规范)
- Web 浏览器按照 HTTP 协议的规定向 Web 服务器发送请求信息,Web 服务器接收到浏览器的请求后,再按照 HTTP 协议的要求将结果发送给 Web 浏览器解析显示
1.2.3 HTTP 处理流程
一次完整的请求响应过程分为以下几个步骤:
- 客户端发送 HTTP 请求和 Web 服务器建立连接
- 服务器端接受客户端的请求,生成 HTTP 响应并发送给客户端
- 服务器端关闭连接。客户端浏览器接收服务器端的响应,浏览器显示页面
服务器端关闭连接后,不再存储连接信息,所以 HTTP 协议被称为无状态协议。
1.2.4 HTTP请求方式
HTTP 请求可以使用多种请求方式,常用方式包括以下两种:
- GET 请求方式(超链接、表单默认都是get请求)
- POST 请求方式
GET和POST请求区别如下: - GET只能传递文本,POST可以传递任意数据(包括音频、视频等,上传文件必须POST)
- GET 请求方式提交的数据会暴露在地址栏,不安全,POST更加安全
- GET 请求方式提交的数据不能超过 2KB,POST 请求方式无此限制
- GET请求效率高于POST
1.3 Tomcat 简介
1.3.1 Web 容器概述
不同的动态网页需要不同的Web服务器支持才能正常工作,其职责如下:
- Web服务器负责接收用户的请求
- 将动态网页进行编译,转换为可执行文件
- 将生成的静态html响应给客户端
1.3.2 Tomcat 概述
- JavaWeb应用有多种Web服务器选择,其中Tomcat是众多主流服务器之一
- Tomcat 是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目。Tomcat 技术先进、性能稳定,而且免费,已经成为目前学习开发 Java Web 应用的首选。
1.3.3 Tomcat 下载
下载地址: https://tomcat.apache.org/
安装Tomcat之前,需要先安装JDK且配置环境变量,否则无法安装Tomcat
1.3.4 Tomcat 安装
确保 JDK 安装配置成功后,启动 Tomcat 的安装程序进行安装:
- 选择 JRE 的安装路径(未安装JDK该步骤不能通过)
- 安装过程中需要配置服务器的端口号和密码
- 设置 Tomcat 端口号
Tomcat默认使用8080端口号
1.3.5 Tomcat 目录
Tomcat各目录说明如下:
| 目录名 | 作用 |
|---|---|
| bin | 所有的可执行命令,启动和关闭服务器的命令就在此文件夹中 |
| conf | 服务器的配置文件夹,其中保存了多个配置信息 |
| lib | Tomcat 服务器所需要的各个库文件 |
| logs | 保存服务器的系统日志 |
| webapps | Web 应用程序存放的目录,Web 项目保存到此目录中即可发布 |
| work | 存放由各种 JSP 生成的 servlet 文件 |
| temp | 保存临时文件 |
1.4 使用 Eclipse 开发 JavaWeb 应用程序
host代表主机名或IP地址,localhost代表本机,或127.0.0.1
port为软件端口号,如未修改则为8080
project是部署的项目名称
page是访问的资源页面名称
2.1 JSP 简介
2.1.1 JSP 概述
Java Server Page 简称 JSP,是由 Sun 公司倡导建立的一种动态网页技术标准,用于开发动态网页
JSP就是将传统Java代码嵌入到Html页面代码中,由Web服务器进行编译执行,生成最终的静态Html返回客户端
JSP优点:
- 跨平台
- 安全
- 扩展性
- 伸缩性强
- 可重用性

2.1.3 JSP 处理流程
浏览器无法直接运行JSP文件,只有将包含JSP文件的Web项目部署到Web服务器上,才能看到JSP的显示效果
当客户端浏览器向服务器发出请求访问一个JSP页面后,服务器根据该请求加载相应的JSP 页面,并对该页面进行转换、编译和执行

2.2 JSP 指令标识
2.2.1 JSP指令
JSP 页面就是带有 JSP 元素的常规 Web 页面,它由静态内容和动态内容构成
其中动态内容包括以下几种:
- 指令标识
- 脚本标识
- 注释标识
2.2.2 指令标识
指令标识主要用于设定在整个 JSP 页面范围内都有效的相关设置信息,它是被服务器解释并执行的,不会产生任何内容输出到网页中
<%@ 指令名 属性 1=“属性值 1” 属性 2=“属性值 2”...%>
(1)指令名:用于指定指令名称,在 JSP 中包含 page、include 和 taglib 3 个指令。
(2)属性:用于指定属性名称,不同的指令包含不同的属性。在一个指令中,可以设置多个属性,属性之间用逗号或空格隔开。
(3)属性值:用户指定属性值。
<%@page language=“java” contentType=“text/html” charset=“UTF-8” pageEncoding=“UTF-8”%>
language 属性。该属性用于设置 JSP 页面使用的语言,该属性的默认值为 Java
import 属性。该属性用于设置 JSP 导入的类包。在 JSP 页面中导入类包的代码片段,如 <%@page import=“java.util.*”%>
pageEncoding 属性。用于设置 JSP 页面的编码格式,即指定页面编码,支持中文一般设置为GBK或UTF-8
contentType 属性。该属性用于设置 JSP 页面的 MIME 类型和字符编码,浏览器会根据 contentType 中指定的 MIME 类型和字符集编码来显示 JSP 输出的内容,常见MIME格式如下
| MIME | 作用 |
|---|---|
| application/msword | Word 文档 |
| application/pdf | PDF文档 |
| audio/x-wav | Wav 格式的音频文件 |
| text/html | HTML 格式 |
| text/plain | 普通文档 |
| image/jpeg | JPEG 格式 |
2.2.3 include 指令
include 指令可以在一个 JSP 页面中包含另一个页面,常用于多页面共同的部分抽离出来(如顶部导航、底部版权等),使用时直接引用,以提升开发维护效率
格式:
<%@include file=“包含文件路径”%>
2.2.4 taglib指令
在 JSP 文件中,可以通过 taglib 指令声明该页面中所使用的标签库,同时引用标签库,并指定标签前缀,在页面中引用标签库后,就可以通过前缀引用标签库中的标签
<%@taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
2.3 JSP 脚本标识
2.3.1 声明标识
声明标识用于在 JSP 页面中定义全局的变量或方法,通常使用该标识定义整个 JSP 页面需要引用的变量或方法
语法:
<%! 声明变量或方法代码 %>
注意:<% 与 ! 之间不可以有空格,但是 ! 与其后的代码之间可以有空格。
<%! 与 %> 可以不在同一行。
2.3.2 JSP 表达式
JSP 表达式用于向页面中输出信息,类似于System.out.println()括号中的内容
语法:
<%= 表达式或者变量名 %>
注意:①<% 与 =号之间不允许有空格,其后面只要符合输出语句中语法即可②最后不要加;号
2.3.3 Scriptlet 脚本程序
Scriptlet(代码片段)脚本程序,是在 JSP 页面中嵌入的 Java 代码或脚本代码
- 代码片段将在页面请求的处理期间被执行,通过 Java 代码可以定义变量或流程控制语句等
代码片段将在页面请求的处理期间被执行,通过 Java 代码可以定义变量或流程控制语句等
2.4 注释标识
2.4.1 JSP 注释
1、JSP 标准注释
<%-- JSP标准注释 --%>
JSP标准注释在客户端浏览器无法查看到
2、Java 注释
<%
//Java单行注释
/*
Java多行注释
*/
%>
Java注释在客户端浏览器中也无法看到
3、HTML 注释
<!-- HTML网页注释 -->
HTML网页注释在客户端浏览器可以看到
3.1 JSP 内置对象简介
3.1.1 JSP 内置对象概述

3.1.2 JSP 表单处理
- 网页中表单是用户填写信息并提交的组件,JSP中如何获取用户填写提交的数据
- JSP 引擎会将客户端的请求信息封装在这个 request 对象中,调用request 对象相应的方法就可以获取对应的封装信息
3.1.2 request对象
request对象中封装的主要请求信息有以下几项:
- 请求的 HTTP 协议的传送文件头信息
- 提交请求的客户端和服务器端信息
- 用户提交的表单信息
| 返回值 | 方法名 | 说明 |
|---|---|---|
| String | getParameter(“表单元素name”) | 根据参数name获取对应值(name即表单元素的name属性) |
| String[] | getParameterValues(“表单元素name”) | 获取多个name相同的多个值,复选框使用较多 |
request对象在获取数据的时候,中文有时会出现乱码,解决方法如下:
针对post请求中文:String name = request.setCharacterEncoding("utf-8"); //设置获取值的编码
针对get请求中文:String name = new String(request.getParameter("name").getBytes("iso-8859-1"), "utf-8");
3.2 输入和输出对象
3.2.1 out 对象
out 对象主要用于向客户端输出各种数据类型的内容,默认缓冲区8K,可以通过page指令设置
out 对象被封装为 javax.servlet.jsp.JspWriter 类,在实际应用中 out 对象会通过 JSP 容器变换为 java.io.PrintWriter 类,常用方法如下:
| 方法名 | 作用 |
|---|---|
| void print( 数据) | 输出数据到页面 |
| void flush() | 强制输出缓冲区里的数据 |
| void close() | 关闭输出流 |
| void clearBuffer() | 清空缓冲区 |
| void clear() | 清除屏幕显示数据 |
3.2.2 response对象
response 对象用于响应客户请求,封装了 JSP 产生的响应,并发送到客户端以响应客户端的请求
response对象常用功能如下:
- 处理 HTTP 文件头
- 页面重定向
//重定向到百度页面
response.sendRedirect("http://www.baidu.com");
客户端在进行请求时会发送许多额外的信息,这些就是头信息。服务器端也可以根据需要向客户端设置头信息,如设置每秒刷新一次页面,显示当前时间
刷新
//每秒刷新一次
response.setHeader("refresh", "1");
3.3 作用域通信对象
3.3.1 为什么需要session对象

3.3.1 session对象
-
session在JSP中被称为会话,目的是保存不同用户在web程序多个页面之间跳转时的数据信息,直到浏览器关闭,每个客户端会对应同一个session对象
-
服务器不知道客户端何时关闭浏览器,为了节省内存开销,默认超时时间为30分钟,即30分钟用户没有再次发出请求,则session自动销毁,超时时间可以在Tomcat配置文件中修改
session对象方法
session对象可以存储用户相关的数据信息,且在同会话作用于多个界面有效 -
session对象存储数据方法
-
注意:要存入的数据可以是任意类型,名称必须是字符串类型
session对象取出数据方法 -
Object object = session.getAttribute(“存入时的名称”);
-
注意:取出数据时是Object类型,如需要可以转为需要类型
session对象移除数据方法如下 -
session.removeAttribute(“存入时的名称”);
3.3.2 application对象
application 对象用于保存应用中的公有数据,服务器启动自动创建 application 对象,只要没有关闭服务器,application 对象将一直存在,所有用户可以共享
session对象和用户会话相关,不同用户的session是完全不同的对象,而 application 对象对于所有用户都是同一个的对象,所以application 对象的生命周期更长
application 对象常用于记录缓存项目中的全局数据,常用方法如下
| 方法名 | 作用 |
|---|---|
| void setAttribute(String name,Object value) | 键、值对形式存入数据到application |
| Object getAttribute(String name) | 根据键名称取出数 |
| void removeAttribute(String name) | 根据键名称移除数据 |
| String getRealPath(String path) | 获取当前项目的真实路径 |
3.3.2 JSP 表达式
服务器范围内一直有效(只要不关闭服务器,关闭浏览器之后依然可以读取数据),所有用户共享应用程序对象。
3.3.3 pageContext对象
pageContext页面上下文对象可以获取其他作用域对象,并提供方法用于访问内建对象在页面上定义的所有属性,从而保持同一页面组件之间的数据共享
pageContext常用方法如下:
| 方法名 | 作用 |
|---|---|
| ServletConfig getServletConfig() | 获取ServletConfig配置对象 |
| void setAttribute(String name,Object value) | 以键值对形式存放数据到pageContext中 |
| Object getAttribute(String name) | 从pageContext中根据键名称取出数据 |
| void removeAttribute(String name) | 从pageContext中移除数据 |
| ServletRequest getRequest() | 获取ServletConfig配置对象 |
| ServletResponse getResponse() | 获取response对象 |
| HttpSession getSession() | 获取session对象 |
3.4 其他内置对象
3.4.1 exception对象
exception对象用来表示 JSP 文件执行时发生的所有错误和异常
JSP页面的page 指令中设置 isErrorPage 属性为 true才可以使用,否则无法编译
exception 对象的常用方法如下
| 方法名 | 方法名 |
|---|---|
| getMessage( ) | 返回异常的信息 |
| getLocalizedMessage( ) | 返回本地化的异常错误 |
| toString( ) | 返回关于异常错误的简单信息描述 |
| fillInStackTrace( ) | 重写异常错误的执行轨迹 |
4.1 JavaBean
4.1.1 JavaBean 概述
JavaBean 是使用 Java 编写的组件,每一个 JavaBean 均实现一个特定的功能。
JavaBean 通过对属性和方法的封装,成为具有独立功能、可重复使用并且可与其他控件通信的组件对象,具有以下优点
- 重用性强
- 模块化
- 可维护性、扩展性强
4.1.2 JavaBean的重要性
在一个复杂的Web应用中把特定的功能封装成JavaBean能有效提高代码重用性和后期维护性
JavaBean 通过封装一些具体的动作来实现一个特定的功能,即对外提供最小限度的属性接口,供用户操作和控制,但用户不知道它内部的具体运行机制,从而提高了安全性
4.1.3 JavaBean的特点
通常JavaBean都具有如下几个特点:
提供一个public无参构造方法,以方便创建对象和赋予初值
public class People {
private String name; // 定义姓名
private String sex; // 定义性别
public People(){
name="jack"; // 为特性的属性设置默认值
sex="M";
}
// 此处省略 getter() 方法和 setter() 方法
}
import java.io.Serializable;
// 实现接口
public class People implements Serializable { //该接口中未定义任何内容,所以仅仅起标识作用
......
}
在 JavaBean 组件中要为所有标识特性的属性提供对应的 get() 方法和 set() 方法,以便为组件用户提供操作和控制组件的接口
public class People implements Serializable {
private String name; // 定义姓名 属性声明private私有 提供public公共get、set访问接口
public People(){
}
//get() 方法与 set() 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
4.1.4 JavaBean的属性
JavaBean 的属性可以是任意类型,并且一个 JavaBean 可以有多个属性。每个属性通常都需要具有相应的setter()修改器方法、getter()访问读取器方法
getter、setter方法命名规则如下:
- 属性名:name getter
- 读取:getName()
- setter修改:setName()
4.1.5 快速生成JavaBean
有参构造方法虽然不是 JavaBean 必须的,但为了使实例化 JavaBean 组件更加方便,建议提供有参构造方法,但是无参构造方法需要显示提供
通过 Eclipse 快速生成JavaBean中的构造方法:
Source
4.2 JavaBean 的分类
4.2.1 封装数据的 JavaBean
封装数据的 JavaBean 通常就是表达一个完整的实体信息,适用于以下两种情况:
在方法中对一个完整实体VO(值对象)信息进行传递(可以提高方法的可维护性与可扩展性)
public boolean addPeople(People people){}
作为某些集合数据中的单个元素实体(集合中存储的实体VO对象信息,代表集合中的单个数据项)
List<People> peopleList=new ArrayList<People>();
People people=new People();
peopleList.add(people);
4.2.2 封装业务的 JavaBean
封装业务方法的 JavaBean 通常不需要 get()、set() 方法,只要根据业务需求定义相应的业务方法即可,比如针对数据操作的增删改查可以定义对应方法
public class PeopleService{
// 增加 People
public boolean add(People people) { }
// 通过 id 更新一个 People
public boolean update(People newPeople){ }
// 通过 id 删除一个 People
public boolean del(int id) { }
// 根据 id 得到一个 People
public People get(int id){ }
// 得到所有的 People
public List<People> getAll(){ }
}
4.3 JSP 标准动作简介(一)
4.3.1 标准动作概述
JSP中有两种方法可以创建并使用JavaBean。一种是使用Java脚本代码实现,另一种是通过JSP标准动作实现
JSP标准动作更好的配合Html规范,以标签的方式来操作和使用JavaBean,有效的避免了JSP中出现大量的Java脚本代码,保持了界面风格统一

4.3.2 < jsp:useBean >
jsp:useBean用于在JSP页面中创建一个JavaBean对象,并且通过属性的设置将该实例存储到 JSP 指定的范围内。如果在指定的范围内已经存在指定的 Bean 实例,则直接使用此实例,而不再创建新的 Bean 实例
语法:
<jsp:useBean id="BeanName" class="package.className"
scope="page|session|application|request"/>
- id 属性:指定一个变量名
- class 属性:指定一个完整的类名,其中 package 表示包名,className 表示类名
- scope 属性:指定所创建的 Bean 实例的存储范围,默认为“page”范围
| 名称 | 作用域 |
|---|---|
| page | 当前Jsp页面范围 |
| request | request请求范围,如转发的下一个界面 |
| session | session会话范围有效 |
| application | application整个应用程序范围 |
4.3.3 < jsp:setProperty >
jsp:setProperty 动作用于设置 useBean 中指定 Bean 的属性值
语法:
<jsp:setProperty name="BeanAlias“ property="propertyName"
value=“value“ param=“请求参数名”/>
- name 属性:指定 jsp:useBean 中使用的 Bean 的 ID。
- property 属性:指定要设置的 Bean 的属性名称。
- value 属性:指定要为属性设置的显示值。
- param 属性:自动从请求中获取对应参数值放入对象中
param属性不能和value同时使用
4.4 JSP 标准动作简介(二)
4.4.1 < jsp:forward >
forward 动作用于将用户的请求转发到一个 HTML 文件、JSP 页面或 Servlet 中。
语法:
<jsp:forward page=“跳转的目标url"/>
注意:forward 标准动作相当于转发而不是重定向。
target.jsp 是转发后的界面
4.4.2 < jsp:include >
jsp:include可以将另外一个页面嵌入到当前页面中
url 属性:指定目标资源。
flush 属性:这里必须使用 flush="true",不能使用 false 值,默认值为 false。
5.1 Servlet 技术介绍
5.1.1 为什么需要Servlet
JSP是JavaWeb应用中处理和显示动态网页的技术,而前面JSP页面中出现了大量逻辑处理、甚至数据库访问的JDBC脚本代码,这使得JSP页面显得混乱、不易维护,职责不清晰。
J SP是建立在静态Html基础之上,使得数据显示时具有动态特点,所以JSP的职责就是显示数据,而不是逻辑处理
Servlet的出现很好的规避了这一点,将复杂的逻辑处理、请求响应交给Servlet处理,JSP则只负责渲染显示页面
5.1.1 Servlet 简介
Java Servlet 又称作 Java 服务器小程序,运行在服务端,主要用于Web应用中的请求响应,逻辑处理功能,让JSP更专注于数据展示
JSP虽然看起来像网页,但实际上当访问JSP时,JSP 文件首先会被转换成一个 Java 文件,而这个 Java 文件就是 Servlet 类
Jsp页面被转换的Java类
5.1.2 Java Web 处理流程
Java Web 应用程序的处理过程,实际上是一个不断请求与响应的过程。其流程如下:
- 客户端发送请求至 Web 服务器
- Web 服务器接收请求并进行处理
- Web 服务器将响应结果返回给客户端,并展现用户界面
5.1.3 Servlet 开发
创建Servlet的步骤1,创建Servlet类:
- 手动创建Java类继承HttpServlet,在web.xml配置该Servlet的页面请求路径
- 使用Eclipse快速创建Servlet类,更为方便快捷。
创建Servlet的步骤2,处理GET、POST请求:
- 在Servlet中重写并修改 doGet和 doPost两个方法分别对应GET和POST请求
- 一般处理代码只用完成一个如doPost,另外一个doGet中直接调用doPost即可
5.1.4 Servlet 配置
创建Servlet的步骤3,配置界面请求路径映射:
Servlet是一个Java类,无法直接被界面直接请求到,需要在项目web.xml配置请求路径
配置servlet请求访问路径
<servlet-mapping>
<servlet-name>FirstServlet</servlet-name>//对应Servlet名称
<url-pattern>/first</url-pattern>//请求路径
</servlet-mapping>
启动服务器,浏览器输入:http://localhost:8080/项目名/first
5.2 Servlet 流程
5.2.1 Servlet 运行原理
当 Tomcat 服务器接收到一个 HTTP 请求时,服务器执行具体步骤如下:
用户在浏览器地址栏中输入请求URL地址:http://localhost:8080/java_web_0501/first
Tomcat 服务器根据请求获取 URL 中最后需要访问的资源,即“/first”
Tomcat 服务器根据获取的“/first”与 web.xml 文件中配置的请求映射匹配,找到对应的Servlet类
找到之后服务器实例化Servlet
执行Servlet对应的请求处理方法,如doPost,完成给用户响应
注意:如果没有匹配到对应路径,则界面会出现404异常
5.2.2 Servlet 生命周期
Servlet 生命周期是由 Servlet 的容器来控制的,Servlet 生命周期分为 4 个阶段
第一阶段:加载并实例化
Servlet 容器负责加载和实例化
Servelt,在服务器启动或第一次请求时执行
如果需要服务器启动时加载,则需在servlet配置时加入 <loadon-startup>1</loadon-startup>,数值越小优先级越高
加载后该Servlet实例将常驻内存
第二阶段:初始化
在 Servlet 实例化之后,容器将调用 init() 方法,并传递实现 ServletConfig 接口的对象,在 Servlet 的整个生命周期内,init()方法只被调用一次
一般根据需要是否添加init方法,如果Servlet需要初始化一些数据,可以在该方法中完成代码
第三阶段:请求处理
当容器收到对这一 Servlet 的请求,就调用 Servlet 的service() 方法,并把请求和响应对象作为参数传递,service() 方法检查 HTTP 请求类型(GET、POST等),并在适当的时候调用 doGet()、doPost() 等方法
每次请求都会调用对应的doGet或doPost方法
第四阶段:销毁
一旦 Web服务器停止服务,Servlet会自动执行其 destroy() 方法,以释放资源
5.2.3 Servlet 常用方法
任何一个 Servlet 对象都要直接或间接地实现 javax.servlet.Servlet 接口
创建 Servlet 时,都继承 javax.servlet.HttpServlet 类,而它又继承GenericServlet类, GenericServlet类实现了Servlet接口,所以拥有一系列父类定义的方法,如下
| 方法名 | 作用 |
|---|---|
| init | 在 Servlet 生命周期中的初始化方法,仅执行一次 init() 方法 |
| service | service() 方法主要功能是区分不同的请求类型,然后调用对应的方法 |
| doGet | 对应的get请求处理方法 |
| doPost | 对应的post请求处理方法 |
| destroy | 服务器停止时执行销毁方法 |
5.3 HttpServletRequest 对象
5.3.1 Servlet 的层次结构
在Servlet处理请求时候,ServletAPI 提供了标准的接口与类,利用这些接口和类可以帮助我们编写请求逻辑处理,其结构如下

HttpServlet继承了GenericServlet
5.3.2 HttpServletRequest 接口
HttpServletRequest 接口代表客户端的请求,它包含了客户端提交过来的请求数据,常用方法如下
| 名称 | 作用 |
|---|---|
| String getParameter(String name) | 获取页面提交指定名称的参数值 |
| String[] getParameterValues(String name) | 获取页面提交相同名称参数的数组值 |
| Enumeration getParameterNames( ) | 获取请求中所有参数名的Enumeration |
| Map getParameterMap( ) | 返回保存了请求的所有参数名和值的Map 对象 |
| 返回保存了请求的所有参数名和值的Map 对象 | 向 request 范围内存储数据,键值对形式 |
| Object getAttribute(String name) | 从request范围取出键对应的数据 |
| Cookie[] getCookies( ) | 获取request中所有的Cookie,返回数组 |
| String getMethod( ) | 获取请求类型,如GET、POST |
| String getRequestURI( ) | 返回主机名到请求参数之间的路径 |
| StringBuffer getRequestURL() | 获取请求的StringBuffer类型 URL |
| String getContextPath() | 获取当前web项目根路径 |
| String getServletPath() | 获取请求 URI 中的 Servlet 路径的字符串 |
| String getRealPath(String path) | 获取当前 Web 项目的实际物理路径 |
| String getSchema() | 获取当前请求所使用的协议 |
| String getServerName() | 获取当前请求的服务器名称 |
| int getServerPort() | 获取当前请求的服务器端口 |
| HttpSession getSession() | 获取当前会话的HttpSession 对象 |
| getRequestDispatcher() | 获取转发对象,进而可以调用转发对象的forward方法转发到下一个界面 |
5.4 HttpServletResponse 对象
5.4 HttpServletResponse 对象
HttpServletResponse 接口代表向客户端发送的响应,利用response可以向客户 端响应信息或跳转界面
HttpServletResponse常用方法如下:
| 方法名 | 作用 |
|---|---|
| public PrintWriter getWriter() | 获取响应的打印输出流对象 |
| public void addCookie() | 向响应中添加 cookie 对象 |
| public void setCharacterEncoding(String enc) | 设置响应的编码 |
| public void sendRedirect(String path) | 将请求重定向到指定位置 |
HttpServletResponse接口
- 主界面中创建退出超链接或按钮
- 创建退出Servlet,核心代码如下:
// 从 session 中删除登录用户
request.getSession().removeAttribute(“administratorre”);//session中移除用户信息
重定向跳转界面
sponse.sendRedirect("login.jsp");// 重定向到页面
3、在web.xml中配置Servlet映射请求路径

浙公网安备 33010602011771号