目录

Tomcat&Http

大三下学期实训

目录

Tomcat&Http (web服务器-重要)

0.今日学习目标:

  • 能够理解cs架构和bs架构的区别
  • 能够安装tomcat
  • 能够启动tomcat
  • 能够在idea中集成tomcat,并访问到web项目
  • 能够知晓常见状态码及其含义

1 企业开发简介

1.1 JavaEE规范

JavaEE规范是J2EE规范的新名称,早期被称为J2EE规范,其全称是Java 2 Platform Enterprise Edition,它是由SUN公司领导、各厂家共同制定并得到广泛认可的工业标准(JCP组织成员)。之所以改名为JavaEE,目的还是让大家清楚J2EE只是Java企业应用。在2004年底中国软件技术大会Ioc微容器(也就是Jdon框架的实现原理)演讲中指出:我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件,以延续它的生命力,而不是依赖J2SE/J2EE版本.此次J2EE改名为Java EE,实际也反映出业界这种共同心声。

JavaEE规范是很多Java开发技术的总称。这些技术规范都是沿用自J2EE的。一共包括了13个技术规范。例如:jsp/servletjndijaxpjdbcjnijaxbjmfjtajpaEJB等。

其中,JCP组织的全称是Java Community Process。它是一个开放的国际组织,主要由Java开发者以及被授权者组成,职能是发展和更新。成立于1998年。官网是:JCP

JavaEE的版本是延续了J2EE的版本,但是没有继续采用其命名规则。J2EE的版本从1.0开始到1.4结束,而JavaEE版本是从JavaEE 5版本开始,目前最主流的版本是JavaEE 8

详情请参考:JavaEE8规范概览

1.2 Web概述

Web在英文中的含义是网状物,网络。在计算机领域,它通常指的是后者,即网络。像我们前面接触的WWW,它是由3个单词组成的,即:World Wide Web ,中文含义是万维网。而我们前面学的HTMLCSSJS的参考文档《W3School全套教程》中的W3C就是万维网联盟。他们的出现都是为了让我们在网络的世界中获取资源,这些资源的存放之处,我们称之为网站。我们通过输入网站的地址(即:网址),就可以访问网站中提供的资源。在网上我们能访问到的内容全是资源(不区分局域网还是广域网)。只不过,不同类型的资源展示的效果不一样。

首先,我们先来介绍资源的分类,它分为静态资源和动态资源。其中:

静态资源指的是,网站中提供给人们展示的资源是一成不变的,也就是说不同人或者在不同时间,看到的内容都是一样的。例如:我们看到的新闻,网站的使用手册,网站功能说明文档等等。而作为开发者,我们编写的html,css,js,图片,多媒体等等都可以称为静态资源。

动态资源它指的是,网站中提供给人们展示的资源是由程序产生的,在不同的时间或者用不同的人员由于身份的不同,所看到的内容是不一样的。例如:我们在12306上购买火车票,火车票的余票数由于时间的变化,会逐渐的减少,直到最后没有余票。还有,我们在CSDN上下载资料,只有登录成功后,且积分足够时才能下载。否则就不能下载,这就是访客身份和会员身份的区别。作为开发人员,我们编写的JSPservletphpASP等都是动态资源。

关于广域网和局域网的划分,广域网指的就是万维网,也就是我们说的互联网。局域网是指的是在一定范围之内可以访问的网络,出了这个范围,就不能再使用的网络。

小结:

1
2
3
4
web资源:

静态资源: html / css /js / img图片....
动态资源: jsp  、 servlet (每次请求都会经过服务器,不同的用户查看到的数据可能是不一样的)

端游 : 客户端

页游: 不用下载(浏览器)

1.3 系统结构

1.3.1 系统结构简介

在我们前面课程的学习中,开发的都是Java工程。这些工程在企业中称之为项目或者产品。项目也好,产品也罢,它是有系统架构的,系统架构的划分有很多种方式。我们今天讨论的是基础结构上的划分。除此之外,还有技术选型划分,部署方式划分等等。

==基础结构划分:C/S架构,B/S架构两类。==

技术选型划分:Model1模型,Model2模型,MVC模型和三层架构+MVC模型。

部署方式划分:一体化架构,垂直拆分架构,分布式架构,流动计算架构,微服务架构。

一体化架构是将应用各层(表示层、业务逻辑层、数据访问、应用集成逻辑)打成一个包来部署。

垂直拆分是将同样的系统按照**应用场景(调用方)**进行拆分 。比如支付模块分为商家支付和用户支付

1.3.2 C/S结构

它指的是客户端——服务器的方式。其中C代表着Client,S代表着服务器。C/S结构的系统设计图如下:

/实训/tomcat/CS结构图.jpg

1.3.3 B/S结构

它指的是浏览器——服务器的方式。其中B代表着Browser,S代表着服务器。B/S结构的系统设计图如下:

/实训/tomcat/BS结构图.jpg

1.3.4 两种结构的区别及优略

两种结构的区别

第一:硬件环境不同,C/S通常是建立在专用的网络或小范围的网络环境上(即局域网),且必须要安装客户端。而B/S是建立在广域网上的,适应范围强,通常有操作系统和浏览器就行。

第二:C/S结构比B/S结构更安全,因为用户群相对固定,对信息的保护更强。

第三:B/S结构维护升级比较简单,而C/S结构维护升级相对困难。

优略

1 C/S:是能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器。对应的优点就是客户端响应速度快。

2 B/S:总体拥有成本低、维护方便、 分布性强、开发简单,可以不用安装任何专门的软件就能 实现在任何地方进行操作,客户端零维护,系统的扩展非常容易,只要有一台能上网的电脑就能使用。

关于课程中结构的选择

我们的课程中涉及的系统结构都是是基于B/S结构。

2 Tomcat

2.1 Tomcat介绍

tomcat是一个免费的开源的 web应用服务器 的 软件!

IOE:

​ ibm – 服务器硬件

​ oracle – 数据库

​ emc — 存储

2.1.1 关于服务器

服务器的概念非常的广泛,它可以指代一台特殊的计算机(相比普通计算机运行更快、负载更高、价格更贵),也可以指代用于部署网站的应用。我们这里说的服务器,其实是web服务器,或者应用服务器。它本质就是一个软件,一个应用。作用就是发布我们的应用(工程),让用户可以通过浏览器访问我们的应用。

常见的应用服务器,请看下表:

服务器名称 说明
weblogic 实现了javaEE规范,重量级服务器,又称为javaEE容器(oracle)
websphere 实现了javaEE规范,重量级服务器。(ibm)
JBOSS 实现了JavaEE规范,重量级服务器。免费的。
==Tomcat== 实现了jsp/servlet规范,是一个==轻量级服务器,开源免费。==

2.1.2 Tomcat下载与安装

Tomcat官网下载地址

/实训/tomcat/tomcat官网.png

2.1.3 Tomcat各版本所需支持

JDK8 + tomcat9

/实训/tomcat/Tomcat各版本使用技术支持.png

2.1.4 Tomcat目录结构详解

/实训/tomcat/tomcat目录结构详解.png

小结:(记住)

/实训/tomcat/image-20201025105529130.png

2.2 Tomcat基本使用

2.2.1 Tomcat启动和停止及问题分析解决(理解)

1)启动和停止

Tomcat服务器的启动文件在二进制文件目录中:/实训/tomcat/1574762703742.png,这两个文件就是Tomcat的启动文件。

Tomcat服务器的停止文件也在二进制文件目录中:/实训/tomcat/1574762805135.png,这两个文件就是Tomcat的停止文件。

其中.bat文件是针对windows系统的运行程序,.sh文件是针对linux系统的运行程序。

2)启动问题

第一个问题:启动一闪而过

原因:没有配置JDK环境变量。

解决办法:配置上JAVA_HOME环境变量

第二个:Address already in use : JVM_Bind

/实训/tomcat/image-20201025110010847.png

原因:端口被占用

解决办法:找到占用该端口的应用

​ 进程不重要:使用cmd命令:netstat -a -o 查看pid 在任务管理器中结束占用端口的进程。

​ 进程很重要:修改自己的端口号。修改的是Tomcat目录下\conf\server.xml中的配置。

/实训/tomcat/1574768222804.png

第三个:启动产生很多异常,但能正常启动

原因:Tomcat中部署着很多项目,每次启动这些项目都会启动。而这些项目中有启动报异常的。

解决办法:

​ 能找到报异常的项目,就把它从发布目录中移除。

​ 不能确定报异常的项目,就重新解压一个新的Tomcat。

第四个:其它问题

例如:启动产生异常,但是不能正常启动。此时就需要解压一个新的Tomcat启动,来确定是系统问题,还是Tomcat的问题。

所以,此时就需要具体问题,具体分析,然后再对症解决。

如果是中文乱码: 可以改配置文件中的字符集:gbk (可以不配置)

2.2.2 IDEA集成Tomcat服务器(重要)

第一步

/实训/tomcat/IDEA配置Tomcat1.png

第二步

/实训/tomcat/IDEA配置Tomcat2.png

第三步

/实训/tomcat/IDEA配置Tomcat3.png

第四步

/实训/tomcat/IDEA配置Tomcat4.png

2.2.3 Linux系统安装Tomcat(课下了解)

第一步:下载tomcat

参考**2.1.2小节的《Tomcat下载与安装》**进入Tomcat官网,找到对应版本点击download进入下载页面,如下图:

/实训/tomcat/Linux版Tomcat.png

第二步:上传到linux

在crt上 使用 alt+p 将windows上的软件拖进去即可(root目录)

第三步:在 /usr/local 新建一个文件夹tomcat

1
mkdir /usr/local/tomcat

第四步:移动 tomcat…tar.gz 到 /usr/local/tomcat

1
mv apache-tomcat-8.5.32.tar.gz /usr/local/tomcat/

第五步:进入/usr/local/tomcat目录,解压Tomcat

1
2
cd /usr/local/tomcat
tar -xvf apache-tomcat-8.5.32.tar.gz

第六步:进入 /usr/local/tomcat/apache-tomcat-8.5.32/bin

1
cd /usr/local/tomcat/apache-tomcat-8.5.32/bin

第七步:启动tomcat

1
2
3
4
方式1:
	sh startup.sh
方式2:
	./startup.sh

**第八步:修改防火墙的规则 **

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
方式1:service iptables stop  关闭防火墙(不建议); 用到哪一个端口号就放行哪一个(80,8080,3306...)

方式2:放行8080 端口
	修改配置文件
		cd /etc/sysconfig
		vi iptables
			复制(yy , p)	
				-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
			改成
				-A INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT
		重启加载防火墙或者重启防火墙
			service iptables reload  
			或者
			service iptables restart

2.3 Tomcat发布应用-JavaWeb应用

2.3.1 JavaWeb工程概述

JavaWeb应用是一个全新的应用种类。这类应用程序指供浏览器访问的程序,通常也简称为web应用。

一个web应用由多个静态web资源和动态web资源组成,例如:html、css、js文件,jsp文件、java程序、支持jar包、工程配置文件、图片、音视频等等。

Web应用开发好后,若想供外界访问,需要把web应用所在目录交给Web服务器管理(Tomcat就是Web服务器之一),这个过程称之为虚似目录的映射。

2.3.2 JavaWeb应用目录结构详解

/实训/tomcat/1574768644245.png

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
myapp--------------应用名称
    1.html
    css/css.css
    js/demo.js
	WEB-INF--------如果有web.xml或者.class文件时,该目录必须存在,且严格区分大小写。
		   --------该目录下的资源,客户端是无法直接访问的。
           --------目录中内容如下:
        classes目录----------------web应用的class文件(加载顺序:我们的class,lib目录中的jar包,tomcat的lib目录中的jar包。优先级依次降低)
        lib目录--------------------web应用所需的jar包(tomcat的lib目录下jar为所有应用共享)
        web.xml-------------------web应用的主配置文件

2.3.3 JavaWeb应用的创建

第一步

/实训/tomcat/IDEA创建Javaweb工程.png

第二步

/实训/tomcat/image-20201025120129047.png

第三步

/实训/tomcat/创建Javaweb工程3.png

第四步

/实训/tomcat/image-20201025142645862.png

2.3.4 JavaWeb应用的部署

1)IDEA部署

第一步

/实训/tomcat/IDEA发布工程1.png

第二步

image-20201025144026745

/实训/tomcat/IDEA发布工程2.png

第三步

/实训/tomcat/IDEA发布工程3-启动服务.png

2)war包发布(暂时不用,以后使用maven)

第一步:使用jar -cvf war 包的名称  当前目录中哪些资源要打入war

/实训/tomcat/jar命令.png

/实训/tomcat/war包.png

第二步:把打好的war拷贝到tomcat的webapps目录中

/实训/tomcat/拷贝war包到webapps.png

第三步:启动服务时,tomcat会自动解压。

/实训/tomcat/启动Tomcat自动解压war包.png

tomcat的webapps目录的作用:

/实训/tomcat/image-20201025144851129.png

2.4 tomcat配置:

2.4.1 Tomcat配置虚拟目录 (目前了解)

虚拟目录的配置,支持两种方式。第一种是通过在主配置文件中添加标签实现。第二种是通过写一个独立配置文件实现。

第一种方式:在server.xml<Host>元素中加一个<Context path="" docBase=""/>元素。 ​ path:访问资源URI。URI名称可以随便起,但是必须在前面加上一个/ ​ docBase:资源所在的磁盘物理地址。 第二种方式:是写一个独立的xml文件,该文件名可以随便起。在文件内写一个<Context/>元素。 ​ 该文件要放在Tomcat目录中的conf\Catalina\localhost\目录下。 需要注意的是,在使用了独立的配置文件之后,访问资源URI就变成了/+文件的名称。而Contextpath属性就失效了。

2.4.2 Tomcat默认项配置

配置默认端口

Tomcat的默认端口是8080

http:的默认端口 80 , 80是可以省略!

配置方式如下:

1
<Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />		

配置默认应用

有两种方式配置默认应用。 第一种:把要作为默认应用的应用,名称改为ROOT。放到webapps目录中。

/实训/tomcat/默认应用1.png

第二种:写一个独立的配置文件,文件名称为ROOT.xml。 ​ 注意:ROOT必须大写。当使用了独立的ROOT.xml文件时,webappsROOT应用就不是默认应用了。

/实训/tomcat/默认应用2.png

3 HTTP协议

3.1 HTTP协议概述

3.1.1 HTTP协议概念

HTTP的全称是:Hyper Text Transfer Protocol,意为 超文本传输协议。它指的是服务器和客户端之间交互必须遵循的一问一答的规则。形容这个规则:问答机制、握手机制。

==HTTP==规范了==请求==和==响应==内容的类型和格式。

HTTP协议是由W3C组织管理和维护的。

3.1.2 HTTP协议版本

目前HTTP协议主要是1.0版本和1.1版本。这两个版本的区别主要是两个方面。

第一:HTTP1.1版本比1.0版本多了一些消息头。

第二:HTTP1.1版本和1.0版本的执行过程不一样。执行过程如下:

创建连接(TCP/IP) 创建连接(TCP/IP)
HTTP1.0 HTTP1.1
发送请求 发送请求1
得到响应 得到响应1
关闭连接 发送请求2
创建连接(TCP/IP) 得到响应2
发送请求 …….
得到响应 …….
关闭连接 连接超时或手动关闭连接

3.1.3 HTTP协议相关说明

HTTP协议概念是客户浏览器和服务器一种一问一答的规则,那么必须要有问有答,而且要先问后答。 但是我们使用<script>,<link><img>标签,没有手动发起请求,但是仍然能从服务器端拿到数据,原因就是:在浏览器遇到<script>,<link>,<img>标签时会自动发出请求。

3.2 HTTP协议组成

由HTTP协议的概念可知,它分为问和答两部分。其中问指的就是请求部分,而答指的就是响应部分。

3.2.1请求部分

请求行: 永远位于请求的第一行 请求消息头: 从第二行开始,到第一个空行结束 请求的正文: 从第一个空行后开始,到正文的结束

/实训/tomcat/请求部分-1574824553003.jpg

3.2.2 响应部分

响应行: 永远位于响应的第一行 响应消息头: 从第二行开始,到第一个空行结束 响应的正文: 从第一个空行后开始,到正文的结束

/实训/tomcat/响应部分-1574824560809.jpg

3.3.3 消息头的共性分析

消息头名称首字母大写,多个单词每个单词的首字母都大写。 多个单词用-分隔 名称和值之间用冒号加空格分隔 多个值之间用逗号加空格分隔 两个头之间用回车分隔

3.3 请求部分详解 (后面花一天讲解)

3.3.1 请求行详解

请求行:GET /myapp/2.html HTTP/1.1

内容 说明
GET 请求的方式。(还有POST)
/myapp/2.html 请求的资源。
HTTP/1.1 使用的协议,及协议的版本。

3.3.2 请求消息头详解

内容 说明
Accept 告知服务器,客户浏览器所支持的MIME类型。
Accept-Encoding 告知服务器,客户浏览器所支持的压缩编码格式。最常用的就是gzip压缩。
Accept-Language 告知服务器,客户浏览器所支持的语言。一般都是zh_CN或en_US等。
Referer 告知服务器,当前请求的来源。
只有当前请求有来源的时候,才有这个消息头。从地址栏输入的没有来源。
作用:1 投放广告 2 防盗链
Content-Type 告知服务器,请求正文的MIME类型。
Content-Length 告知服务器,请求正文的长度。
User-Agent 浏览器相关信息
Connection: Keep-Alive 连接的状态:保持连接
If-Modified-Since 告知服务器,客户浏览器缓存文件的最后修改时间。
Cookie(********) 会话管理相关,非常的重要。

3.3.3 请求正文详解

第一:只有post请求方式,才有请求的正文。get方式的正文是在地址栏中的。 第二:表单的输入域有name属性的才会被提交。不分get和post的请求方式。 第三:表单的enctype属性取值决定了请求正文的体现形式。概述的含义是:请求正文的MIME编码类型。

enctype取值 请求正文体现形式 示例
application/x-www-form-urlencoded key=value&key=value username=test&password=1234
multipart/form-data 此时变成了多部分表单数据。多部分是靠分隔符分隔的。 —————————–7df23a16c0210
Content-Disposition: form-data; name=“username”

test
—————————–7df23a16c0210
Content-Disposition: form-data; name=“password”

1234
—————————–7df23a16c0210
Content-Disposition: form-data; name=“headfile”; filename=“C:\Users\zhy\Desktop\请求部分.jpg”
Content-Type: image/pjpeg
—————————–7df23a16c0210

3.4 响应部分详解

3.4.1 响应行详解

响应行:HTTP/1.1 200 OK

内容 说明
HTTP/1.1 使用协议的版本。
200 响应状态码
OK 状态码描述

常用状态码介绍:

状态码 说明
200 一切都OK
302/307 请求重定向(客户端行为,两次请求,地址栏发生改变)
304 请求资源未发生变化,使用缓存
404 请求资源未找到
500 服务器错误

3.4.2 响应消息头详解

Location 请求重定向的地址,常与302,307配合使用。
消息头 说明
Server 服务器相关信息。
Content-Type 告知客户浏览器,响应正文的MIME类型。application/json text/html
Content-Length 告知客户浏览器,响应正文的长度。
Content-Encoding 告知客户浏览器,响应正文使用的压缩编码格式。常用的gzip压缩。
Content-Language 告知客户浏览器,响应正文的语言。zh_CN或en_US等等。
Content-Disposition 告知客户浏览器,以下载的方式打开响应正文。
Refresh 定时刷新
Last-Modified 服务器资源的最后修改时间。
Set-Cookie(*******) 会话管理相关,非常的重要
Expires:-1 服务器资源到客户浏览器后的缓存时间
Catch-Control: no-catch 不要缓存,//针对http协议1.1版本
Pragma:no-catch 不要缓存,//针对http协议1.0版本

3.4.3 响应正文详解

就和我们在浏览器上右键查看源文件看到的内容是一样的。

1
2
3
4
5
6
7
8
9
<html>
    <head>
        <link rel="stylesheet" href="css.css" type="text/css">
        <script type="text/javascript" src="demo.js"></script>
    </head>
    <body>
        <img src="1.jpg" />
    </body>
</html>

小结:(记忆)

1. 请求分成几部分:

  					1. 请求行 ---- get  www.baidu.com   http/1.1
  					2. 请求头  ---- 很多信息(后面具体使用,展开讲解)
  					3. 请求空行  ----- 什么都没有(空白)
  					4. 请求体   ----- (get没有请求体, post有请求体)

响应分成几部分:

​ 同上,4部分

2. get和post的区别:

a. 请求的参数位置:

b. 请求的参数的容量是否有限制:

c. 是否有请求体:

d. 安全性:

3. 响应状态码:

200: 成功

302: 重定向

304: 资源有缓存;

404: 资源未找到(请求路径有误)

500: 服务器内部错误(java代码有误)

4 综合案例-Tomcat的具体应用

4.1 静态资源案例-门户类网站的部署和访问

4.1.1 案例介绍

需求:

​ 在浏览器中输入地址,访问静态HTML页面。

细节说明:

​ 把HTMLCSS课程中制作的页面加入到JavaWeb工程中,在Tomcat中部署工程,然后启动Tomcat服务器,并使用浏览器访问。

4.1.2 实现步骤

第一步:创建工程并选择使用的Tomcat版本

/实训/tomcat/静态资源工程1.png

/实训/tomcat/静态资源工程2.png

第二步:拷贝资源到工程的web目录中

/实训/tomcat/静态资源工程3.png

第三步:在web.xml中配置默认主页

/实训/tomcat/静态资源工程4.png

第四步:部署工程到Tomcat服务器

/实训/tomcat/静态资源工程5.png

第五步:测试浏览器访问

/实训/tomcat/静态资源工程6.png

/实训/tomcat/静态资源工程7.png


4.2 动态资源的案例-学生管理系统的部署和访问

4.2.1 案例介绍

需求:

​ 把JavaSE进阶阶段的学生管理系统的服务器改用Tomcat实现。

细节说明:

​ 把学生管理系统涉及的HTML和样式以及图片文件拷贝到JavaWeb工程中,在Tomcat中部署工程,然后启动Tomcat服务器,并使用浏览器访问。

4.2.2 实现步骤

第一步:创建工程

/实训/tomcat/动态资源工程.png

/实训/tomcat/动态资源工程1.png

第二步:拷贝资源

/实训/tomcat/动态资源工程2.png

第三步:配置默认主页

/实训/tomcat/动态资源工程4.png

第四步:部署项目

/实训/tomcat/动态资源工程3.png

注意细节:

注意在idea中的tomcat的配置中添加虚拟访问路径: /crm

4.3.2 创建案例中的动态资源-Servlet

1) Servlet简介

Servlet翻译成中文是服务端脚本,它是SUN公司推出的一套规范,称为Servlet规范。Servlet规范是JavaEE规范中的一部分。我们可以通过查阅JavaEE规范的API来了解Servlet的基本概念。通过点击JavaEE8官方文档,就可以看到关于Servlet的内容介绍。

servlet是 运行在客户端和服务器端的一个小程序!

JDK只定义接口规范,并没有实现;

具体的实现在服务器tomcat中!

/实训/tomcat/image-20210623092633117.png

2) 按步骤编写Servlet

前期准备:在IDEA创建Javaweb工程

/实训/tomcat/前期准备.png

第一步:编写一个普通类实现Servlet接口或者继承GenericServlet类或者继承HttpServlet

/实训/tomcat/编写Servlet.png

第二步:重写service方法,输出一句话

/实训/tomcat/重写Service方法.png

第三步:在web.xml配置Servlet

/实训/tomcat/配置Servlet.png

第四步:启动tomcat服务器测试

在地址栏输入:http://localhost:8585/crm/studentServlet 测试访问结果

3)测试访问

/实训/tomcat/测试访问结果.png

小结:

1. servlet的实现步骤:

/实训/tomcat/image-20201026103052174.png

2.servlet的执行顺序

注意: 两种配置以后使用一种即可 (自己选择)

方式1:注解形式:

image-20201026104504241

方式2:web.xml形式:

image-20201026104426028

【今日总结:】

0.web模块说明及tomcat配置:

/实训/tomcat/image-20201025183917439.png

1. 请求分成几部分:

  					1. 请求行 ---- get  www.baidu.com   
  					2. 请求头  ---- 很多信息(后面具体使用,展开讲解)
  					3. 请求空行  ----- 什么都没有(空白)
  					4. 请求体   ----- (get没有请求体, post有请求体)

响应分成几部分:

​ 同上,4部分

2. get和post的区别:

  1. 参数的位置不同
  2. 是否有请求体
  3. 相对安全性
  4. 参数的长度: (post参数可以传递更多)

3. 响应状态码:

200 代表成功

302 重定向

304 代表浏览器缓存(此请求没有真正访问资源)

404 请求路径有误(资源访问不到)

500 后台服务器内部错误(java程序有异常)

【今日作业安排】

  1. 完成tomcat的安装(能正常启动,并访问看到tomcat猫)
  2. 能够说清楚tomcat解压文件夹下的常用的5个分别是什么?
  3. 能够将idea集成tomcat;
  4. 写下常见的响应状态码,及其含义;
  5. 能够部署静态页面项目 (参考4.1)
  6. 尝试完成补充的登录案例;
  7. ==预习servlet==

/实训/tomcat/image-20210316183215261.png

【补充】

1.实现不重启tomcat,修改页面立即生效

image-20201025151811338

2.index的特殊含义:

1
2
3
在web项目中, index名字是有特殊含义的(代表首页)
访问到包含有index名的网页时, 不用补全路径的!
优先级 .html > .jsp

3.在案例1的基础上,实现登录功能:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**
 *   servlet快速入门:
 *          1. 实现servlet接口;
 *          2. 重写方法;
 *          3. 配置servlet
 *                  xml配置:
 *                  注解配置:  @WebServlet("/userServlet")
 *
 *
 *    用户登录的servlet:
 *          1.可以在service方法中,接收用户提交的用户名和密码;
 *          2.判断用户名和密码是否正确;
 *          3.如果正确,提示登录成功,
 *              如果不正确,提示登录失败;
 */

@WebServlet("/userLoginServlet")
public class UserLoginServlet implements Servlet{


    /**
        1.service方法何时执行?
            --- 每次访问servlet时,service方法都会执行!

        2.service方法中如何获取请求的参数?
            --- request.getparameter("参数名")

     */
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        // 0.指定字符集,防止乱码:
        response.setContentType("text/html;charset=utf-8");

        System.out.println("----------------------servlet的service方法执行了 ......");
        // 1.获取请求的参数:
        //获取用户名:
        String username = request.getParameter("username");
        //获取密码:
        String password = request.getParameter("password");

        System.out.println("------------用户提交的用户名为:" +username);
        System.out.println("------------用户提交的密码为:" + password);

        // 2.判断用户名和密码是否正确;   --------以后可以去数据库查询用户名和密码是否正确! (目前写死)
        if ("lisi".equals(username) && "123456".equals(password)){
            //登录成功
            System.out.println("-----------登录成功~~~");

            // 3.1 成功:
            response.getWriter().write("欢迎"+username+", 登录成功! ");

        }else {
            // 登录失败
            System.out.println("-----------登录失败~~~");
            // 3.2 失败:
            response.getWriter().write("您的用户名密码有误,请重新输入!");
        }

    }
  
  ccleaner


//    ==========其他4个方法,明天详细讲解=============================
// ...
}