tomcat&servlet入门(上)

1,662 阅读17分钟

tomcat&servlet入门

内容介绍

image.png

第一章 web相关知识概述【了解】

1、WEB简介

Web(World Wide Web)即全球广域网,也称为万维网。它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。

简而言之就是我们平时上网浏览的网页,玩的网页游戏,上网下载资源。对于程序员而言就是前端知识、web服务器知识和数据库知识的结合就是web.

  1. web发展阶段介绍
WEB1.0 开始于1994年.网页是用来阅读,传递信息。 【公司主导】
WEB1.0的任务,其主要特征是大量使用静态的 HTML 网页来发布信息,并开始使用浏览器来获取信息,这个时候主要是单向的信息传递。是将以前没有放在网上的人类知识,通过商业的力量,放到网上去;从内容产生者角度看,WEB1.0是商业公司为主体把内容往网上搬。并没有解决人与人之间沟通、互动和参与的需求,所以Web2.0应运而生。中国黄页
WEB2.0 网页用来交互的。【用户主导】 推出;平台
例如: 微博、淘宝,社区、交友网站、视频网站等等 。这类网站开发常用的技术:java,php,.net(微软技术体系 asp.net c#.net vb.net) 、ruby、python ...
Web2.0 则更注重用户的交互作用,用户既是网站内容的浏览者,也是网站内容的制造者。
  1. JavaWeb概念说明
Javaweb: 用Java技术来解决相关web互联网领域的技术总和(Web前端+Web后台)。
简而言之: 用java技术开发web服务应用(软件)。比如:京东网站,就是用Java开发的。我们可以通过浏览器访问。

2、软件架构模式

生活中,我们从网络中获取资源的方式通常有两种:

1. 通过浏览器去访问网络资源(B/S);Broswer / Server
2. 打开特定的软件访问网络资源(C/S);Client /Server

例如,我们想要观看优酷视频就可以通过以下两种方式:

【方式一】通过浏览器搜索并观看

image.png

【方式二】打开优酷客户端搜索并观看

1528454942682-1685411942370.png 这两种方式对应的正是我们的两种软件结构模式:BS架构和CS架构。

BS架构

B/S架构:又称Browser/Server架构,即浏览器和服务器架构模式。它是通过浏览器 和后台服务器 进行交互的,如淘宝,京东,12306,百度等等。

1. 优点:
   1. 用户只需要安装一个浏览器即可访问不同的服务器,不需要安装很多客户端,节约硬盘资源;
   2. 系统更新和升级比较方便;
   3. 跨平台优势;
2. 缺点:
   1. 动画效果受浏览器限制;
   2. 网站的压力集中在服务器端。

CS架构

C/S架构:又称Client/Server架构,及客户端和服务器架构模式。它是通过客户端服务器 进行交互的,如QQ,迅雷,360,百度网盘等等。

1. 优点:
   1. 客户端效果炫,用户体验好;
   2. 客户端能够进行部分计算功能,减轻服务器的压力;
2. 缺点:
   1. 需要安装客户端,占用硬盘空间;
   2. 系统升级麻烦,需要安装很多升级包;

发展前景

B/S是基于网页语言的、与操作系统无关,所以跨平台也是它的优势,而且以后随着网页语言以及浏览器的进步,B/S在表现能力上的处理以及运行的速度上会越来越快,它的缺点将会越来越少。比如,现在的HTML5,在图形的渲染方面以及音频、文件的处理上已经非常强大了。所以,B/S架构将是未来的软件架构趋势 。

【结论】B/S架构将是未来软件架构的趋势。

3、B/S和C/S通信模式

1、基于请求-响应交互模型
    浏览器(客户端)向服务器 发送一个请求
    web服务器向浏览器(客户端)回送 一个响应 
    一次请求、一次响应 
2、必须先有请求 再有响应 
3、请求和响应成对出现

image.png

注:B/S模型可以理解为一种特殊C/S模型。

4、WEB资源

通过浏览器从网络中访问的资源我们称之为WEB资源,这些资源可以分为两类:静态资源和动态资源。

1. 静态资源:  指web页面中供人们浏览的数据始终是不变的。无论何时,在任何人的电脑上访问,页面都是一样的。就是我们前面学习的前端内容。比如:HTML、CSS、JS、图片、音频、视频等。
2. 动态资源: 指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
比如:你在不同时间搜索微博的热门话题内容是不一样的,每天的天气情况也是变化的。每次访问购物网站登陆的时候,会显示我们自己的用户名等。这些数据由程序生成,JSP/Servlet、ASP等技术都可以完成。
​
总结:
    静态资源的数据都是写死在页面上的固定不变。
    动态资源,浏览器访问的结果是变化的(动态web资源就是你的数据都是程序读取数据库生成的数据)。

接下来主要学习动态web资源。

补充:

在之前我们学习javase的时候,我们知道运行要有main方法,因为他是程序的开始。而junit框架使用@Test注解提供入口可以让程序开始运行,仅仅只是为了测试而诞生的。
而从今天开始我们不会在书写main 函数,如果不测试那么也不会书写@Test注解,我们会使用浏览器访问我们书写的后台服务器,而浏览器页面中的每个按钮都可以看作为一个入口,只要点击每个按钮那么后台服务器就会接收前端页面的请求,后台服务器就会开始执行,并且将数据响应给浏览器。

5、URL请求路径

URL (Uniform Resource Locator) ,统一资源定位符是对互联网上资源位置的一种表示,互联网上的每个文件都有一个唯一的URL。 书写完整格式如下:

协议://ip或者域名:端口号/资源位置 协议,http、https、ftp等 域名,域名或IP地址,能够帮我们定位到互联网上的某一台服务器 端口号,端口号是一个应用程序在一台服务器上的编号。http协议的默认端口号:80 资源位置,用于描述WEB资源在服务器上的位置

参数=值,浏览器和服务器交互传递的数据。

1530671408139.png

url图解.bmp

如:

http://www.itcast.cn/
https://www.baidu.com/s?ie=UTF-8&wd=java

第二章 tomcat服务器

1、服务器概述

1.1 服务器硬件【硬件】

    服务器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
    服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
    在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。

【小结】可以把服务器理解成一台电脑主机,只不过这台电脑需要提供可靠的服务,因此在处理能力,稳定性,安全性方面要求更高。服务器只是一台设备,必须安装服务器软件才能提供服务。

1.2 服务器软件【软件】

    服务器软件本质上是一个应用程序(由代码编写而成),运行在服务器设备上。能够接收请求并根据请求给客户端响应数据,发布资源(静态和动态)。

1530625192392.png

1.3 常见的web服务器(软件)

  1. Tomcat:Apache组织提供一个免费开源的小型的服务器软件。支持Servlet和JSP规范,性能高。开源,免费,性能高。
  2. WebLogic:Bea公司的一个收费的大型的服务器软件,后被Oracle收购。支持EE的所有的规范
  3. WebSphere:IBM公司的一个收费的大型的服务器软件,支持EE的所有的规范。
  4. JBoss:是一个基于J2EE的开放源代码的应用服务器。JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat绑定使用。占用内存。

1532082532615.png

【注意】今天我们学习的是tomcat服务器。

1.4、JavaEE规范

Java分为三个部分:

  1. JavaSE 标准版的Java,开发一些客户端的程序,桌面应用程序。JavaTM Platform Standard Edition
  2. JavaEE 企业版的Java,开发运行在服务器上程序,必须以JavaSE为基础。Enterprise Edition
  3. JavaME 用于嵌入式开发,手机移动端开发。不再使用。被安卓取代。

在Java中所有的服务器厂商都要实现一组Oracle公司规定的接口,这些接口是称为JavaEE规范。

不同厂商的JavaWeb服务器都实现了这些接口,在JavaEE中一共有13种规范。实现的规范越多,功能越强。

2、tomcat服务器

2.1 简介

tomcat服务器是一个免费的开源的web应用服务器。是Apache软件基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和JSP规范总是能在Tomcat中得到体现。

因为tomcat技术先进,性能稳定,而且免费。因而深受Java爱好者的喜爱,是目前比较流行的Web应用服务器。

【作用】 运行web项目。

2.2 下载

  1. 官网地址:https://tomcat.apache.org 选择tomcat8.5版本。

1528465078032.png

  1. 选择要下载的版本;

1528465235423.png

【tomcat软件类型介绍】

tar.gz 文件 是linux和mac操作系统下的压缩版本 zip文件是window操作系统下压缩版本(我们选择zip文件)

  1. 下载完成;

image.png

2.3 tomcat目录

将下载的zip文件解压后,可以看到如下的目录结构:

image.png

bin:脚本目录
    启动脚本(启动服务器):startup.bat
    停止脚本(停止服务器):shutdown.bat
​
conf:配置文件目录 (config /configuration)
    核心配置文件:server.xml
    用户权限配置文件:tomcat-users.xml
    所有web项目默认配置文件:web.xml
​
lib:依赖库,tomcat和web项目中需要使用的jar包
​
logs:日志文件.
    localhost_access_log.txt tomcat记录用户访问信息,..表示时间。
    例如:localhost_access_log.2017-04-28.txt
    
temp:临时文件目录,文件夹内内容可以任意删除。
​
webapps:默认情况下发布WEB项目所存放的目录。
​
work:tomcat处理JSP的工作目录。 

2.4 tomcat启动和访问

(1) 启动

双击tomcat解压目录/bin/startup.bat 文件即可启动tomcat。

image.png

(2) 访问

tomcat的默认端口为8080,所以在浏览器的地址栏输入:http://ip:8080即可访问tomcat服务器。

tomcat官网图片.PNG

(3) 关闭
  1. 关闭startup.bat启动窗口;
  2. 双击tomcat的/bin/shutdown.bat文件;
  3. Ctrl+C;

2.5 tomcat启动失败常见原因

(1) JAVA_HOME 配置

如果没有配置JAVA_HOME环境变量,在双击“startup.bat”文件运行tomcat时,将一闪立即关闭

解决方式:需要正确配置JAVA_HOME环境变量,指向JDK的bin目录的上一级目录;

1528548201740.png

(2)端口号冲突

一台拥有ip地址的主机上可以提供多个服务(启动多个软件),每一个服务都有一个唯一的端口号。所以端口号不能重复。

【端口号冲突报错信息】

严重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"]
java.net.BindException: Address already in use: JVM_Bind <null>:8080
...
Caused by: java.net.BindException: Address already in use: JVM_Bind
...
控制台将出现大量异常信息,描述的是8080端口被占用。

【解决方案】

  1. 修改tomcat端口

    通过修改tomcat目录下conf/server.xml配置文件修改端口号。将8080修改成其他端口号。

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

2.端口号占用

打开dos窗口,在dos窗口中输入如下命令:
netstat –nao

查看当前应用程序的PID.PNG 找到8080端口的软件的PID.然后,使用任务管理器---->选择详细信息---->查看pid为13144(查询出来的 值),关闭结束进程即可.

image.png

image.png

3、web项目

tomcat已经安装完成,我们启动tomcat后就能够通过ip地址和端口访问到这台服务器了。但是,我们通过访问http://ip:8080 看到的页面只是tomcat提供的一个页面。真实生活中,百度和淘宝可能使用的服务器都是tomcat,但是我们访问百度和淘宝看到的却是不同的页面,这是因为我们访问的是百度和淘宝各自运行在tomcat中的web项目。

1528550202575.png

JavaWeb项目与java项目的区别:

  • java项目:后台代码;例如之前的javase.
  • JavaWeb项目:前端代码+后台代码;

3.1 使用tomcat发布JavaWeb项目

我们的JavaWeb项目开发完成之后,必须发布到tomcat中,并启动tomcat才能够被用户访问到。将我们的JavaWeb项目发布到tomcat有如下两种方式。

方式一:企业中项目部署方式
【1】直接发布
1. 将web项目复制到tomcat的webapps目录下:
说明:我们在tomcat中发布的web项目都会存在于webapps文件夹下,如果这里使用手动发布项目,我们可以先在webapps文件夹下创建一个文件夹ha作为项目名,然后在ha文件夹下新创键一个index.html页面作为该项目的主页,然后输入内容,启动tomcat服务器即可。具体步骤如下所示:

1.在webapps文件夹下新创建一个文件夹ha作为项目名

image.png 2.在ha文件夹下新创键一个index.html页面,并输入如下内容:

<html>
    <body>
        <h1>我的第一个JavaWeb项目</h1>
    </body>
</html>

image.png

3.启动tomcat服务器:双击bin目录下的startup.bat文件

手动在tomcat中发布项目的启动服务器.bmp

4.访问:http://ip:端口号/项目名/资源路径

访问web目录下的index.html的url为:http://localhost:8080/ha/index.html

image.png

补充:我们发现当我们在浏览器地址栏中不输入ha项目下的index.html也可以访问主页面中的内容,如下图所示:

image.png

原因:当我们启动tomcat服务器的时候,在tomcat服务下的conf文件夹下有个配置文件叫做web.xml.这个文件中有如下代码:

 <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

这些代码称为欢迎页面,当我们在访问项目的时候如果不输入页面的时候,那么就会默认访问项目下默认的欢迎页面,从上往下依次访问。访问顺序:index.html、index.htm、index.jsp。所以当我们在浏览器地址栏中不输入页面的时候就会访问欢迎页面。

【2】虚拟路径发布
在conf/server.xml文件的host元素中配置Context(上下文)标签
path属性虚拟访问目录的名称
docBase属性Web应用所在目录

好处:项目不需要发布在webapps下,因为webapps项目越多,导致tomcat启动越慢。

案例:发布项目到e:\MyWeb\下,index.html文件

找到server.xml文件中148行,host元素,写下面的代码:

<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
​
        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->
​
        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
        <!--上下文路径,path表示访问地址,docBase表示要访问页面所属文件夹-->
        <Context path="/aaa" docBase="e:\MyWeb"/>
      </Host>                       

启动tomcat服务器,然后在浏览器上测试:http://localhost:8080/aaa/index.html

1573203228801.png

【3】独立的xml配置

idea中默认是这种访问方式

第一步:在tomcat/conf目录下新建一个Catalina目录(如果已经存在无需创建)

1573203848685.png

第二步:在Catalina目录下创建localhost目录

1573203866900.png

第三步:在localhost中创建xml配置文件,名称为:second(注:这个名称是浏览器访问路径,随便定义

1573203884531.png

第四步:添加xml文件的内容为:

<?xml version="1.0" encoding="UTF-8" ?>
<Context docBase="E:/MyWeb" reloadable="true"/>

说明: reloadable="true"表示可以重复加载。

第五步:在e:/MyWeb/下创建index.html,访问测试

1573203911590.png

方式二:IDEA配置tomcat直接发布项目

我们要想在idea中将项目发布到tomcat中,首先我们要先创建web项目。

1.使用idea创建JavaWeb项目

【第一步】 File---New---Project

1528556803134.png

【第二步】 选择Java Enterprise版本,选择jdk8,然后配置tomcat。

说明:从今天开始,我们开始使用jdk8,因为jdk11对于一些软件时不兼容的,例如tomcat,学到后面会报各种异常,后面的项目都是使用jdk8.现在企业主流也是jdk8.

1530617285397.png

选择Tomcat Server之后,在弹出的框中选择tomcat的安装路径。

1530617423089.png

注意:这里关联的tomcat home指的是tomcat的解压目录(bin目录的上一级目录);

1530617463103.png

【第三步】 选择使用模板创建项目

1528557528329.png

【第四步】 填写项目名,并为这个web项目配置tomcat

image.png

将tomcat配置到项目中。

image.png 【第五步】 创建完成,项目结构如下所示:

1528557888470.png

注意:如果创建项目没有web文件夹,那么在创建项目的时候按照如下选择Web Application即可

1536812295985.png

WEB项目结构如下:

1531317216782.png

src:存放.java源文件。

web:存放静态资源(html,css,js)和jsp的。

WEB-INF:(这个目录下的文件不能通过浏览器直接访问)

1.web.xml:当前web项目的核心配置文件,可以管理整个web项目。创建完web项目自动生成的。Servlet2.5必须有。Servlet3.0注解开发可以省略。

2.lib:当前web项目所需要的第三方的jar包存放的位置。需要手动创建一个文件夹lib.

3.classes: .java源文件编译后生成的class文件存放的位置。不用手动创建,运行程序会自动生成该文件夹并且将.java源文件对应的.class文件自动放到该文件夹下。

2.在创建好的web项目下新创键index.html页面

image.png

主页命名.bmp

在index.html页面中输入如下内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>在idea中创建的第一个javaweb项目</h1>
</body>
</html>
3.在idea中启动tomcat服务器,部署web项目

第一步:配置JRE

在Run Configurations中,选择JRE。

配置tomcat.bmp

1530712545411.png

第二步:启动项目

1530712596644.png

【注】图标1是正常启动,图标2是Debug模式启动

启动成功之后,会自动弹出index.html页面

访问idea中的项目效果.bmp

当然我们也可以在页面浏览器地址栏中按照如下访问:

访问主页面2.bmp

补充:当我们已经将tomcat启动了,当再次点击绿色三角即启动tomcat按钮的时候会出现如下所示的框:

点击三角框.bmp

Update resources:修改静态资源页面时,选择这个可以将修改后的静态资源页面部署到tomcat服务器上。

Update classes and resources:这里其实功能和第一个一样。

Redeploy: 表示.java源文件改变时重新部署代码,重新部署。

Restart server:表示.java源文件改变时重新部署代码,重新部署。关闭服务器和开启服务器。效率比较低。

3.2页面资源热更新

对于静态页面每次修改之后都要重新部署,所以我们可以在idea中配置页面资源热更新,这样每次修改静态页面之后就不会在重新部署了。

image-20200820232838710.png