一、C/S与B/S架构
- C/S 客户端/服务器端
- 用户本地有客户端,远程有服务器端
- 优点:用户体验好
- 缺点:开发部署 安装维护麻烦
- B/S 浏览器端/服务器端
- 通过浏览器浏览不同的网址(URL),访问不同的服务器端程序
- 优点:开发 安装 部署 维护简单
- 缺点:若应用过大,用户体验可能会受到影响
- 对硬件要求过高
二、HTML标签
- 表单
form
- 属性:
-
action
:指定提交数据URL method
:指定提交方式
-
get
:
请求参数在地址栏中显示,参数大小有限制,不太安全 -
post
:
请求参数不在地址栏中显示,参数大小没限制,比较安全
表单中数据想要被提交,必须指定name属性
- 表单项标签
input
:通过type属性,改变样式
-
text: placeholde
r默认提示信息,输入内容后会清空 -
password
:密码框 radio
:单选框
- 多个单选框name属性值需统一
- 给每个单选框提供value属性
- checked为默认选择
-
checkbox
:复选框 -
file
: -
hidden
:隐藏域,用于提交一些信息 - 按钮:
-
botton
:普通按钮 -
submit
:提交按钮 -
image
:图片按钮
label
:指定输入项的文字描述信息
-
label
的for
属性一般会和input
的id
属性值相对应应,点击label
区域,会让input
输入框获取焦点
select
:下拉列表
option
textarea
:文本域
-
cows
指定列数 -
rows
指定行数
三、CSS
- CSS语法
- 格式
选择器{ 属性名:属性值; 属性名:属性值;}
- 选择器(基础)
- ID选择器
#ID属性值{}
- 类选择器 .
class属性值{}
- 元素选择器
标签名称{}
- 选择器(扩展)
- 所有元素
*{}
- 并集选择
选择器1,选择器2{}
- 子选择器
选择器1 选择器2{}
- 父选择器 筛选子选择器2的父选择器1
选择器1>选择器2{}
- 属性选择器
元素名称[属性名 = “属性值”]{}
- 伪类选择器
元素:状态{}
-
<a>
状态 -
link
初始化状态 -
hover
鼠标悬停 -
visited
已访问 -
active
正在访问
四
七、Tomcat web服务器软件
- 下载 安装
- 打开终端,输入以下命令 Library/Tomcat/bin/startup.sh,
- 浏览器中输入localhost:8080,查看效果
- 关闭 shutdown.sh 或 Ctrl+C
- 部署项目
- 直接将项目放入 webapps目录下,或打包成war包
- 在conf\Catalina\localhost创建任意名称的xml文件,内容为:<Context docBase = "项目存放路径” />;xml文件名称为虚拟目录
八、Servlet
- 概念:运行在服务器端的小程序
- 是一个接口,定义了java类被浏览器访问到的规则
- 使用时自定义一个类,实现servlet接口,复写方法
- 执行原理
- 客户端发送请求后,解析请求URL路径,获取servlet资源路径
- 查找web.xml文件,查找
<url-pattern>
标签体内容 - 查找对应
<servlet-class>
全类名 - tomcat将字节码文件加载进内存,并创建其对象
- 调用方法
- 生命周期
- init方法:被创建,只执行一次
- 在
<servlet>
标签下可配置创建时机
- 第一次被访问时
-
<load-on-startup>
的值为负数
- 在服务器启动时创建
-
<load-on-startup>
为0或正整数
- Servlet体系结构
- Servlet – 接口
- GenericServlet – 抽象类
- 将Servlet接口中Service()方法作为抽象,其他方法默认空实现。
- HttpServlet – 抽象类
- 对HTTP协议的一种封装,简化操作。复写doGet、doPost方法
- Servlet相关配置
- urlpartten:Servlet访问路径,可定义多个访问路径@WebServlet({"/demo1","/demo2","/demo3"})
- /xxx:路径匹配
- /xxx/xxx:多层路径目录结构
- *.xxx 扩展名匹配
九、HTTP
- 概念:超文本传输协议
- 传输协议:定义了客户端和服务器端通信时,发送数据的格式
- 基于TCP/IP传输协议,默认端口号为80,基于请求/响应模型(一次请求对应一次响应),无状态的(每次请求相互独立,不能交互数据)
- 历史版本:
- 1.0:每一次请求响应都会建立新的连接
- 1.1:复用连接
- 请求消息数据格式
- 请求行
- 请求方式 请求url 请求协议/版本
GET /login.html HTTP/1.1
- 请求头
- 请求空行
- 请求体
- 封装POST请求消息的请求参数
十、Request
- request对象和response对象的原理
- request和response对象是由服务器创建的
- request对象用于获取请求消息,response对象用于设置响应消息
- request对象继承体系结构:
ServletRequest – 接口
| 继承
HttpServletRequest – 接口
| 实现
org.apache.catalina.connector.RequestFacade 类(tomcat编写) - request功能:
- 获取请求消息数据
- 获取请求行数据
- GET /day08/demo1?name=zhangsan HTTP/1.1
- 方法:
- 获取请求方式 :GET
- String getMethod()
- 获取虚拟目录:/day08
- String getContextPath()
- 获取Servlet路径: /demo1
- String getServletPath()
- 获取get方式请求参数:name=zhangsan
- String getQueryString()
- 获取请求URI:/day08/demo1
- String getRequestURI(): /day08/demo1
- StringBuffer getRequestURL(): http://localhost/day08/demo1
- URL:统一资源定位符 : http://localhost/day08/demo1 中华人民共和国
- URI:统一资源标识符 : /day08/demo1 共和国 (URI>URL)
- 获取协议及版本:HTTP/1.1
- String getProtocol()
- 获取客户机的IP地址:
- String getRemoteAddr()
- 获取请求头数据
- 方法:
- (*)String getHeader(String name):通过请求头的名称获取请求头的值
- Enumeration getHeaderNames():获取所有的请求头名称
- 获取请求体数据:
- 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
- 步骤:
- 获取流对象
- BufferedReader getReader():获取字符输入流,只能操作字符数据
- ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据
- 在文件上传知识点后讲解
- 再从流对象中拿数据