JavaWeb 知识补充

软件架构


    1. C/S: Client/Server 客户端/服务器端
        * 在用户本地有一个客户端程序,在远程有一个服务器端程序
        * 如:QQ,迅雷...
        * 优点:
            1. 用户体验好
        * 缺点:
            1. 开发、安装,部署,维护 麻烦
    2. B/S: Browser/Server 浏览器/服务器端
        * 只需要一个浏览器,用户通过不同的网址(URL),客户访问不同的服务器端程序
        * 优点:
            1. 开发、安装,部署,维护 简单
        * 缺点:
            1. 如果应用过大,用户的体验可能会受到影响
            2. 对硬件要求过高

B/S架构详解

资源分类:
        1. 静态资源:
            * 使用静态网页开发技术发布的资源。
            * 特点:
                * 所有用户访问,得到的结果是一样的。
                * 如:文本,图片,音频、视频, HTML,CSS,JavaScript
                * 如果用户请求的是静态资源,那么服务器会直接将静态资源发送给浏览器。浏览器中内置了静态资源的解析引擎,可以展示静态资源
        2. 动态资源:
            * 使用动态网页及时发布的资源。
            * 特点:
                * 所有用户访问,得到的结果可能不一样。
                * 如:jsp/servlet,php,asp...
                * 如果用户请求的是动态资源,那么服务器会执行动态资源,转换为静态资源,再发送给浏览器

静态资源:
        * HTML:用于搭建基础网页,展示页面的内容
        * CSS:用于美化页面,布局页面
        * JavaScript:控制页面的元素,让页面有一些动态的效果

 

HTML

1、概念:是最基础的网页开发语言

    * Hyper Text Markup Language 超文本标记语言
        * 超文本:
            * 超文本是用超链接的方法,将各种不同空间的文字信息组织在一起的网状文本.
        * 标记语言:
            * 由标签构成的语言。<标签名称> 如 html,xml
            * 标记语言不是编程语言

2、快速入门:
    * 语法:
        1. html文档后缀名 .html 或者 .htm
        2. 标签分为
            1. 围堵标签:有开始标签和结束标签。如 <html> </html>

            2. 自闭和标签:开始标签和结束标签在一起。如 <br/>

        3. 标签可以嵌套:
            需要正确嵌套,不能你中有我,我中有你
            错误:<a><b></a></b>
            正确:<a><b></b></a>

        4. 在开始标签中可以定义属性。属性是由键值对构成,值需要用引号(单双都可)引起来
        5. html的标签不区分大小写,但是建议使用小写。

 

CSS:页面美化和布局控制

1. 概念: Cascading Style Sheets 层叠样式表
    * 层叠:多个样式可以作用在同一个html的元素上,同时生效

2. 好处:
    1. 功能强大
    2. 将内容展示和样式控制分离
        * 降低耦合度。解耦
        * 让分工协作更容易
        * 提高开发效率

3. CSS的使用:CSS与html结合方式

相当于是美化内容

 

JavaScript

概念:一门客户端脚本语言
    * 运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎
    * 脚本语言:不需要编译,直接就可以被浏览器解析执行了

功能:
    * 可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验。

 

Bootstrap

1. 概念: 一个前端开发的框架,Bootstrap,来自 Twitter,是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的,它简洁灵活,使得 Web 开发更加快捷。
    * 框架:一个半成品软件,开发人员可以在框架基础上,在进行开发,简化编码。
    * 好处:
        1. 定义了很多的css样式和js插件。我们开发人员直接可以使用这些样式和插件得到丰富的页面效果。
        2. 响应式布局。
            * 同一套页面可以兼容不同分辨率的设备。

2. 快速入门
    1. 下载Bootstrap
    2. 在项目中将这三个文件夹复制
    3. 创建html页面,引入必要的资源文件

 

XML

1. 概念:Extensible Markup Language 可扩展标记语言

    * 可扩展:标签都是自定义的。 <user>  <student>

    * 功能
        * 存储数据
            1. 配置文件
            2. 在网络中传输
    * xml与html的区别
        1. xml标签都是自定义的,html标签是预定义。
        2. xml的语法严格,html语法松散
        3. xml是存储数据的,html是展示数据

    * w3c:万维网联盟

2. 语法:
    * 基本语法:
        1. xml文档的后缀名 .xml
        2. xml第一行必须定义为文档声明
        3. xml文档中有且仅有一个根标签
        4. 属性值必须使用引号(单双都可)引起来
        5. 标签必须正确关闭
        6. xml标签名称区分大小写
    * 快速入门:
        <?xml version='1.0' ?>
        <users>
            <user id='1'>
                <name>zhangsan</name>
                <age>23</age>
                <gender>male</gender>
                <br/>
            </user>
            
            <user id='2'>
                <name>lisi</name>
                <age>24</age>
                <gender>female</gender>
            </user>
        </users>
        
    * 组成部分:
        1. 文档声明
            1. 格式:<?xml 属性列表 ?>
            2. 属性列表:
                * version:版本号,必须的属性
                * encoding:编码方式。告知解析引擎当前文档使用的字符集,默认值:ISO-8859-1
                * standalone:是否独立
                    * 取值:
                        * yes:不依赖其他文件
                        * no:依赖其他文件
        2. 指令(了解):结合css的
            * <?xml-stylesheet type="text/css" href="a.css" ?>
        3. 标签:标签名称自定义的
            * 规则:
                * 名称可以包含字母、数字以及其他的字符 
                * 名称不能以数字或者标点符号开始 
                * 名称不能以字母 xml(或者 XML、Xml 等等)开始 
                * 名称不能包含空格 

        4. 属性:
            id属性值唯一
        5. 文本:
            * CDATA区:在该区域中的数据会被原样展示
                * 格式:  <![CDATA[ 数据 ]]>

    * 约束:规定xml文档的书写规则
        * 作为框架的使用者(程序员):
            1. 能够在xml中引入约束文档
            2. 能够简单的读懂约束文档
        
        * 分类:
            1. DTD:一种简单的约束技术
            2. Schema:一种复杂的约束技术

        * DTD:
            * 引入dtd文档到xml文档中
                * 内部dtd:将约束规则定义在xml文档中
                * 外部dtd:将约束的规则定义在外部的dtd文件中
                    * 本地:<!DOCTYPE 根标签名 SYSTEM "dtd文件的位置">
                    * 网络:<!DOCTYPE 根标签名 PUBLIC "dtd文件名字" "dtd文件的位置URL">

        * Schema:
            * 引入:
                1.填写xml文档的根元素
                2.引入xsi前缀.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                3.引入xsd文件命名空间.  xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"
                4.为每一个xsd约束声明一个前缀,作为标识  xmlns="http://www.itcast.cn/xml" 

                <students   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns="http://www.itcast.cn/xml"
                xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd">

 

JavaWeb

网络通信三要素
    1. IP:电子设备(计算机)在网络中的唯一标识。
    2. 端口:应用程序在计算机中的唯一标识。 0~65536
    3. 传输协议:规定了数据传输的规则
        1. 基础协议:
            1. tcp:安全协议,三次握手。 速度稍慢
            2. udp:不安全协议。 速度快

 

IDEA与tomcat的相关配置

是windows环境下的web服务

1. IDEA会为每一个tomcat部署的项目单独建立一份配置文件

    * 查看控制台的log:Using CATALINA_BASE:   "C:\Users\fqy\.IntelliJIdea2018.1\system\tomcat\_itcast"

2. 工作空间项目    和     tomcat部署的web项目
    * tomcat真正访问的是“tomcat部署的web项目”,"tomcat部署的web项目"对应着"工作空间项目" 的web目录下的所有资源
    * WEB-INF目录下的资源不能被浏览器直接访问。
3. 断点调试:使用"小虫子"启动 dubug 启动

 

HTTP

* 概念:Hyper Text Transfer Protocol 超文本传输协议
    * 传输协议:定义了,客户端和服务器端通信时,发送数据的格式
    * 特点:
        1. 基于TCP/IP的高级协议
        2. 默认端口号:80
        3. 基于请求/响应模型的:一次请求对应一次响应
        4. 无状态的:每次请求之间相互独立,不能交互数据

    * 历史版本:
        * 1.0:每一次请求响应都会建立新的连接
        * 1.1:复用连接

* 请求消息数据格式
    1. 请求行
        请求方式 请求url 请求协议/版本
        GET /login.html    HTTP/1.1

        * 请求方式:
            * HTTP协议有7中请求方式,常用的有2种
                * GET:
                    1. 请求参数在请求行中,在url后。
                    2. 请求的url长度有限制的
                    3. 不太安全
                * POST:
                    1. 请求参数在请求体中
                    2. 请求的url长度没有限制的
                    3. 相对安全
    2. 请求头:客户端浏览器告诉服务器一些信息
        请求头名称: 请求头值
        * 常见的请求头:
            1. User-Agent:浏览器告诉服务器,我访问你使用的浏览器版本信息
                * 可以在服务器端获取该头的信息,解决浏览器的兼容性问题

            2. Referer:http://localhost/login.html
                * 告诉服务器,我(当前请求)从哪里来?
                    * 作用:
                        1. 防盗链:
                        2. 统计工作:
    3. 请求空行
        空行,就是用于分割POST请求的请求头,和请求体的。
    4. 请求体(正文):
        * 封装POST请求消息的请求参数的

    * 字符串格式:
        POST /login.html    HTTP/1.1
        Host: localhost
        User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
        Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
        Accept-Encoding: gzip, deflate
        Referer: http://localhost/login.html
        Connection: keep-alive
        Upgrade-Insecure-Requests: 1
        
        username=zhangsan    

 

Maven

JavaWeb 知识补充

JavaWeb 知识补充

试想,如果现在有一种工具,可以把你从上面的繁琐工作中解放出来,能帮你构建工程,管理 jar 包,编译代码,还能帮你自动运行单元测试,打包,生成报表,甚至能帮你部署项目,生成 Web 站 点,你会心动吗?Maven 就可以解决上面所提到的这些问题。 

JavaWeb 知识补充

idea集成了maven