Tomcat&Web程序结构&Http协议(一)

JavaWeb开发入门之Tomcat

1. 两种架构方式

1. C/S: 客户端/服务器
	1. 需要安装客户端
	2. 维护与升级不方便
	3. 运行速度更快
2. B/S:浏览器/服务器
1. 不需要安装
2. 维护与升级方便
3. 运行相对慢

JavaWeb开发,就是使用b/s架构来实现开发
	服务器中可以放入资源
		1. 静态资源		html/css/js/图片
		2. 动态资源		jsp/asp/asp.net/jsf/php

2. 常见Web服务器

WebLogic Platform,是BEA公司的产品,支持JavaEE规范
WebSphererAs,IBM公司,支持JavaEE规范
JBoss,红帽收购,支持JavaEE规范,免费
小型服务器Tomcat,该服务器支持JSP/Servlet规范

3. JavaEE规范

由13种技术构成,一组相关的技术构成的集合
(JSP/Servlet/JDBC/EJB/JNDI/JTA/JMS等)
规范: 由相应的类和接口构成

SUN提供接口规范,具体实现类(服务器厂商)
程序员: 学习JavaEE规范

4. Tomcat服务器介绍

经常用Tomcat	JSP/Servlet规范做了实现,是Apache公司的产品
注意: 安装时解压路径下: 不要有中文,不要有空格

启动步骤:
	1. 找解压路径bin目录:
	2. 进入这个目录
	3. 运行startup.bat这个批处理文件
	4. 启动成功后,访问服务器: http://localhost:8080/

Tomcat版本 6.0.x	Servlet/JSP规范2.5/2.1	JDK版本1.5以上
Tomcat版本 7.0		Servlet/JSP规范3.0/2.2	JDK版本1.6以上
启动步骤:
	1. 找解压路径bin目录:
	2. cmd命令行cd 进入这个目录
	3. 运行startup命令启动服务器
	4. 启动成功后,访问服务器: http://localhost:8080/
	5. 停止服务器: shutdown(netstat -ano | findstr 8080) taskkill /F /pid 1234
常见启动问题
配置环境变量JAVA_HOME值jdk安装路径(bin上一级目录),不加分号

5. Tomcat目录结构

bin		主要放批处理文件 startup.bat, shutdown.bat停止
conf 	存放Tomcat相关的配置文件 server.xml/web.xml/context.xml
lib		存放jar包
logs	日志信息
temp	存放临时文件(文件上传)
webapps	(apps: applications)存放Tomcat中所包含的应用,有几个文件夹就有几个应用
work:	Tomcat工作时所产生的目录

6. 常用web项目所包含的目录结构

|部署的应用根目录
	|-WEB-INF: 	必须要有(该目录中所包含的内容,外界不能访问)
		|-lib			jar包
		|-classes
		|-web.xml		必须要有(conf/web.xml复制常用标签)
			<web-app xmlns="http://java.sun.com/xml/ns/javaee"
			   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
			   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
			   version="2.5"> 
			</web-app>
	|-css文件夹
	|-html文件夹
	|-js
	|-images
	
	访问路径: http://ip地址:8080/应用名(放在webapps下文件夹名字)/资源地址
	
	部署方式
		1. 直接将应用程序文件夹拷贝到Tomcat的webapps
		2. 打war包
			1). 进入应用程序所在的文件夹
			2). 运行: jar -cvf web应用程序名字(itheima.war) .
			3). 把war包拷贝到webapps目录下

7. 虚拟目录

http://localhost:8080/itheima/images/coding.jpg
协议   本机地址	  端口  应用名	文件夹   资源名	
1. 在conf/server.xml
	<Context path="" docBase=""/> 
	在Host中加入<Context path="" docBase="">
		path代表应用的访问路径,注意一定要有"/"
		docBase代表的是应用的真实路径
	   缺点:
		要重新启动服务,才能加载进来
2. 做一个虚拟目录第二种方式
	conf/Catalina/localhost/应用名.xml
	xml文件内容<Context docBase=""/>
	注意:一定不是webapps下面的应用,是在外面的应用

访问URL地址解析的过程 
http://localhost:8080/应用名/html/1.html
	http:
		<Connector   protocol="HTTP1.1">
			<Engine name="Catalina" defaultHost="localhost">	 
			<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
			port代表http协议使用端口号		localhost:代表主机是本地主机
			定位文件夹:
			<Host name="localhost"  appBase="webapps"
				unpackWARs="true" autoDeploy="true"
				xmlValidation="false" xmlNamespaceAware="false">

3. Root.xml,自己的应用为默认的应用,注意是外部应用目录,不是webapps下的应用目录
	1. conf/catalina/localhost/ROOT.xml先解析
	2. 设置主页配置web.xml---设置当前这个应用程序的默认主页
		<welcome-file-list>
			<welcome-file>index.html</welcome-file>
		</welcome-file-list>
4. 修改端口号
	conf/web.xml改端口69行  port="80" 这样就不需要写端口了,原因http默认用80端口号
	
5. 修改虚拟主机
	1. conf/server.xml
	<Host name="www.itcast.cn"  appBase="E:/itcast"
		unpackWARs="true" autoDeploy="true"
		xmlValidation="false" xmlNamespaceAware="false" />
	
	 <Host name="www.itheima.com"  appBase="E:/itheima"
		unpackWARs="true" autoDeploy="true"
		xmlValidation="false" xmlNamespaceAware="false" />
	2. 修改一个重要文件 C:WindowsSystem32driversetchost
		127.0.0.1	www.codingPark.com
 

Web开发入门之HTTP协议详解

1. 什么是HTTP

HyperText Transport Protocol超文本传输协议(请求消息头,它传输的主体内容是超文本,响应消息头)
复习: ECMA: Javascript	W3C:HTML/CSS/HTTP进行维护的
是由W3C组织进行维护的,使用端口80,是无状态协议
无状态: 就是不能记住它的状态

作用: 主要是用于描述请求和相应的数据格式

HTTP1.0/HTTP1.1区别
HTTP1.1,一次链接中允许有多个请求和响应

2. 请求和响应消息头

请求的资源中含有 <img > <link> <script>浏览器会自动发出请求
1.客户端请求消息
	一个请求行(请求类型(GET/POST) 请求资源 HTTP版本  如(GET /myapp/index.html HTTP/1.1))
	多个请求消息头
	-----------一个空行-----------
	响应内容(post提交)
2. 服务器响应消息
	响应头(状态行)
	多个消息头
	-----------一个空行-----------
	响应实体内容

3. 数据提交方式

get,post,delete,put等
GET与POST方式对比
	哪些方式是提交数据?
		<form>表单中的method="post"就是post提交,其他都是get提交
		1. GET提交数据长度有限制,1K,而POST没有长度限制
		2. GET在地址栏可见,所以不安全。POST提交数据在请求主体内容中,地址不可见,所以安全

4. 请求消息头

*Accept-Encoding: gzip(客户端告诉服务器支持的压缩方式),deflate(无损压缩)
*Cookie: 这是最重要的请求头信息之一
*Referrer: 包含一个URL,该URL标示当前页来源	应用:统计广告投放效果/防盗链
*Content-Type:请求正文内容的类型(适应于Post请求)
	默认是application/x-www-form-urlencoded(username=sa&pwd=123)
	<form method="post" enctype="application/x-www-form-urlencoded"></form>

Accept: (客户端告知服务器能接受哪些类型数据),浏览器可接受的MIME类型(Multipurpos Internet Mail Extensation)多用途互联网邮件扩展类型
	MIME类型: 文件系统文件类型用文件的扩展名来区分
	MIME类型由大类型/小类型组成的,比如ext/html text/css text/javascript image/bmp image/jpeg  * /*
	可以在conf/web.xml找支持的类型,服务器有这一个标准
Accept-Charset: 支持的字符集 (UTF-8/GBK/ISO-8859-1)
Accept-Language: zh-CN,en-US;q=0.7,ja-JP;   q=0.3(语言出现的频率)调整语言栏(小写的语言_大写的国家)
Connection: Keep-active	保持连接
If-Modified-Since: 请求时的时间
User-Agent: 代表浏览器相关版本信息
Host: localhost 请求服务器的地址

5. 服务器响应头

*Refresh: 指定服务器刷新时间
*Location: http://www.itheima.com/index.jsp 告知浏览器,新的资源的位置(302跳转)
	***重定向:是浏览器重新定位到一个新的服务器资源
	原理: 302状态码+Location
	状态码
		200(正常)	302/307(临时重定向)	304(未修改)	404(找不到)	500(服务器内部错误)
*Content-Length:  服务器发送的数据长度
*Content-Encoding: gzip代表服务器采用什么方式进行数据压缩	JDK提供支持压缩的类GZIPOutputStream
*Content-Type: text/html;charset=GB2312服务器发送的内容MIME类型		<meta http-equiv="Content-Type" content="text/html; charset=GB2312">
*Content-Disposition: attachment;filename=aa.zip指示客户端下载	

*Expires: -1清理缓存(1970-1-1一个毫秒数,小于它都过期)
*Cache-Control:no-chace(http1.1)	没有缓存
*Pragma: no-cache (http1.0) 没有缓存

***set-Cookie:SS=Q0=5Lb_nQ; path=/search服务器端发送的Cookie
(配合Cookie请求头一起使用)

Content-Language: zh-CN服务发送的文本的语言
Last-Modified 最后一次修改资源时间
原文地址:https://www.cnblogs.com/codingpark/p/4229770.html