一、C/S与B/S架构

  • C/S 客户端/服务器端
  • 用户本地有客户端,远程有服务器端
  • 优点:用户体验好
  • 缺点:开发部署 安装维护麻烦
  • B/S 浏览器端/服务器端
  • 通过浏览器浏览不同的网址(URL),访问不同的服务器端程序
  • 优点:开发 安装 部署 维护简单
  • 缺点:若应用过大,用户体验可能会受到影响
  • 对硬件要求过高

二、HTML标签

  • 表单 form
  • 属性:
  • action:指定提交数据URL
  • method:指定提交方式
  • get:
    请求参数在地址栏中显示,参数大小有限制,不太安全
  • post:
    请求参数不在地址栏中显示,参数大小没限制,比较安全
    表单中数据想要被提交,必须指定name属性
  • 表单项标签
  • input:通过type属性,改变样式
  • text: placeholder默认提示信息,输入内容后会清空
  • password:密码框
  • radio:单选框
  • 多个单选框name属性值需统一
  • 给每个单选框提供value属性
  • checked为默认选择
  • checkbox:复选框
  • file:
  • hidden:隐藏域,用于提交一些信息
  • 按钮:
  • botton:普通按钮
  • submit:提交按钮
  • image:图片按钮
  • label:指定输入项的文字描述信息
  • labelfor属性一般会和inputid属性值相对应应,点击label区域,会让input输入框获取焦点
  • select:下拉列表
  • option
  • textarea:文本域
  • cows 指定列数
  • rows 指定行数

三、CSS

  1. CSS语法
  • 格式
    选择器{ 属性名:属性值; 属性名:属性值;}
  1. 选择器(基础)
  • ID选择器 #ID属性值{}
  • 类选择器 .class属性值{}
  • 元素选择器 标签名称{}
  1. 选择器(扩展)
  • 所有元素 *{}
  • 并集选择 选择器1,选择器2{}
  • 子选择器 选择器1 选择器2{}
  • 父选择器 筛选子选择器2的父选择器1选择器1>选择器2{}
  • 属性选择器 元素名称[属性名 = “属性值”]{}
  • 伪类选择器 元素:状态{}
  • <a> 状态
  • link 初始化状态
  • hover 鼠标悬停
  • visited 已访问
  • active 正在访问

七、Tomcat web服务器软件

  1. 下载 安装
  • 打开终端,输入以下命令 Library/Tomcat/bin/startup.sh,
  • 浏览器中输入localhost:8080,查看效果
  • 关闭 shutdown.sh 或 Ctrl+C
  1. 部署项目
  • 直接将项目放入 webapps目录下,或打包成war包
  • 在conf\Catalina\localhost创建任意名称的xml文件,内容为:<Context docBase = "项目存放路径” />;xml文件名称为虚拟目录

八、Servlet

  1. 概念:运行在服务器端的小程序
  • 是一个接口,定义了java类被浏览器访问到的规则
  • 使用时自定义一个类,实现servlet接口,复写方法
  1. 执行原理
  • 客户端发送请求后,解析请求URL路径,获取servlet资源路径
  • 查找web.xml文件,查找<url-pattern>标签体内容
  • 查找对应<servlet-class>全类名
  • tomcat将字节码文件加载进内存,并创建其对象
  • 调用方法
  1. 生命周期
  • init方法:被创建,只执行一次
  • <servlet>标签下可配置创建时机
  • 第一次被访问时
  • <load-on-startup>的值为负数
  • 在服务器启动时创建
  • <load-on-startup>为0或正整数
  1. Servlet体系结构
  • Servlet – 接口
  • GenericServlet – 抽象类
  • 将Servlet接口中Service()方法作为抽象,其他方法默认空实现。
  • HttpServlet – 抽象类
  • 对HTTP协议的一种封装,简化操作。复写doGet、doPost方法
  1. Servlet相关配置
  • urlpartten:Servlet访问路径,可定义多个访问路径@WebServlet({"/demo1","/demo2","/demo3"})
  • /xxx:路径匹配
  • /xxx/xxx:多层路径目录结构
  • *.xxx 扩展名匹配

九、HTTP

  1. 概念:超文本传输协议
  • 传输协议:定义了客户端和服务器端通信时,发送数据的格式
  • 基于TCP/IP传输协议,默认端口号为80,基于请求/响应模型(一次请求对应一次响应),无状态的(每次请求相互独立,不能交互数据)
  • 历史版本:
  • 1.0:每一次请求响应都会建立新的连接
  • 1.1:复用连接
  1. 请求消息数据格式
  • 请求行
  • 请求方式 请求url 请求协议/版本
    GET /login.html HTTP/1.1
  • 请求头
  • 请求空行
  • 请求体
  • 封装POST请求消息的请求参数

十、Request

  1. request对象和response对象的原理
  1. request和response对象是由服务器创建的
  2. request对象用于获取请求消息,response对象用于设置响应消息
  1. request对象继承体系结构:
    ServletRequest – 接口
    | 继承
    HttpServletRequest – 接口
    | 实现
    org.apache.catalina.connector.RequestFacade 类(tomcat编写)
  2. request功能:
  1. 获取请求消息数据
  1. 获取请求行数据
  • GET /day08/demo1?name=zhangsan HTTP/1.1
  • 方法:
  1. 获取请求方式 :GET
  • String getMethod()
  1. 获取虚拟目录:/day08
  • String getContextPath()
  1. 获取Servlet路径: /demo1
  • String getServletPath()
  1. 获取get方式请求参数:name=zhangsan
  • String getQueryString()
  1. 获取请求URI:/day08/demo1
  • String getRequestURI(): /day08/demo1
  • StringBuffer getRequestURL(): http://localhost/day08/demo1
  • URL:统一资源定位符 : http://localhost/day08/demo1 中华人民共和国
  • URI:统一资源标识符 : /day08/demo1 共和国 (URI>URL)
  1. 获取协议及版本:HTTP/1.1
  • String getProtocol()
  1. 获取客户机的IP地址:
  • String getRemoteAddr()
  1. 获取请求头数据
  • 方法:
  • (*)String getHeader(String name):通过请求头的名称获取请求头的值
  • Enumeration getHeaderNames():获取所有的请求头名称
  1. 获取请求体数据:
  • 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数
  • 步骤:
  1. 获取流对象
  • BufferedReader getReader():获取字符输入流,只能操作字符数据
  • ServletInputStream getInputStream():获取字节输入流,可以操作所有类型数据
  • 在文件上传知识点后讲解
  1. 再从流对象中拿数据