Java Web的面试复习

一. 数据库:
1. 概述:
存储和管理数据的仓库。
现在分为关系型数据库和非关系型数据库。
a. 关系型数据库:
①概述:
底层以二维表的形式保存数据的库。关系型数据库面向“增删改查”。

		②常见的关系型数据库:
			• Sql Server:微软提供,收费,适用于一些中型或大型的项目中,在java中的使用占比不高(.NET中使用的较多)
			• Oracle:甲骨文公司提供,收费,适用于一些大型或者超大型的项目中,在java中的使用占比非常高
			• mysql:瑞典MySQLAB公司提供,免费开源,适用于一些小型或者中型的项目中,在Java中的使用占比较高(小巧轻量) mariadb其实就是MySQL的一个分支,用法和MySQL完全一样。
			• DB2:IBM公司提供,收费,在一些银行、金融等行业中使用较多。在java中的使用占比也不高。
			• Sqlite:迷你数据库,嵌入式设备中(安卓、苹果手机、pad)。
	b. 非关系型数据库:
		①概述:
			       底层不是以二维表的形式保存数据的库。非关系型数据库主要“读、增”为主的场景。
			        Nosql,不仅仅是sql。
			      非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。
		②常见的非关系型数据库:
			Redis:支持多种数据结构,支持持久化操作,单线程请求。
			Memcache:可以利用多核优势,单实例吞吐量极高。
2. 数据库服务器:
	       相当于一个软件(比如MySql软件),将数据库软件安装再电脑上,当前电脑就是一个数据库服务器。就可以对外提供存储数据的服务。
		在一个数据库服务器中可以创建多个数据库,创建的每一个数据都是一个单独的库。
3. SQL语言:
	a. 概述:
		      SQL是一们用于操作关系型数据库的通用的语言(使用SQL可以操作所有的关系型数据库)。非关系型数据库不使用SQL。
	b. 作用:
		使用SQL可以操作数据库、表、表记录
		(1)创建数据库、删除数据库、修改数据库、查询数据库
		(2)创建表、删除表、修改表、查询表
		(3)新增表记录、删除表记录、修改表记录、查询表记录
		使用SQL也可以操作存储过程/视图/索引等。
	c. 与数据库的关系:
		       SQL是一个标准通用的操作关系型数据库的语言(普通话),每个数据库厂商为了增强自己数据库的功能,都提供了支持自己数据库的语言,称之为数据库的方言。方言不通用!
3.什么是表:
	一个数据库中可以创建多张表,每张表用于存储一类信息(数据库)。
4.表记录:
	一张表中可以包含多行表记录,每一行表记录用于存储某一个具体的数据。

二. MySql:
1.概述:
是最流行的关系型数据库管理系统,使用标准的 SQL 数据语言形式。
2.常用术语:
• 冗余: 用来表示存储两倍的数据, 但会使数据访问更快. 相当于redis
• 主键: 用来执行每个表的关键性数据, 并且,每个表中只有一个主键.
• 外键: 这应该是mysql的关键, 使用外键来关联不同表.
• 复合键: 将多个键组合一起来作为索引值. 一般用于复合索引
• 索引:借用一组值, 来对表进行排序. 可以比作书的目录.
• 参照完整性: 参照的完整性要求关系中不允许引用不存在的实体
3. 安装方法:
a. 安装配置:
①首先安装MySql或maraiDB软件;
②在环境变量设置新变量名MYSQL_HOME,对应的是MySql的安装路径;
③在环境变量的Path中添加:%MYSQL_HOME%\bin(可参照JDK的配置方式)。
b. 测试登录:
打开命令行工具,输入:mysql -u root -p root,即可登录MySql客户端。u后面的是用户名,p后面的是密码,指的是超级管理员。
4. 注意事项:
① SQL语句对大小写不敏感。推荐关键字使用大写,自定义的名称(库名,表名,列名等)使用小写。
② 并且在自定义名称时,针对多个单词不要使用驼峰命名,而是使用下划线连接。(例如:tab_name,而不是 tabName )
③ 每句结束后结尾要加英文的分号“;”,单词之间空格分开
5. 使用操作:
a. 库操作:
① 查看当前数据库服务器中的所有库:
SHOW DATABASES;
②创建库:
CREATE DATABASE “库名”;
create database “库名” charset “编码”; //指定utf-8编码
create database if not exists “库名” charset utf8; //再加个判断
③进入指定库:
USE “库名”;
④查看已进入的库的内容:
Select database();
⑤查看当前数据库中的所有表:
Show “表名”;
⑥删除指定库:
drop database “库名”;
drop database if exists “库名”; //加个判断,判断指定数据库是否存在
⑦查看建库时的语句(并验证数据库库使用的编码):
SHOW CREATE DATABASE 库名;
b. 表操作:
①删除表:
DROP TABLE 表名;
②创建表:
CREATE TABLE 表名(
列名 数据类型,
列名 数据类型,

列名 数据类型
);
③查看指定表的结构:
desc 表名;
④往指定表(stu)中插入记录(数据),(添加)
INSERT INTO 表名(列名1,列名2,列名3…) VALUES(值1,值2,值3…);

		⑤查看指定表的所有信息:
			SELECT * FROM 表名;
		⑥查询指定列的信息:
			SELECT 列名 FROM 表名;//多个列名之间逗号隔开。
		⑦修改指定表的指定列的信息:
			UPDATE 表名 SET 列=值;
		⑧根据条件修改指定列的信息:
			//where子句用于对记录进行筛选过滤,保留符合条件的记录,将不符合条件的记录剔除。
			UPDATE 表名 SET 列=值 WHERE 条件;
		⑨删除表中的所有记录:
			DELETE FROM 表名;
		⑩根据条件删除记录:
			DELETE FROM 表名 where 条件;
3. 数据类型:
	  a. 数值整型:
		tinyint:占用1个字节,相对于java中的byte
		smallint:占用2个字节,相对于java中的short
		int:占用4个字节,相对于java中的int
		bigint:占用8个字节,相对于java中的long
	b. 浮点类型:
		float:4字节单精度浮点类型,相对于java中的float
		double:8字节双精度浮点类型,相对于java中的double
	c.字符串:
		char(n) 定长字符串:
		       最长255个字符。当插入值长度小于指定的长度时,剩余的空间会用空格填充。(这样会浪费空间)
		varchar(n) 变长字符串:
		       最长不超过65535个字节,n表示字符数。保存数据时,按数据的真实长度存储,剩余的空间可以留给别的数据用,因此varchar不会浪费空间。
		text大文本(长文本)文件:
			最长65535个字节,一般超过255个字符列的会使用text。用在存储大型数据。
4.日期类型:
	a. 时间数据类型:
	
	b. 时间与日期函数:
		①系统时间函数 now(), current_timestamp, sysdate()。
			返回的是现在的准确时间,从年到秒(2020-10-10 12:12:20)。
5. 字段约束:
	 概论:
		字段约束/列约束 --> 约束: 限制。用来确保数据的完整性(可靠性和准确性)。
	①主键约束:
		a. 概述:
		      如果为一个列添加了主键约束,那么这个列就是主键,主键的特点是唯一且不能为空。
		b. 作用: 
		       作为一个唯一标识,唯一的表示一条表记录(作用类似于人的身份证号,可以唯一的表示一个人一样。也可作为一个可以被外键引用的有效对象。
		c. 用法:
			创建主键分为单字主键和复合主键
			单字主键创建只需在字段后边添加primary key,一般指定id为主键。
	②外键约束:
		a. 概述:
		       外键记录了表与表之间字段的联系。外键将不同表的字段关联起来,使这些数据在修改、删除时有着关联,在数据操作时维护这些数据完整性。
		b. 作用:
		       如果是要表示两张表的数据之间存在对应关系,只需要在其中的一张表中添加一个列,保存另外一张表的主键,就可以保存两张表数据之间的关系。
		c. 用法:
				foreign key(外键id) references 主键表(主键id);
			例:
				foreign key(dept_id) references dept(id);
	③非空约束:
		a. 概述:
			       如果为一个列添加了非空约束,那么这个列的值就不能为空,但可以重复。可以是空串或0。
		b. 用法:
			      在创建表的时候直接在字段类型后边添加 not null 或null,即可设置为字段非空或者空。
	④唯一约束:
		a. 概述:
		       如果为一个列添加了唯一约束,那么这个列的值就必须是唯一的(即不能重复),但可以为空,但只能出现一个空值。
		b. 用法:
		       可以直接在字段的数据类型后边直接添加unique关键字,也可以在所有字段定义之后使用[constraint <约束名>] unique(<字段名>)。
	⑤默认值约束:
		a. 概述:
			       默认值是为字段指定默认的数据值。被设置默认值的字段最好不为空,否则系统将无法确定该字段在添加时添加null还是默认值。
		b. 用法:
			       在创建表的时候直接字段类型后边添加 “default 默认数据”,对于已有的表使用set关键字:
				alter table table_name alter 字段名 set default 默认值数据;
	⑥自增约束:
		a. 概述:
			自增约束是一种由系统自动增加并填入字段数值的约束。
4. 查询表记录:
	a. 普通查询:
		select 字段1,字段2 from 表; //指定要查询的列名。
	b. 查询时去重:
		elect distinct dept,job from emp; //distinct 用来去重的属性。
	c. WHERE子句查询:
		语法:
			SELECT 列名称 | * FROM 表名称 WHERE 列 运算符 值;
		概述:
		       WHERE子句后面跟的是条件,条件可以有多个,多个条件之间用连接词(or | and)进行连接。
	d. 模糊查询:
		语法:
			SELECT 列 | * FROM 表名 WHERE 列名 LIKE 值;
		
		概述:
		        LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。可以和通配符(%、_)配合使用,其中"%"表示0或多个任意的字符。"_"表示一个任意的字符。 
	E. 多行函数查询:
		概述:
			多行函数	作用
			COUNT( 列名 | * )	统计结果集中某一列或记录行的行数。
			MAX( 列名 )	统计结果集中某一列值中的最大值
			MIN( 列名 )	统计结果集中某一列值中的最小值
			SUM( 列名 )	统计结果集中某一列所有值的和
			AVG( 列名 )	统计结果集中某一列值的平均值
			(1)多行函数不能用在where子句中,也就是不能跟在where的后面。
			(2)多行函数和是否分组有关,分组与否会直接影响多行函数执行的结果。
			(3)不统计null, 会自动处理null
		注意事项:
			• 多行函数和是否分组有关,如果查询结果中的数据没有经过分组,默认整个查询结果是一个组,多行函数就会默认统计当前这一个组的数据。产生的结果只有一个。
			• 如果查询结果中的数据经过分组(分的组不止一个),多行函数会根据分的组进行统计,有多少个组,就会统计出多少个结果。
	F. 分组查询:
		语法:
			SELECT 列 | * FROM 表名 [WHERE子句] GROUP BY 列;
		概述:
			       GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT,SUM,AVG,MAX,MIN等函数。
	G. 排序查询:
		语法:
			SELECT 列名 FROM 表名 ORDER BY 列名 [ASC|DESC];
		概述:
			       使用 ORDER BY 子句将结果集中记录根据指定的列排序后再返回。ASC(默认)升序,即从低到高;DESC 降序,即从高到低。
	H. 分页查询:
		概述:
			       在mysql中,通过limit进行分页查询。limit后面可以跟俩参数,前面的值是当前页码值乘以每页要显示的记录数,也就是要显示的第一条数据的位置,后面的是要显示的记录数。只能用sql语句在最后面。
		语法:
			limit (页码-1) *乘以 每页显示记录数, 每页显示记录数;
		页码值解析:
			      ① 将上面的算法反正退,我们可以得到,第一个数值除以后面的数在加1就等于当前的页码值。
			例:
				select * from emp limit 0,3;  --每页三条,返回第一页
				select * from emp limit 3,3;  --每页三条,返回第二页
				select * from emp limit 6,3;  --每页三条,返回第三页
			
			       ②如果不按页显示,我只要哪一行到哪一行的数据。也是一样,前面的数的值是将,要显示的第一行的行数减1(也就是开始显示的地方),在乘以要显示的最后一行的行数和第一行的差(也就是要显示的总的行数)。后面的数就是要显示的总的行数。
			例:
				SELECT * FROM tbl LIMIT 5,10;  -- 第6-15行
5. 多表查询:
	①表关系:
		一对多(多对一)、一对一、多对多。
	②(内)连接查询:
		a. 概述:
		       不能直接指定两个表名进行查询。查询两张表,其中一张表有m条记录,另一张表有n条记录,查询的结果是m*n条。查询的结果显示的是笛卡尔积。
		b. 用法:
		      我们需要通过WHERE子句将错误数据剔除,保留下来的就是我想要的数据。也可以使用内连接查询inner join加on。
		例:
			--查询部门表和员工表,员工所属的部门编号等于部门的编号
			select * from dept,emp where dept_id=dept.id;
			--内连接查询,  效果同上
			select * from dept inner join emp on dept_id=dept.id;
	③左外连接查询:
		a. 概述:
			       可以将左边表中的所有记录都查询出来,右边表只显示和左边相对应的数据,如果左边表中某些记录在右边没有对应的数据,右边显示为null即可。
		b. 用法:
				Select 字段名 from 表名1 left join 表名2 on 条件;
			例:
				--左连接查询, 把左边表中的内容都查出来
				select * from dept left join emp on dept_id=dept.id; 
	③右外连接查询:
		a. 概述:
			       可以将右边表中的所有记录都查询出来,左边表只显示和右边相对应的数据,如果右边表中某些记录在左边没有对应的数据,可以显示为null。
		b. 用法:
				Select 字段名 from 表名1 right join 表名2 on 条件;
			例:
				--右外连接查询, 把右边表中的内容都查出来
				select * from dept right join emp on emp.dept_id=dept.id;
	④全外连接查询:
		a. 概述:
			       想将两张表中的所有数据都查询出来(左外+右外并去除重复记录),可以使用全外连接查询,但是mysql又不支持全外连接查询。
		b. 用法:
			      在MySQL中,是把连个表的执行结果拼在一起, 前提是列数的一样,列名和顺序要对应,使用union属性将左右外连接的查询语句拼接起来(默认是去重的),union all可以不去重。
			例:
				select * from dept right join emp on emp.dept_id=dept.id
				union
				select * from dept left join emp on dept_id=dept.id; 
	⑤子查询:
		a. 概述:
			       将一个sql语句的查询结果作为另一个sql的where子句的条件。也就是将两个句拼接, 将数据变成动态的,  
		b. 用法:
				将一个sql语句用括号括起来,用在运算符的后面。
			例:
				--求出与刘沛霞从事相同职位的员工
				select name,job from emp 
				where 
				job=(select job from emp where name='刘沛霞');
6.数据库备份与恢复:
	①备份:
	       a. 在cmd窗口中(未登录的状态下),可以通过如下命令对指定的数据库进行备份,键入密码,如果没有提示,即表示备份成功!
			mysqldump -u用户名 -p 数据库的名字 > 备份文件的位置
		b. 也可以一次性备份所有库,例如:
			mysqldump -uroot -p --all-database > d:/all.sql
	②恢复:
		a. 在cmd窗口中(未登录的状态下),可以通过如下命令对指定的数据库进行恢复:
			mysql -u用户名 -p 数据库的名字 < 备份文件的位置
		b. 在cmd窗口中(已登录的状态下),可以通过source执行指定位置的SQL文件:
			source sql文件的位置
7. 数据库事务:
	1)概述:
		     是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。MySQL每执行一条SQL语句,都是一个单独的事务。因为底层在执行SQL语句之前会自动开启事务,在SQL语句执行完后,会立即结束事务!
	2)四大特性:
		①原子性(Atomicity):
		       事务中所有操作是不可再分割的原子单位。事务中所有操作要么全部执行成功,要么全部执行失败。
		②一致性(Consistency):
		       事务执行后,数据库状态与其它业务规则保持一致。如转账业务,无论事务执行成功与否,参与转账的两个账户金额之和在事务前后应该是保持不变的。
		③隔离性(Isolation):
		        隔离性是指在并发操作中,不同事务之间应该隔离开来,使每个并发中的事务不会相互干扰。也就是说,在事中务查看数据更新时,数据所处的状态要么是另一事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看到中间状态的数据。
		④持久性(Durability):
		        一旦事务提交成功,事务中所有的数据操作都必须被持久化到数据库中,即使提交事务后,数据库马上崩溃,在数据库重启时,也必须能保证通过某种机制恢复数据。
	3)手动管理事务:
		      在执行SQL语句之前,先执行 strat transaction,这就开启了一个事务(事务的起点),然后可以去执行多条SQL语句,最后要结束事务,commit表示提交,即事务中的多条SQL语句所做出的影响会持久化到数据库中。或者rollback,表示回滚,即回滚到事务的起点,之前做的所有操作都被撤消了!
	4)事务隔离级别:
		①READ UNCOMMITTED(读未提交数据):
			      安全性最差,可能出现任何事务并发问题(比如脏读、不可以重复读、幻读等)。但性能最好(不使用!!)
		②READ COMMITTED(读已提交数据):(Oracle默认)
			       安全性较差,性能较好,可以防止脏读,但不能防止不可重复读,也不能防止幻读;
		③REPEATABLE READ(可重复读):(MySQL默认)
			       安全性较高,性能较差,可以防止脏读和不可重复读,但不能防止幻读问题;
		④SERIALIZABLE(串行化)
			       安全性最高,不会出现任何并发问题,因为它对同一数据的访问是串行的,非并发访问;性能最差;(不使用!!)。MySQL的默认隔离级别为REPEATABLE READ,即可以防止脏读和不可重复读
			一般不需要设置隔离级别,默认的就行。
		
8. 并发读:
	1)概述:
		       多个事务对相同的数据同时进行操作,这叫做事务并发。如果没有采取必要的隔离措施,可能会导致各种并发问题,破坏数据的完整性等。这些问题中,其中有三类是读问题,分别是:脏读、不可重复读、幻读。
	2)出现的问题:
		①脏读(dirty read):
			在一个事务中,读取到另一个事务未提交更新的数据,即读取到了脏数据;
			例:
			      A给B转账100元但未提交事务,在B查询后,A做了回滚操作,那么B查询到了A未提交的数据,就称之为脏读。
		②不可重复读(unrepeatable read):
			       对同一记录的两次读取结果不一致,因为在两次查询期间,有另一事务对该记录做了修改(是针对修改操作)
			例:
			       在事务1中,前后两次查询A账户的金额,在两次查询之间,另一事物2对A账户的金额做了修改(并且也提交了事务),此种情况可能会导致事务1中,前后两次查询的结果不一致。这就是不可重复读。
		③幻读(虚读)(phantom read):
			       对同一张表的两次查询结果不一致,因为在两次查询期间,有另一事务进行了插入或者是删除操作(是针对插入或删除操作);

二. JDBC:
1. 概述:
JDBC(Java Database Connectivity) Java数据库连接。利用Java语言/程序连接并访问数据库的一门技术。
2. 作用:
用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。对关系型数据库进行操作。
3. 实现步骤(API):
①注册数据库驱动:
a.概念:
让JDBC程序加载mysql驱动程序,并管理驱动,驱动程序实现了JDBC API定义的接口以及和数据库服务器交互的功能,加载驱动是为了方便使用这些功能。
b. 用法:
Class.forName(“com.mysql.jdbc.Driver”);
②获取数据库连接:
a.概念:
也就是获取数据库的详情URL信息,如:使用的SQL程序、端口、库名、时间区、编码集、用户名、密码等;
b. 用法:
DriverManager.getConnection() 用于获取数据连接,返回的Connection连接对象是JDBC程序连接数据库至关重要的一个对象。
Connection conn = DriverManager.getConnection(
“jdbc:mysql://localhost:3306/jt_db?characterEncoding=utf-8”,
“root”, “root” );
③获取传输器:
a.概念:
用于向数据库服务器发送sql语句的Statement传输器对象。
b. 用法:
用数据库连接的对象实例,使用createStatement()方法,获取到传数器对象。
Statement stat = conn.createStatement();
④发送SQL到服务器执行并返回执行结果:
a.概念:
编写sql,并将sql发生到数据库,在获取结果。
b. 用法:
用传输器的对象实例的executeQuery()方法,将sql发生到数据库执行。并获取到执行结果,输出执行结果。如果是查询操作,则返回的是ResultSet对象,循环对象的next()方法,就可以获取到数据信息。
String sql = “delete from account where name=‘john’”;
int rows = stat.executeUpdate( sql );
//处理结果
System.out.println( "影响行数: "+rows );
⑤释放资源:
a.概念:
此处释放资源必须按照一定的顺序释放,越晚获取的越先关闭。所以先关闭 rs对象,再关闭stat对象,最后关闭conn对象。
b. 用法:
使用对象实例,调用close()方法,将释放资源的代码配合try-catch并放在finally里面。确保它不管结果如何,也会释放资源。
rs.close();
stat.close();
conn.close();
三. 数据库连接池:
1.概述:
就是将连接存放在容器中,供整个程序共享,可以实现连接的复用,减少连接创建和关闭的次数,从而提高程序执行的效率!
2.用法:
可以使用c3p0或其他连接池,先导包,再设置配置文件,将数据库URL设置,在通过功工具API获取连接对象。再进行数据操作。
四. HTML:
1. 概述:
一种超文本标记语言,用于开发网页的一门技术,是最基础的开发网页的语言。由W3C组织提供(CSS/xml)。
2. 使用细节:
(1)通常以 .htm或.html 为后缀!
(2)由浏览器负责解析并显示(浏览器就是一个html解析器)
(3)是文档的一种(如txt/word/ppt/pdf等)
3. 结果详解
(1) 文档声明, 用来声明HTML文档所遵循的HTML规范和版本上面是html5.0的声明, 也是目前最常用的版本
(2) 头部分, 用来存放HTML文档的基本属性信息, 比如网页的标题, 文档使用的编码等, 这部分信息会被浏览器优先加载.
(3) 体部分, 用来存放网页可视化数据. 即真正的网页数据
(4) 声明网页的标题
(5) 用来通知浏览器使用哪一个编码来打开HTML文档, 这个编码一定要和文件保存时的编码保持一致, 才不会出现中文乱码问题.
4. 语法:
①标签:
a. 概述:
也叫做标记、元素等。分为开始标签和接受标签。开始标签和结束标签之间还可以包含其他内容。
b. 开始标签:

c. 结束标签:

d. 自闭标签:


等。
②属性:
a. 概述:
在标签上可以声明属性(属性不能独立存在,必须声明在标签上)。可以声明多个属性,多个属性之间用空格分隔,属性的值可以使用单引号或者双引号引起来。
b. 格式:


③注释:
a. 概述:
为代码添加解释说明,将一些暂时不需要执行的代码注释,浏览器对于注释中的内容不会解析,也不会显示!
b. 格式:

④空格和换行:
a. 概述:
在浏览器中,多个连续的空白字符(空格、制表符tab、换行)会被浏览器显示为一个空格。
b. 格式:
可以使用
标签做换行
可以使用 或 做空格
5.常用的标签:
1. 图像标签:
1)概述:
通过img标签可以在网页中插入一副图像。
2)格式:

其中src属性用于指定图片的路径
width属性用于指定图片的宽度
height属性用于指定图片的高度0
2 超链接标签:
1)概述:
超链接就是a标签,通过a标签可以在网页中创建指向另外一个文档的超链接,点击超链接可以跳转到另外一个网页(图片/下载路径等)。
2)格式:
01-第一个网页.html

百度一下,你就不知道
其中 href 属性用于指定点击超链接后将要跳转到的URL地址
target属性用于指定以何种方式打开超链接
_self:默认值, 表示在当前窗口中打开超链接
_blank:表示在新的窗口中打开超链接

	3. 表格标签:
		1. 概述:
			用来创建表格的专用标签。
		2)格式:
			<table><!-- 用于在网页中定义一个表格 -->
			    <tr><!-- 用于定义一个表格行 -->
			        <th>表头1</th>
			        <th>表头2</th>
			        <th>表头3</th>
			    </tr>
			    <tr>
			        <td>11</td><!-- 用于定义一个单元格 -->
			        <td>12</td>
			        <td>13</td>
			    </tr>
			</table>
			table  --  用于在网页中定义一个表格
			tr --  用于定义表格中的行
			td --  用于定义表格中的单元格
			th --  用于定义表头行中的单元格(th中的文本默认居中,并且加粗)
	4. 表单标签:
		1. 概述:
		      用于向服务器提交数据,可以包含表单项标签,在表单项中可以填写数据(比如用户名、密码等),填写完成后通过提交表单,可以将表单中的数据提交给相应的服务器。
		2格式:
			<form action="地址" method="提交方式"></form>
			       其中action属性用于指定表单的提交地址,例如,将action指向百度服务器,就意味着将来填写完表单后,提交表单将会把表单中的数据提交给百度服务器。
			      method="GET/POST" 属性是用于指定表单的提交方式,常用的就是GET和POST提交。
	5. 表单项标签:
		1. 概述:
			可以配合表单标签使用,也可以单独使用。
		2.格式:
			①input元素:
				(1)普通文本输入框(比如:用户名/昵称/邮箱/验证码等)
				<input type="text" name="username"/>
				(2)密码输入框(比如:密码/确认密码等)
				<input type="password" name="pwd"/>
				(3)单选框(比如:性别/部门等)
				<input type="radio" name="gender"/>男
				(4)复选框/多选框(比如:爱好/岗位等)
				<input type="checkbox" name="like"/>
				(5)普通按钮,它本身没有功能,但可以通过js为其添加功能或添加行为。
				<input type="button" value="换一张"/>
				(6)提交按钮(比如:提交/注册/登录)
				<input type="submit" value="提交/注册/登录"/>
			②select、option标签:
				select用于定义一个下拉选框
				option用于定义下拉选框上的选项
				selected设置当前option选项默认被选中
				<select name=*"city"*>
				    <option value="beijing">北京</option>
				    <option selected="selected">广州</option>
				    <option>深圳</option>
				</select>
			③textarea多行文本输入区域:
				cols属性: 用于设置文本输入框的列数(宽度)
				rows属性: 用于设置文本输入框的行数(高度)
				placeholder属性: 设置输入框中的提示消息!
				<textarea name=*"description"* cols=*"30"* rows=*"5"*
				placeholder=*"请输入描述信息..."*></textarea>
6. 执行过程:
			1) 当浏览器请求服务器中的某一个HTML文件时(例如:localhost/09-jsp/test.html),服务器会根据请求资源的路径去寻找该文件:
			2) 如果找到了,服务器会将html文件的内容作为响应实体发送给浏览器,浏览器再解析html并显示在网页上。
			3) 如果没有找到,服务器将会响应一个404页面,通知浏览器请求的资源不存在。

五. CSS:
1. 概述:
层叠样式表,用于修饰、渲染网页的一门技术,可以实现将设置样式的css代码和展示数据的html代码进行分离,增强了网页的展示能力!
2. 再HTML中引入CSS:
①通过style属性引入:
不推荐使用!如果属性太多,容易造成页面结构的混乱,不利于后期的维护。并且将样式代码写在标签上,样式代码只对当前标签生效,代码无法复用!

这是一个div…

②:通过style标签引入:
这种方式是将所有的css属性代码集中在一个style标签内部统一管理,这种方式不会造成页面结构的混乱,并且可以实现代码的复用!

③通过link连接引入外部的css文件:
这种方式是将所有的css代码集中在一个单独的css文件中统一管理,真正的实现了将css代码和html代码的分离,实现了代码的复用。

href指向css文件的名称。
3. 选择器:
①概述:
选择器就是能够在html中帮助我们选中元素进行修饰的一门技术。
②标签名选择器:
a. 概述:
通过元素名称(或标签名称)选中指定名称的所有标签
b. 格式:
元素名/标签名{ css样式… }
例:
span{ / 选中所有的span元素 /
background-color:#efbdef;
font-size: 22px;
font-weight: bolder;
}
③class选择器:
a. 概述:
可以为元素添加一个通用的属性 – class,通过class属性为元素设置所属的组,class值相同的元素则为一组。通过class值可以选中这一组的元素,为元素添加样式,一个元素也可以设置多个class值,多个class值中间用空格分隔。
b. 格式:
.class值{ css样式… }
例:
.s1{ /
选中所有class值为s1的元素 /
background: #faf77b;
border: 2px solid cyan;
}
④id选择器:
a. 概述:
通过标签上通用的属性id,可以为标签设置一个独一无二的编号(id值应该是唯一的),通过id值可以唯一的选中一个元素。
b. 格式:
#id值{ css样式 }
例:
#p1{ /
选中id值为p1的元素 /
font-size:24px;
color: #a06649;
text-indent: 20px;
}
⑤后代选择器:
a. 概述:
选中指定元素内部的指定后代元素。
b. 格式:
祖先 后代{ css样式… }
例:
p span{ /
匹配所有p元素内部的所有span元素 /
font-size:18px;
color: red;
background: pink;
}
⑥属性选择器:
a. 概述:
在选择器选中元素的基础上,根据元素的属性条件筛选/过滤元素。
b. 格式:
选择器[属性条件]…{ css样式 }
例:
input[type=‘text’]{ /
匹配所有的input并且type值为text的元素 /
background: #FF7CCC;
font-size: 22px;
text-indent: 15px;
}
4.常用属性:
①文本属性:
1)text-align:设置元素中文本水平对齐方式,其常用取值为:
left: 默认值。左对齐
right: 右对齐
center: 居中对齐
justify: 两端对齐
2)text-decoration:设置文本的下划线样式,其常用取值为:
underline: 有下划线
none: 没有下划线
3)text-indent:设置文本首行缩进,单位: 像素/百分比
4)letter-spacing:设置字符间隔/间距,其常用取值为:
normal
像素值
5)text-shadow:设置字体阴影,其取值为:
像素值 像素值 像素值 颜色值
第一个值为阴影水平位移,第二个值为阴影垂直位移,第三个值为阴影扩散值,第四个值为阴影颜色
②字体属性:
font-size:设置字体大小
font-weight:设置字体粗细 bold、bolder、normal 100/200/300…/900
font-family:设置字体,比如微软雅黑、黑体、楷体等
color:设置字体颜色
③背景属性:
background-color:设置背景颜色;
background-image:设置背景图片,url(‘图片的路径’);
background-repeat:设置或检索对象的背景图像是否及如何铺排,常用取值:
repeat(默认值,重复排列)
repeat-x(横向重复排列,但纵向不重复)
repaet-y(纵向重复排列,但横向不重复)
no-repeat(不重复)
background-position:设置或检索对象的背景图像位置;
background: 背景颜色 背景图片 背景图片是否重复 背景图片的位置。
④边框:
border:2px solid red; – 设置元素的边框(可以同时设置边框的宽度、样式、颜色)
border属性可以拆分为如下设置:
border-width: 2px; – 设置元素边框的宽度
border-style: solid; – 设置元素边框的样式
border-color: red; – 设置元素边框的颜色
其中border-width、border-style、border-color也可以按照上右下左方向进行拆分,以border-width为例:
border-top-width: 2px; – 设置上边框的宽度
border-left-width: 2px; – 设置左边框的宽度
border-right-width: 2px; – 设置右边框的宽度
border-bottom-width: 2px; – 设置下边框的宽度
⑤其他属性:
width:设置元素的宽度
height:设置元素的高
margin: 设置元素的外边距 :margin-top 上外边框 margin-right 有外边距 margin-bottom 下外边距 margin-left 左外边距.
margin: 10px 20px 30px 40px ; 对应上 右 下 左 外边距;
margin: 10px 20px 30px ; 对应上 左右 下 , 左右外边距相等
margin:10px 20px; 对应 上下 左右 ; 上下相等 左右相等
⑤颜色设置:
1)设置颜色名:
red、green、blue、yellow、cyan、pink、white、black等
2)设置#加上六位的十六进制数值:
#FF0000(red)、#00FF00(green)、#0000FF(blue)、#FFFF00(yellow)、#00FFFF(cyan)等
3)设置rgb颜色值:
rgb(255,0,0) 、rgb(0,255,0) 、rgb(0,0,255) 、rgb(255,255,0) 、rgb(0,255,255) 等
(red) (green) (blue) (yellow) (cyan)
⑥元素类型:
1)块级元素(block):
默认情况下,块级元素独占一行,可以设置宽和高,如果设置了就是设置的宽和高,如果不设置宽和高,其中宽是默认填满父元素,而高是由内容决定(由内容支撑)。比如: div/p/h1~h6/form/table 等元素都是块级元素
2)行内元素(inline):
默认情况下,多个行内元素可以处在同一行,不能设置宽和高,比如: span/input/img/i/b 等元素都是行内元素。
3)行内块元素(inline-block):
既具备行内元素的特征(可以同行显示),还具备块级元素的特征(可以设置宽和高)。
六. JS:
1. 概述:
全称叫做JavaScript,简称叫做JS,运行在浏览器中,负责实现网页中的动画效果,或者是实现表单校验等功能。
2. 特点:
(1)JS是一门直译式的语言(边解释边执行,没有编译的过程)
(2)JS是一门基于对象的语言(JS中没有类的概念,也没有编译的过程)
JS中是有对象的(内置对象、自定义对象)
(3)JS是一门弱类型的语言(Java:强类型)
在java中:
String s = “abc”;
int n = 100;
在JS中:
var s = 100;
s = “abc”;
s = true;
s = [];
s = function(){}
3. 优势:
(1)JS具有良好的交互性
(2)JS具有一定的安全性(只能在浏览器内部运行,不能访问浏览器以外的资源)
(3)JS具有跨平台性(JS 浏览器)
( JS语言是跨平台的,是因为有浏览器,但浏览器不跨平台
Java语言是跨平台的,是因为有虚拟机,但虚拟主机不跨平台 )
4. 在HTML中使用:
①在script标签内部可以书写JS代码:
a. 概述:
在head或者body标签内部可以添加一个script标签,在script标签内部可以直接书写JS代码!
b. 格式:

③语法:
1)注释格式:
JS的注释符号和Java的注释符号相同。
// 单行注释内容
/ 多行注释内容 /
2)数据类型:
a. 数值类型:
所有的数值在底层都是浮点型,但是在处理和显示的过程中会自动的和整型进行转换。
例如:2.4+3.6=6
特殊值:Infinity(无穷大) / -Infinity(负无穷大) / NaN(非数字)
b. 字符串类型:
字符串类型属于基本数据类型,字符串常量可以使用单引号或者使用双引号引起来。也有对应的包装对象(String),在需要时会自动的和包装对象进行转换。
var s1 = “Hello JS”;
var s2 = new String(“Hello JS”);
c. 布尔类型:
布尔类型的值有两个,分别为true和false。
d. undefined:
值只有一个,就是undefined,表示变量未定义(但不是指对象没有声明)。是指声明了变量,但没有为变量赋值,该变量的值就是undefined。
e. null:
null类型的值也只有一个,就是null,表示空值。可以作为函数的返回值,表示函数返回的是一个空的对象。
3)运算符:
JS和Java中的运算符大致相同。
算术运算符: +,-,
,/,%,++,–
赋值运算符: =,+=,-=,*=,/=,%=
比较运算符: ==,!=,>,>=,<,<=
位运算符: & , |
逻辑运算符: && ,||
前置逻辑运算符: ! (not)
三元运算符: 表达式 ? 表达式 : 表达式
。。。
4)JS语句:
a. if分支结构:
和Java一样。
b. switch语句:
和Java一样。
c. for循环语句:
和Java一样。
d. while循环:
和Java一样。
④数组:
a. 概述:
Array 对象用于在单个的变量中存储多个值。JS中的数组可以存储任意类型的数据,JS中的数组长度是可以被任意改变的。
b. 声明:
//声明一个空数组,长度为零
var arr1 = [];
//声明一个数组,并为数组设置初始值
var arr2 = [“Hello”, 111, false, new Object() ];
//声明一个空数组,长度为零
var arr3 = new Array();
//声明一个数组,并为数组设置初始值
var arr4 = new Array(“Hello”, 111, false, new Object());

	⑤函数:
		a. 概述:
			       函数就是一个具有功能的代码块, 可以反复调用,包裹在花括号中的代码块,前面使用了关键词 function。
		b. 声明:
			function 函数名称([参数列表]){
				函数体
			}
			或
			var 变量名/函数名 = function([参数列表]){
				函数体
			}

七. jQuery:
1. 概述:
是一门轻量的、免费开源的JS函数库(就是JS的简单框架),简化js的开发。
2. 优势:
(1) 可以极大的简化JS代码
(2) 可以像CSS选择器一样获取html元素
(3) 可以通过修改css属性控制页面的效果
(4) 可以兼容常用的浏览器
3. 用法:
下载依赖包,放入配置文件夹中,引入方式和JS文件一样。


5. 选择器:
选择指定的标签,对标签及标签内的内容进行操作。
①基本选择器:
1)元素名选择器 :
$(“div”) – 选中所有的div元素
$(“span”) – 选中所有的span元素

		2)class/类选择器:
			$(".s1") -- 选中所有class值为s1的元素(class值为s1的元素可能是任何元素)
			$("span.s1") -- 选中所有class值为s1的span元素
		
		3)id选择器:
			$("#one") -- 选中id为one的元素
		
		4)多元素选择器:
			$("div,span,.s1,#one") -- 选中所有的div元素,以及所有的span元素,以及所有class值为s1的元素,以及id为one的元素
	②层级选择器:
		$("div span") -- 选中所有div内部的所有span元素
		$("#one span") -- 选中id为one的元素内部的所有span元素
		
		$("#two+span") -- 选中id为two的元素后面紧邻的span兄弟元素
		$("#two").next("span") -- 选中id为two的元素后面紧邻的span兄弟元素
		$("#two").prev("span") -- 选中id为two的元素前面紧邻的span兄弟元素
		
		$("#two~span") -- 选中id为two的元素后面所有的span兄弟元素
		$("#two").nextAll("span") -- 选中id为two的元素后面所有的span兄弟元素
		$("#two").prevAll("span") -- 选中id为two的元素前面所有的span兄弟元素
		
		$("#two").siblings("span") -- 选中id为two的元素前、后所有的span兄弟元素
	④基础过滤器:
		1) 选中第一个div元素
			$("div:first")
			$("div:eq(0)")
			$("div").eq(0)
		
		2) 选中最后一个div元素
			$("div:last")
			$("div:eq(-1)")
			$("div").eq(-1)
		
		3) 选中第n+1个div元素(n从零开始)
			$("div:eq(n)")
			$("div").eq(n)
6. 对HTML元素操作:
	1)创建元素:
		$("<div></div>") -- 创建一个div元素,返回的是一个表示div元素的jQuery对象。
		$("<div>xxxx</div>") -- 创建一个包含内容的div元素,返回的是一个表示div元素的jQuery对象。
	2)添加子元素:
		$parent.append( $child ) -- 父元素调用方法添加子元素
		$("body").append( "<div>我是新来的...</div>" ); -- 往body元素内部追加一个div子元素
	3)删除元素:
		$("div").remove() -- 删除所有的div元素。
	4)替换元素:
		$("div").replaceWith("<p>我是来替换的…</p>")
7. 函数使用:
	1)html()函数 (类似于js中的innerHTML属性) 
		      用于获取或设置元素的内容,比如为div、span、p、h1、table、tr、td等元素设置内容。
			$("div").html() -- 获取所有div中的第一个div的内容
			$("div").html("xxxx") -- 为所有div设置内容
	2)text()函数 (类似于js中的innerText属性,innerText在部分浏览器中不兼容)
		用于获取或设置元素的文本内容。
			$("div").text() -- 获取所有div中的所有文本内容
			$("div").text("xxxx") -- 为所有div设置文本内容
	3)val()函数 (类似于js中的value属性)
		获取或设置表单项元素的value值(input/select/option/textarea)。
			$("input").val() -- 获取所有input元素中的第一个input元素的value值
			$("input").val(值) -- 为所有的input元素设置value值
	4)prop()函数 
		用于获取或设置元素的属性值。
			$("#inp").prop("name"); //获取id为inp元素的name属性值, 返回useranme
			$("#inp").prop("name","user"); //为id为inp的元素设置name属性值, name属性值就会变成user
	5)css()函数
		用于获取或设置元素的css属性值。
			$("#div1").css("width") -- 获取id为div1元素的宽度
			$("#div1").css("width","200px") -- 设置id为div1元素的宽度为200px
	6)each() 函数
		$(selector).each(function( index,element ){})
		-- each()函数可以遍历$(selector)选择器选中的所有元素(即每次都选择器选中的元素中获取一个元素,并执行function 函数)
	7)show()/hide() 函数
		show() -- 设置元素由隐藏变为显示
		hide() -- 设置元素由显示变为隐藏
	8)toggle()/slideToggle()
		toggle() -- 切换元素的显示状态, 如果元素是显示的, 则切换为隐藏, 否则切换为显示。
		slidToggle() --切换元素的显示状态, 如果元素是显示的, 则切换为隐藏,否则切换为显示,切换为显示为下拉状态,隐藏为收缩状态。![在这里插入图片描述]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值