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 最后一次修改资源时间