Blueherb In solitude, where we are least alone

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接口

  1. 主界面中创建退出超链接或按钮
  2. 创建退出Servlet,核心代码如下:
// 从 session 中删除登录用户
request.getSession().removeAttribute(“administratorre”);//session中移除用户信息
重定向跳转界面
sponse.sendRedirect("login.jsp");// 重定向到页面

3、在web.xml中配置Servlet映射请求路径

posted @ 2022-12-28 23:33  小鞠同学  阅读(104)  评论(0)    收藏  举报