第一章 Web开发简述
什么是Web
什么是JavaWeb开发
软件架构
-
CS结构的软件
- C/S架构:Client/Server 客户端/服务器。要求客户端电脑安装一个客户端程序。
- 常见应用:QQ,迅雷,360,旺旺 等
- 优点:
- 用户体验好,效果炫
- 对信息安全的控制较强
- 应用服务器运行数据负荷较轻,部分计算功能在客户端完成。
- 缺点:
- 占用硬盘空间
- 维护麻烦
- 安装使用依赖其他条件
- 优点:
-
BS结构的软件
- B/S架构:Browser/Server 浏览器/服务器。
- 常见应用:网银系统,淘宝,京东 12306 等
- 优点:
- 维护和升级简单,无缝升级。
- 不用必须安装程序,操作系统内置了浏览器。
- 缺点:
- 动画效果受浏览器限制
- 对信息安装控制较差。例如:网银就需要使用U盾,在浏览器端加密。
- 应用服务器运行数据负荷较重。大部分计算都在服务器端,增加服务器压力。使用Ajax可以改善部分用户体验。
- 优点:
WEB通信
WEB采用B/S通信模式,通过超文本传送协议(HTTP, Hypertext transport protocol)进行通信。通过浏览器地址栏编写URL,向服务器发送一个请求,服务器端根据请求进行相应的处理,处理完成之后,会向浏览器作出一个响应,及将服务器端资源发送给浏览器。
WEB服务器
- 服务器:
- 硬件:其实就是一台电脑(这台电脑配置要求很高)。
- 软件:需要在这台电脑上安装web服务器的软件。
常见的Web服务器
J2EE 企业级开发Java规范(13个)。标准规范包括:servlet、jsp、jdbc、xml、jta、javamail等。在java中规范就是接口。J2EE又称为JavaEE。
WEB服务器对JavaEE规范部分或全部支持(实现),也就是WEB服务器实现部分或全部接口。
常见的WEB服务器:
- Tomcat:Apache组织提供的一个开源的免费的web服务器。满足EE的Servlet和JSP的规范。
- WebSphere :IBM公司开发的一个收费的大型web服务器。满足了EE开发的所有规范。
- WebLogic:BEA公司开发的一个收费的大型web服务器。满足了EE开发的所有规范。
- IIS:应用在.NET平台上。
- Apache :应用在PHP平台上。
Web开发中的资源
静态资源:指web页面中供人们浏览的数据始终是不变。比如:HTML、CSS、JS、图片、多媒体。
动态资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。比如:JSP/Servlet、ASP、PHP
URL 请求路径
URL (Uniform Resource Locator) ,统一资源定位符是对互联网上资源位置的一种表示,互联网上的每个文件都有一个唯一的URL。
- 完整格式如下
协议://域名:端口号/资源位置?参数=值
http://www.jd.com:8080/index.html?name=123&password=12345
http://124.200.55.1:8080
* 协议,http、https、ftp等
* 域名,域名或IP地址,都可以访问WEB资源
* 端口号,程序必须使用端口号,才可以让另一个计算机访问。http协议的默认端:80
* 资源位置,用于描述WEB资源再服务器上的位置。
* 参数=值,浏览器和服务器交互传递的数据
第二章 HTTP
2.1 Http简介
什么是Http协议
HTTP协议:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。用于定义WEB浏览器与WEB服务器之间交换数据的过程。
Http协议的作用及特点
HTTP协议的作用
- HTTP协议是学习JavaWEB开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点。
HTTP协议的特点
- 基于请求/响应模型的协议。
- 请求和响应必须成对;
- 先有请求后有响应。
- 简单快捷
- 因为发送请求的时候只需要发送请求方式和请求路径即可
- HTTP协议默认的端口:80
- 例如:
http://www.baidu.com:80
- 例如:
Http协议的版本
- HTTP/1.0,发送请求,创建一次连接,获得一个web资源,连接断开。
- HTTP/1.1,发送请求,创建一次连接,获得多个web资源,连接断开。
Http协议的组成
HTTP请求协议、HTTP响应协议。
- HTTP请求包括:请求行、请求头、请求体
- HTTP响应包括:响应行、响应头、响应体
2.2 Http协议入门
准备工作
- 创建页面,编写“form.html”,并提供两个表单,分别设置表单的提交方式为:get和post。将表单提交位置设置成#,表示提交到当前表单。
<form action="#" method="get">
用户名:<input type="text" name="username" value="jack"/> <br/>
密码:<input type="text" name="password" value="1234"/> <br/>
<input type="submit" value="get提交"/>
</form>
<form action="#" method="post">
用户名:<input type="text" name="username" value="jack"/> <br/>
密码:<input type="text" name="password" value="1234"/> <br/>
<input type="submit" value="post提交"/>
</form>
3.2.1 Http请求详解
HTTP请求格式:请求行、请求头、请求体。
如下图,我们提供两种请求方式抓包结果:(Chrome浏览器)
- GET/POST请求抓包数据:
请求行
例如:POST /bj-ee/day13-http-tomcat/web/01-http/form.html HTTP/1.1
请求行必须在HTTP请求格式的第一行。
请求行格式:请求方式 资源路径 协议/版本
请求方式:协议规定7种,常用两种:GET和POST
GET请求:
将请求参数追加在URL后面,不安全。例如:form.html?username=jack&username=1234
URL长度限制GET请求方式的数据大小。
没有请求体
POST请求
请求参数显示请求体处,较安全。
请求数据大小没有显示。
只有表单设置为method=”post”才是post请求.其他的都是get请求。
常见GET请求:地址栏直接访问、<a href=””>、<img src=””> 等
请求头
例如:Host: localhost:8080
请求头从第二行开始,到第一个空行结束。及请求头和请求体之间存在一个空行。
请求头通常以键值对(key:value)方式传递数据。
key为规范规定的固定值
value 为key对应的取值,通常是一个值,可能是一组。
常见请求头 | 描述 |
---|---|
Referer | 浏览器通知服务器,当前请求来自何处。如果是直接访问,则不会有这个头。常用于:防盗链 |
Cookie | 与会话有关技术,用于存放浏览器缓存的cookie信息。 |
User-Agent | 浏览器通知服务器,客户端浏览器与操作系统相关信息 |
请求体
通常情况下,只有post请求方式才会使用到请求体,请求体中都是用户表单提交的数据,每一项数据都使用键值对key=value,多组值使用&相连。
例如;username=jack&password=1234
3.2.2 Http响应详解
HTTP响应格式:响应行、响应头、响应体
响应行
例如:HTTP/1.1 200 OK
格式:协议/版本 状态码 状态码描述
状态码:服务器与浏览器用于确定状态的固定数字号码
200 :请求成功。
302 :请求重定向。
304 :请求资源没有改变,访问本地缓存。
404 :请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。
500 :服务器内部错误。通常程序抛异常。
响应头
指导性信息,服务器指导浏览器,数据格式k:v
响应头也是用的键值对key:value
服务器通过响应头来控制浏览器的行为,不同的头浏览器操作不同。
常见请求头 | 描述 |
---|---|
Location | 指定响应的路径,需要与状态码302配合使用,完成跳转。 |
Content-Disposition | 文件下载的时候使用。通过浏览器以下载方式解析正文 |
Set-Cookie | 与会话相关技术。服务器向浏览器写入cookie |
Refresh | 定时刷新 |
响应体
响应体,就是服务器发送给浏览器的正文。页面正文部分,浏览器要显示内容,和响应头有空行分割
第三章 Tomcat服务器
3.1 什么是Tomcat
Tomcat软件,是一个免费,开方源代码的WEB服务器(接收请求,发送响应)
Apache软件基金会和Sun公司联合开发
适合小型软件系统,并发访问量小的场景.
-
Tomcat软件,支持JavaEE中的规范(接口)
JavaEE技术平台共有13个规范
支持两门规范,Servlet和jsp规范
3.2 Tomcat安装
步骤一:下载一个tomcat服务器软件.
https://tomcat.apache.org/download-80.cgi
步骤二:解压下载好的zip文件.
将解压后的文件copy到一个没有中文和空格的路径下即可.
例如:D:\develop\apache-tomcat-8.5.28
3.3 Tomcat启动和访问
- 开启Tomcat
- 解压缩目录bin,命令startup.bat
- 访问Tomcat,访问地址 URL 协议名称://服务器IP地址:端口号
- http://localhost:8080 可以看到一只猫,Tomcat是正常使用
- 看到页面在那里 Tomcat目录下/webapps/ROOT/index.jsp
- 访问: webapps/http/form.html页面,地址怎么写 http://localhost:8080/http/form.html
- 停止Tomcat
- 解压缩目录bin,命令shutdown.bat
3.4 Tomcat常见问题
- JAVA_HOME环境变量问题,闪退
- 端口被占用,Tomcat默认端口是8080
- conf/server.xml可以修改Tomcat端口号
3.5 Tomcat目录结构
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.2018-07-07.txt
temp:临时文件目录,文件夹内内容可以任意删除。
webapps:默认情况下发布WEB项目所存放的目录。
work:tomcat处理JSP的工作目录。
3.6 web项目目录结构(重要)
在JavaEE规范中,WEB项目存在一定的目录结构,具体结构如下:
项目名称 (webapps 文件夹)
|-----静态资源.HTML,CSS,JS
|-----WEB-INF (不能直接通过浏览器进行访问)
|----web.xml 当前WEB项目的核心配置,Servlet2.5必须有,3.0可省略。
|----lib 当前WEB项目所需要的第三方的jar的存放位置。
|----classes Java源码编译后生成class文件存放的位置。
37 Tomcat的项目发布方式
- 直接将项目复制到tomcat/webapps下
- 将项目复制到tomcat/webapps中
2. 启动服务器
3. 访问项目
http://localhost:8080/aaa/index.html
3.8 IDEA 中集成 Tomcat
idea中配置Tomcat
- 步骤1:首先打开idea开发工具,然后点击Run菜单,选择
Edit Configurations...
菜单,打开Run/Debug Configurations
对话框
- 步骤2:添加服务器,点击对话框左上角的加号,选择Tomcat Server,再选择Local子菜单,
找到右上角Configure… 关联到Tomcat安装目录再按图操作
VM options填写内容(这是为其分配运行内存):-Xms128m -Xmx256m -XX:PermSize=128m -XX:MaxPermSize=256m
备注:
VM options填写内容:-Xms128m -Xmx256m -XX:PermSize=128m -XX:MaxPermSize=256m
-vmargs 说明后面是VM的参数,所以后面的其实都是JVM的参数了
-Xms128m JVM初始分配的堆内存
-Xmx256m JVM最大允许分配的堆内存,按需分配
-XX:PermSize=128M JVM初始分配的非堆内存
-XX:MaxPermSize=256M JVM最大允许分配的非堆内存,按需分配
idea中发布web项目
IDEA创建JavaWeb项目(非常重要)
发布web项目
-
步骤1:配置应用访问路径
首先打开idea开发工具,然后点击Run菜单,选择
Edit Configurations...
菜单,打开Run/Debug Configurations
对话框
步骤2 启动Tomcat
步骤3:访问项目
http://localhost:8080/day01
存在的问题,在webapps中并没有我们部署的项目
IDEA启动Tomcat服务器,临时修改Tomcat配置文件,告诉Tomcat服务器,我的项目在out目录
创建好的WEB项目,直接发布到Tomcat的webapps下:
IDEA中的项目和Tomcat部署后的项目(重要)
WEB资源
WEB应用服务器中,放进去的任何内容,都成为WEB资源,包含html,css,js,图片,视频…