tomcat&servlet入门
内容介绍
第一章 web相关知识概述【了解】
1、WEB简介
Web(World Wide Web)即全球广域网,也称为万维网。它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
简而言之就是我们平时上网浏览的网页,玩的网页游戏,上网下载资源。对于程序员而言就是前端知识、web服务器知识和数据库知识的结合就是web.
- 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 则更注重用户的交互作用,用户既是网站内容的浏览者,也是网站内容的制造者。
- JavaWeb概念说明
Javaweb: 用Java技术来解决相关web互联网领域的技术总和(Web前端+Web后台)。
简而言之: 用java技术开发web服务应用(软件)。比如:京东网站,就是用Java开发的。我们可以通过浏览器访问。
2、软件架构模式
生活中,我们从网络中获取资源的方式通常有两种:
1. 通过浏览器去访问网络资源(B/S);Broswer / Server
2. 打开特定的软件访问网络资源(C/S);Client /Server
例如,我们想要观看优酷视频就可以通过以下两种方式:
【方式一】通过浏览器搜索并观看
【方式二】打开优酷客户端搜索并观看
这两种方式对应的正是我们的两种软件结构模式: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、请求和响应成对出现
注: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资源在服务器上的位置
参数=值,浏览器和服务器交互传递的数据。
如:
http://www.itcast.cn/
https://www.baidu.com/s?ie=UTF-8&wd=java
第二章 tomcat服务器
1、服务器概述
1.1 服务器硬件【硬件】
服务器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。
【小结】可以把服务器理解成一台电脑主机,只不过这台电脑需要提供可靠的服务,因此在处理能力,稳定性,安全性方面要求更高。服务器只是一台设备,必须安装服务器软件才能提供服务。
1.2 服务器软件【软件】
服务器软件本质上是一个应用程序(由代码编写而成),运行在服务器设备上。能够接收请求并根据请求给客户端响应数据,发布资源(静态和动态)。
1.3 常见的web服务器(软件)
- Tomcat:Apache组织提供一个免费开源的小型的服务器软件。支持Servlet和JSP规范,性能高。开源,免费,性能高。
- WebLogic:Bea公司的一个收费的大型的服务器软件,后被Oracle收购。支持EE的所有的规范
- WebSphere:IBM公司的一个收费的大型的服务器软件,支持EE的所有的规范。
- JBoss:是一个基于J2EE的开放源代码的应用服务器。JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat绑定使用。占用内存。
【注意】今天我们学习的是tomcat服务器。
1.4、JavaEE规范
Java分为三个部分:
- JavaSE 标准版的Java,开发一些客户端的程序,桌面应用程序。JavaTM Platform Standard Edition
- JavaEE 企业版的Java,开发运行在服务器上程序,必须以JavaSE为基础。Enterprise Edition
- 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 下载
- 官网地址:
https://tomcat.apache.org选择tomcat8.5版本。
- 选择要下载的版本;
【tomcat软件类型介绍】
tar.gz 文件 是linux和mac操作系统下的压缩版本 zip文件是window操作系统下压缩版本(我们选择zip文件)
- 下载完成;
2.3 tomcat目录
将下载的zip文件解压后,可以看到如下的目录结构:
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。
(2) 访问
tomcat的默认端口为8080,所以在浏览器的地址栏输入:http://ip:8080即可访问tomcat服务器。
(3) 关闭
- 关闭startup.bat启动窗口;
- 双击tomcat的/bin/shutdown.bat文件;
- Ctrl+C;
2.5 tomcat启动失败常见原因
(1) JAVA_HOME 配置
如果没有配置JAVA_HOME环境变量,在双击“startup.bat”文件运行tomcat时,将一闪立即关闭。
解决方式:需要正确配置JAVA_HOME环境变量,指向JDK的bin目录的上一级目录;
(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端口被占用。
【解决方案】
-
修改tomcat端口
通过修改tomcat目录下conf/server.xml配置文件修改端口号。将8080修改成其他端口号。
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
2.端口号占用
打开dos窗口,在dos窗口中输入如下命令:
netstat –nao
找到8080端口的软件的PID.然后,使用任务管理器---->选择详细信息---->查看pid为13144(查询出来的 值),关闭结束进程即可.
3、web项目
tomcat已经安装完成,我们启动tomcat后就能够通过ip地址和端口访问到这台服务器了。但是,我们通过访问http://ip:8080 看到的页面只是tomcat提供的一个页面。真实生活中,百度和淘宝可能使用的服务器都是tomcat,但是我们访问百度和淘宝看到的却是不同的页面,这是因为我们访问的是百度和淘宝各自运行在tomcat中的web项目。
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作为项目名
2.在ha文件夹下新创键一个index.html页面,并输入如下内容:
<html>
<body>
<h1>我的第一个JavaWeb项目</h1>
</body>
</html>
3.启动tomcat服务器:双击bin目录下的startup.bat文件
4.访问:http://ip:端口号/项目名/资源路径
访问web目录下的index.html的url为:http://localhost:8080/ha/index.html
补充:我们发现当我们在浏览器地址栏中不输入ha项目下的index.html也可以访问主页面中的内容,如下图所示:
原因:当我们启动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 "%r" %s %b" />
<!--上下文路径,path表示访问地址,docBase表示要访问页面所属文件夹-->
<Context path="/aaa" docBase="e:\MyWeb"/>
</Host>
启动tomcat服务器,然后在浏览器上测试:http://localhost:8080/aaa/index.html
【3】独立的xml配置
idea中默认是这种访问方式
第一步:在tomcat/conf目录下新建一个Catalina目录(如果已经存在无需创建)
第二步:在Catalina目录下创建localhost目录
第三步:在localhost中创建xml配置文件,名称为:second(注:这个名称是浏览器访问路径,随便定义)
第四步:添加xml文件的内容为:
<?xml version="1.0" encoding="UTF-8" ?>
<Context docBase="E:/MyWeb" reloadable="true"/>
说明: reloadable="true"表示可以重复加载。
第五步:在e:/MyWeb/下创建index.html,访问测试
方式二:IDEA配置tomcat直接发布项目
我们要想在idea中将项目发布到tomcat中,首先我们要先创建web项目。
1.使用idea创建JavaWeb项目
【第一步】 File---New---Project
【第二步】 选择Java Enterprise版本,选择jdk8,然后配置tomcat。
说明:从今天开始,我们开始使用jdk8,因为jdk11对于一些软件时不兼容的,例如tomcat,学到后面会报各种异常,后面的项目都是使用jdk8.现在企业主流也是jdk8.
选择Tomcat Server之后,在弹出的框中选择tomcat的安装路径。
注意:这里关联的tomcat home指的是tomcat的解压目录(bin目录的上一级目录);
【第三步】 选择使用模板创建项目
【第四步】 填写项目名,并为这个web项目配置tomcat
将tomcat配置到项目中。
【第五步】 创建完成,项目结构如下所示:
注意:如果创建项目没有web文件夹,那么在创建项目的时候按照如下选择Web Application即可
WEB项目结构如下:
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页面
在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。
第二步:启动项目
【注】图标1是正常启动,图标2是Debug模式启动
启动成功之后,会自动弹出index.html页面
当然我们也可以在页面浏览器地址栏中按照如下访问:
补充:当我们已经将tomcat启动了,当再次点击绿色三角即启动tomcat按钮的时候会出现如下所示的框:
Update resources:修改静态资源页面时,选择这个可以将修改后的静态资源页面部署到tomcat服务器上。
Update classes and resources:这里其实功能和第一个一样。
Redeploy: 表示.java源文件改变时重新部署代码,重新部署。
Restart server:表示.java源文件改变时重新部署代码,重新部署。关闭服务器和开启服务器。效率比较低。
3.2页面资源热更新
对于静态页面每次修改之后都要重新部署,所以我们可以在idea中配置页面资源热更新,这样每次修改静态页面之后就不会在重新部署了。