Tomcat的安装配置与web项目发布
Tomcat的安装配置与web项目发布
今日内容
1、Web开发基本概念(了解)
2、tomcat的安装和配置(必会)
3、web项目的发布(必会)
4、Http协议简介(理解)
Web开发基本概念
1、软件的架构
常用的软件:QQ、京东、淘宝、kgc
1)C/S架构
解释:客户端/服务器。
特点:需要下载并安装,每次更新需要下载,客户端和服务器有可能都需要更新
控件炫酷,因为它调用的是系统底层的图形的API
2)B/S架构
解释:浏览器/服务器架构。它是基于Http协议的,用的是请求/响应模式。
特点:通过浏览器直接访问,更新不需要用户干涉,在服务器端维护
2、web资源分类
什么是web资源?
放在服务器上,供用户访问的文件、图片、CSS、JS、视频、音频等
1)静态资源:css、js、图片 html 视频 音频
2)动态资源:如果文件是由容器进行编译、执行后生成的文件,就是动态资源。Servlet、jsp。
当用户访问资源的时候,动态资源和静态资源走的引擎不一样。
3、服务器的概念以及常见的web服务器
l 什么是服务器?
服务器是软件和硬件的结合体。首先要由服务器的硬件,然后安装服务器软件,对软件进行配置,启动起来。这样用户才可以访问。
l 常见的web服务器
概念:就是可以运行web程序的服务器,当用户把web程序部署到该服务器后,启动就可以访问web资源。
1)WebSphere:IBM公司的商用服务器,收费。
2)WebLogic:BEA 公司的商业服务器,收费 jsp/servlet
3)IIS ,asp asp.net
4)tomcat:开源的服务器,高效,小巧。通常现在经常把tomcat在分布式环境下搭建集群。
4、web动态资源的结构
Webapp(webroot)
WEB-INF
web.xml(部署描述符文件)
lib(文件,放jar文件)
jsp(html css js)
就是一般在站点的下面会专门创建文件夹放css,js和imgs类似。Lib放第三方的jar,拷贝进去后,不需要再去构建路径
tomcat的安装和配置
1、下载地址:https://tomcat.apache.org/download-80.cgi
2、下载什么?
说明:gz是linux版本,zip是windows版本,要根据操作系统的64还是32,选择合适的。
3、安装就是解压缩。
1)解压到根目录
2)不能解压到中文文件夹、中间不要有空格、也不要用很特殊的字符
4、配置
1)该软件依赖jdk,没有jdk无法运行启动。那么就必须配置jdk的环境变量
JAVA_HOME: C:\Program Files\Java\jdk1.8.0_111
CLASSPATH: .;%JAVA_HOME%\lib; %JAVA_HOME%\lib
配置path环境变量,在前面加上 %JAVA_HOME%\bin;
Path环境变量所做过的修改
D:\Program Files\MySQL\MySQL Server 5.5\bin;
这是配置的数据库的环境变量
%Java_Home%\bin;
这是配置的jdk的环境变量
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;
%CATALINA_HOME%\bin;
这是配置的tomcat的环境变量
---------------------------------------------------------------------------------------------------------------------------------
2)配置tomcat环境
CATALINA_HOME: D:\apache-tomcat-8.0.26
在后面加上 %CATALINA_HOME%\bin;
3)如何判断安装成功
5、在命令行输入startup.bat,出现下面的界面,屏幕没有一闪而过,就说明没有问题。这说明启动成功
6、测试:在浏览器输入http://localhost:8080/,
7、tomcat的目录结构
bin:启动和关闭tomcat的文件夹。
startup.bat是用来启动服务器,
shutdown.bat是停止服务器的。
这里的bat文件我们称为批处理文件。
以.sh结尾的文件是在linux环境下启动和关闭服务器的文件。
lib:该软件依赖的jar包
logs:日志文件
temp:临时文件夹
webapps:就是用来发布你自己的web应用的文件夹,比如自己的站点可以拷贝到这里。
work:放的jsp文件翻译的源代码文件以及编译后的字节码文件
web项目的发布
学习误会:
1)大家认为,我们一个动态站点 开发完毕,要测试或者正式上线,就是每次手工拷贝项目到webapps?
http://localhost:8080/web01/xxxxx资源
解答:可以这么做,但是在开发的时候调试的效率太低,每次修改一定代码,都必须手工拷贝,速度太慢。所以我们是通过软件自动的拷贝到webapps下面的。这个通过软件拷贝的过程叫做部署和发布。什么时候用该方式昵?比如项目完成后,到客户现场一般带到现场的不是源代码(源代码不会随便给实施工程师),而是编译后的文件,一般手工拷贝部署。也可以远程的方式拷贝部署。(有云服务器,有账号和密码)。
2)发布:有手工拷贝,还有工具拷贝,比如通过eclipse自动拷贝和部署。
发布一个web工程到tomcat中共有三种方法:
- 直接将web工程的WebContent拷贝到tomcat/webapps中.
- 配置tomcat的虚拟路径
- 配置tomcat的虚拟路径
方式一:直接copy项目到webapps下
直接将web工程复制到webapps即可,注意它copy的是webContext这个文件夹的内容。
例如http://localhost:8080/WebContent/NewFile.jsp
http://60.1.1.128:8080/aa/NewFile.jsp
当需要别人的电脑访问你的网页,需要将localhost 改为本机的ip地址60.1.1.128
获取ip地址的方式为,在黑窗口输入ipconfig
方式二:配置tomcat的虚拟路径(不推荐)
在tomcat/conf/server.xml文件中进行配置
在<Host>标签下配置:
<Context path="aaa" docBase="D:/HelloKitty"/>
方式三:配置tomcat的虚拟路径(推荐)
在tomcat/conf/Catalina/localhost/xxx.xml
配置<Context docBase="D:/HelloKitty"/>
用尾文件的路径取代"D:/HelloKitty"
xxx作为虚拟路径的名称
创建xml文件
Xml的文件名就是访问路径
例如http://localhost:8080/aa/NewFile.jsp
如何得到路径?
任务,分别使用cmd启动服务器,和使用eclipse启动服务器来实现web项目的发布
eclipse环境配置tomcat以及发布和部署web项目
说明:第一次的不要添加web到服务器,因为会自动发布到插件中
Http协议简介
Http协议的概述
协议
什么是协议:规定双方需要遵守的规则
http协议
什么是http协议:用来规定浏览器和服务器之间需要遵守的规则.。
解读:是软件的协议,规定是浏览器和服务器双方要遵循的规则。为什么需要遵循规则?因为是软件,它是机器来执行的,它自己不会判断,只会机械执行。而且在计算机世界中是二进制的数据。那么这些数据进行交互和通信,机器怎么知道它要去执行什么指令?那么就必须约定规则。这样才可以。
http协议的作用:规范浏览器和服务器之间的数据传递.
http协议的特点:
- 基于请求和响应的模型
必须先有请求,后有响应
请求和响应必须成对出现
- 默认的端口号是80
- 3. 是无状态的协议
http协议的版本:
1.0 每次响应后即刻关闭了连接.
1.1 现在使用.不是每次响应后挂断,等待长时间以后,没有请求就会挂断.
http协议的演示
抓包分析:get方式
请求部分:
GET /ServletDemo/http/demo2.html?name=aaa&age=18 HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost:8080/ServletDemo/http/demo1.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
抓包分析:post方式
请求部分:
POST /ServletDemo/http/demo2.html HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
Referer: http://localhost:8080/ServletDemo/http/demo1.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
name=bbb&age=38
响应部分:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Accept-Ranges: bytes
ETag: W/"143-1508222586306"
Last-Modified: Tue, 17 Oct 2017 06:43:06 GMT
Content-Type: text/html
Content-Length: 143
Date: Tue, 17 Oct 2017 06:48:05 GMT
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
hello servlet!!!
</body>
</html>
http协议的详解
请求部分
请求行
提交方式:
提交方式有很多种,常用的就是get,post,还有一些put,delete...
get和post的区别:
get的提交的参数会显示到地址栏上,而post不会
get往往是有大小限制的,而post没有大小的限制
get没有请求体,而post是有请求体
提交路径:
协议版本: HTTP/1.1
请求头
都是键值对的形式显示存在的,一般一个key对应一个value,也有一些是一个key多个value
User-Agent: 代表的是浏览器的类型---文件下载,下载中文文件,IE使用URLEncoder 进行编码,而Firefox会是Base64编码
Referer: 代表的是网页的来源.---防盗链
If-Modified-Since: 通常与响应中的头Last-Modified一起使用来查找本地缓存.
请求体
就是post提交方式提交到服务器的参数
响应部分
响应行
协议版本 :HTTP/1.1
状态码 :
200 成功
302 重定向
304 查找本地缓存
404 资源不存在
500 服务器内部错误
状态码描述
响应头:键值对,一般一个key对应一个value,也有一个key对应多个value
Last-Modified :与请求头中的If-Modified-Since一起使用查找本地缓存.
Content-Disposition:文件下载的时候使用的一个头信息
Location :重定向跳转的路径
Refresh :定时刷新/定时跳转
问题:
Web中,缓存的原理是什么?
第1次请求的时候,会把资源和时间带到客户端浏览器缓存文件夹中,第2次请求同一个资源的时候,请求头会带一个If-Modified-Sice(时间戳)到服务器端,服务器端去查找请求的资源的最后修改时间是什么,把这个时间和带过来的时间进行对比,如果不同,就会把资源重新发送到浏览器缓存文件夹,同时会带一个时间戳Last-Modified 过去。如果相同,就发一个状态码304,(此时不会将资源重新发送到浏览器缓存文件夹),那么浏览器会自动到缓存文件夹中查找资源并显示。
响应体:
显示到浏览器的页面的内容
作业:
1、三种发布方式练习
2、在eclipse中创建web项目,以及配置tomcat,发布项目和启动、关闭。
3、预习Servlet
学习底线:
1、会创建web项目,会配置tomcat,会发布项目,启动
2、servlet会创建、会配置部署描述符以及会通过url访问servlet(相对路径和绝对路径)
3、会在servlet(控制器)中通过request对象获得客户端浏览器提交的请求参数的值。
从前台到后台,意味着会从后台获取前提提交数据。Request对象,学会核心方法。
4、会从后台到前台。会响应页面或者数据给前台。Reponse对象
5、会处理响应乱码或者请求乱码。Request中获得前台数据的时候,如果是get提交会有乱码,要会处理。响应的数据会通过response处理乱码。
6、懂得转发和重定向的区别,继而会选择合适的域对象,把数据存储到域对象。当然也会从域对象中获得存放的值。
7、mvc的执行流程
8、JSTL和EL表达式的使用(数据绑定的时候,处理循环、判断以及从域对象中获得数据后进行绑定)
9、三层架构的基础上,这个是基础中的基础。
10、过滤器的使用
11、jsp的9个内置对象以及他们的用法
12、会处理AJAX,返回json数据
13、单表的带条件的分页查询
提高部分:
1、cookie的原理
2、session的原理
3、跨域访问的问题
4、表单的重复提交处理
5、禁止cookie后怎么处理?
6、文件的上传和下载(我们的企业家开发不会用框架来处理上传和下载)
7、监听器的使用场景
8、用户的自动登录功能
9、jsp页面的组成部分(动作、小脚本、表达式的混排使用)
10、验证码
11、多个表的带条件的分页查询