web阶段概念语法----学习笔记

web学习笔记大纲

    • 一、Oracle数据库
      • 1.概念
      • 2.sql命令(增删改查)
        • 1)select命令
        • 2)insert命令
        • 3)update命令
        • 4)delete命令
      • 3.函数--- oracle提供的功能函数(单行函数、组函数)
        • 1)单行函数
        • 2)组函数
      • 4.伪列(rownum、rowid)
      • 5.子查询
        • 1)子查询结果是单行单列
        • 2)子查询结果是多行一列(多个值)
        • 3)子查询结果是多行多列
        • 4)关联子查询
      • 6.表连接
        • 1)内连接
        • 2)外连接
        • 3)自连接
        • 4)多表连接
      • 7.sql命令的分类
        • 1)概念区分
        • 2)sql命令区分
      • 8.建表
        • 1)合法标识符
        • 2)数据类型
        • 3)约束类型
      • 9.数据库里的其它对象
        • 1)序列sequence
        • 2)视图view
        • 3)索引index
      • 10.事务(transaction)
        • 1)概念
        • 2)原理
        • 3)边界
        • 4)数据安全 --- 每一行记录都有一把锁("行级锁")
        • 5)事务的四大特性(ACID)
    • 二、JDBC
      • 1.概念
      • 2.jdbc的组成
      • 3.搭建环境(导入jar包)
      • 4.第一个jdbc程序
        • 1)注册Driver(加载驱动)
        • 2)获取数据库连接
        • 3)创建Statement(sql命令的传送工具)
        • 4)执行sql命令(传送)
        • 5)处理结果集
        • 6)释放资源
      • 5.带参sql命令的执行
        • 1)使用Statement执行带参sql
        • 2)使用PreparedStatement执行带参的sql
      • 6.工具类 -- JdbcUtil
      • 7.O-R mapping
      • 8.DAO(date access object 数据访问对象)
      • 9.Service(业务层)
      • 10.项目结构
      • 11.日期处理
    • 三、HTML
      • 1. 概念
      • 2. html说明
      • 3. 基本语法
      • 4. 根标签
      • 5. head标签
      • 6. body标签
      • 7. 基础标签
      • 8. 列表标签
      • 9. 图片标签
      • 10. 超链接标签
      • 11. 表格标签 【重点】
      • 12. 表单标签【重点******】
        • 1)概念
        • 2)定义
        • 3)常见的表单元素
    • 四、CSS
      • 1.概念
      • 2. 网页里嵌入css代码
        • 1)行内样式 --- 通过标签的style属性来设置css样式
        • 2)内嵌样式 -- 集中统一将css代码定义在head标签里
        • 3)外部样式文件
        • 4)注意事项
      • 3. 常见属性
      • 4. 与css配合的标签
        • 1)span标签
        • 2)盒子模型
        • 3)div标签
    • 五、Servlet
      • 1.概念
      • 2.将开发好的servlet程序部署到tomcat上
        • 1)搭建环境 --- 将开发所需各种资源引入到项目中
        • 2)实现Servlet程序的三种方式
        • 3)web项目包作用图解
        • 4)写配置文件web.xml
        • 5)启动服务器,访问程序
        • 6)常见错误
      • 3.client向server发送请求的方式
      • 4. Servlet程序的生命周期
      • 5.采用myeclipse工具自动部署web应用
      • 6.多个servlet配合完成client端的一个请求
        • 1)forward (请求转发)
        • 2)请求重定向
      • 7.Cookie
        • 1)概念
        • 2 ) API
      • 8.HttpSession
        • 1) 是一个作用域 , 可以存放命名属性
        • 2) 获取HttpSession对象
        • 3) 特点
        • 4) 使用场景
        • 5)关于session的有效存活时间长短
      • 9.ServletContext
      • 10.连接池
      • 11.过滤器
      • 12.监听器(Listener)
    • 六、JSP
      • 1.概念
      • 2.文件特点
      • 3.Jsp的原生标签:脚本 指令 动作
      • 4.指令元素:页面 包含 标签库
      • 5.动作元素:包含动作 转发动作
      • 6.Jsp里的隐含对象(内置对象)
      • 7.EL(expression language)表达式语言
      • 8.JSTL(jsp standerd tag library)JSP标准标签库
      • 9.MVC编程思想
    • 七、Struts2框架
      • 1.简介
      • 2.搭建环境
      • 3.跳转方式
      • 4.收参
      • 5.扩充知识
      • 6.package标签
      • 7.实现Action类的方式
      • 8.DMI(dynamic method invoke)动态方法调用
      • 9.拦截器
      • 10.对于jsp文件的安全问题
      • 11.文件上传
      • 12.文件下载
      • 13.图片验证码
    • 八、mybatis框架
      • 1.简介
      • 2.搭建环境
      • 3.写映射文件
      • 4.注册映射文件
      • 5.service层代码
      • 6.DBUtil类的封装
      • 7.映射文件的特殊写法
      • 8.配置文件的优化 --mybatis-config.xml
      • 9.关联关系数据的处理
        • 1)多对一
        • 2)一对多
        • 3)一对一
        • 4)多对多
      • 10.动态sql
      • 11.mybatis的缓存机制
    • 九、JavaScript
      • 1.特点
      • 2.作用
      • 3.基础语法
      • 4.函数
      • 5.对象类型
      • 6.数组类型
      • 7.复合数据类型
      • 8.代码的执行方式
      • 9.监听器
      • 10.事件代码的注意事项
      • 11.DOM编程
      • 12.BOM编程
    • 十、JQuery框架
      • 1.概念
      • 2.特点
      • 3.搭建环境
      • 4.基础语法
      • 5.获取Jquery对象的方式
      • 6.jquery对象的常见功能(函数)
      • 7.jquery中的事件添加
      • 8.jquery中的其它功能函数

一、Oracle数据库

1.概念

概念:数据库是一种存储管理数据的软件,全称RDBMS(关系数据库管理系统),简称数据库(db)

数据库里常见的基本概念
(1)表(table): 二维表,实际负责数据的存储
(2)行(row): 存放一组具体的业务数据,也称为"记录"
(3)列(column): 描述了业务数据里的一个具体的属性,也称为"字段"
-主键(primary key): 唯一表示表里的一条记录,非空唯一
-外键(foreign key): 用来体现两张表数据之间的关系

数据库服务器
1.OracleServiceXE提供数据管理服务
2.OracleXETNSListener

内置客户端
sqlplus: oracle提供的内置的基于dos界面的客户端软件 输入命令sqlplus 用户名/密码
isqplus: oracle提供的基于浏览器形式的客户端软件(图形界面)
-链接: http://127.0.0.1:8080/apex

解锁hr用户:
1.通过isqlplus客户端解锁
2.通过sqlplus命令行解锁
(1)sqlplus sys as sysdba
(2)不用输入口令,直接回车
(3)alter user hr account unlock;
(4)alter user hr identified by 密码;
(5)exit

2.sql命令(增删改查)

1)select命令

-- 基本查询操作
select 字段名1,字段名2,字段名3 from 表名; --查询指定字段
select * from 表名; -- 查询全部字段(效率低,不建议使用)
select 字段名 别名 from 表名; -- 起别名(不区分大小写,默认是大写字母)
select 字段名 "别名" from 表名; -- 起别名(区分大小写)
select 字段名1||'_'||字段名2 别名 from 表名; -- 字符串拼接
select distinct 字段名1,字段名2 from 表名; -- 去除查询结果中字段名1和字段名2都相同的数据
-- 排序
select * from 表名 order by 字段名1 asc(默认,可不写); -- 按照字段名1进行升序排列
select * from 表名 order by 字段名2 desc; -- 按照字段名2进行降序排列
注意: 排序对象可以是字段名,别名,列号,如果有多个字段名,按顺序依次排序,null值在oracle里默认是最大值
-- 条件查询
select * from 表名 where 条件;
例如: 
select * from employees where salary>=10000;
select * from employees where between 区间1 and 区间2; --区间判断
select * from employees where not between 区间1 and 区间2;
select * from employees where department_id in(1,2,3); --枚举查询
select * from employees where department_id not in(1,2,3);
select * from employees where department_id is null; --空值查询
-- 模糊查询
select * from 表名 where 字段名1 like 占位符值1; 
例如:

--转义字符,escape关键字指定某个字符为转义字符
select * from employees where last_name like 'S\_%' escape '\'; 
注意: % 表示0-n个字符, _ 表示一个字符

根据字段名查询表: select TABLE_NAME from user_tab_columns where column_name='需要查询的字段名';

2)insert命令

语法: insert into 表名 values(值1,值2,值3…);

-- 全表插入
insert into student values(1,'hehe','13810020030','[email protected]',sysdate);
insert into student values(2,'haha','12345678910','[email protected]',null);
注意: 1.values后值的个数,类型,数量必须与表里的字段保持一致
	  2.如果不方便给定值的字段(可以为空字段)必须使用null占位

-- 选择插入
insert into student(id,name,mobile,email) values(3,'lala','12345678902','[email protected]');
注意: 对于表里非空或者没有默认值的字段必须出现

3)update命令

语法: update 表名 set 字段1=‘新值’,字段2=‘新值’ where 条件;

-- 将id为 3 的数据 name 改成baizhi3, mobile 改成12345678900
update student set name='baizhi3',mobile='12345678900', where id = 3;

4)delete命令

语法: delete 表名 where 条件;

3.函数— oracle提供的功能函数(单行函数、组函数)

web阶段概念语法----学习笔记_第1张图片

1)单行函数

概念: 作用于指定表里的每一行数据执行一次,返回一个结果数据

-- abs(num): 计算num的绝对值
select abs(salary) from employees;  --作用于表里的107行数据,得到107个执行结果
select abs(-2) from employees; -- 107个执行结果(表里107行)

-- dual: oracle提供的"单行单列表",为了维护select语句的完整性
select abs(-2) from dual; 

-- sysdate,systimestamp: 代表当前系统时间
select sysdate from dual; -- 注意: oracle里默认的日期格式为: 'dd-mon-rr'

-- 打印当前系统时间(显示四位年、月、日、小时分钟秒、星期)
select to_char(sysdate,'yyyy-mm-dd,day,hh24:mi:ss') from dual;

-- 可以截取日期中的某一个组成部分
select to_char(sysdate,'day') from dual;

-- 用两种方式打印1997年入职的员工信息
select * from employees where hire_date like '%97';
select * from employees where to_char(hire_date,'yyyy') = 1997;

-- 请打印02-03-04是星期几
select to_char(to_date('02-03-04','dd-mm-rr'),'day') from dual;

2)组函数

硬性语法要求: 首尾呼应
a.如果select里出现了字段与组函数并存的情况,此时必须写group by
b.只有出现在group by里的字段才有权出现在select里,没有出现在group by里的字段需要配合组函数出现在select里
c.如果在group by里对字段应用了函数,则在select里显示时,需要应用同样的函数进行处理

web阶段概念语法----学习笔记_第2张图片
注意: 空值一般使用nvl(字段名,为空时所替换的值)来处理
例如:select * from employees order by nvl(department_id,0) ;

-- 请打印公司的平均工资,最高工资,最低工资
select avg(salary),max(salary),min(salary) from employees;
-- 1.count(字段) : 统计指定字段中非空数据的个数
select count(department_id) from employees;
-- 2.count(*) : 统计结果中非空行的数量
-- 请打印1997年入职的员工人数
select count(*) from employees where hire_date like '%97';
分组语句: group by
-- 请打印部门编号以及部门的最高工资
select department_id,max(salary) from employees group by department_id;
-- 统计1997年各部门入职的人数
select department_id,count(*) from employees where hire_date like '%97' group by department_id;
-- 统计1997年各月入职的员工人数
select to_char(hire_date,'mm'),count(*) from employees where hire_date like '%97' group by to_char(hire_date,'mm');
分组数据的条件筛选: having
-- 请打印部门编号,人数(显示人数大于2的结果,按人数排序)
select department_id,count(*) from employees group by department_id having count(*)>2 order by count(*);

havingwhere的区别
1.where出现在分组前,以行为单位进行筛选,可使用单行函数
2.having出现在分组后,以组为单位进行筛选,可使用组函数
注意:如果一个功能wherehaving都能实现,则优选where
-- 查询部门编号为30和50的平均工资,按照部门进行分组
select department_id,avg(salary) from employees where department_id in(30,50) group by department_id;
select department_id,avg(salary) from employees group by department_id having department_id in(30,50);

总结:
语法: select … from … where … group by … having … order by …;
顺序:
1.from — 确定数据来源表
2.where — 对来源表里进行数据筛选
3.group by — 对满足要求的数据进行分组
4.having — 对分组后的数据进行再次筛选
5.select — 按用户要求统计数据
6.order by — 按照一定顺序显示统计好的数据

4.伪列(rownum、rowid)

概念: 表里不存在的,通过select * 无法查询到的列
rowid: 在数据库里唯一标识一条记录,对记录所在空间的物理地址运算得到
rownum:数据库服务器会为每次出现在查询结果里的,满足要求的记录编号,从1开始

select *,row num,rowid from employees; -- error
-- 解决:
select employees.*,rownum from employees;  --用表名修饰
select e.*,rownum from employees e;  --用表的别名修饰
-- 请打印表里的前5行数据
select * from employees where rownum <= 5;
-- 请打印表里的第6到第10行数据
select * from (select e.*,rownum r from employees e where rownum between 1 and 10) where r between 6 and 10;
注意: rownum使用时必须从1开始用,>=1  =1  <  <=  between 1 and n;
select * from employees where rownum between 6 and 10; -- error

5.子查询

1)子查询结果是单行单列

-- 查询工资最高的员工信息
select * from employees where salary = (select max(salary) from employees);

2)子查询结果是多行一列(多个值)

-- 查询last_name是Taylor的员工所在部门下的所有员工信息
select * from employees where department_id in(select department_id from employees where last_name = 'Taylor');

3)子查询结果是多行多列

-- 查询工资排名最高的前五名员工信息
select * from (select * from employees e order by salary desc) where rownum <= 5;

4)关联子查询

通过表的别名进行区分查询

-- 请查询各部门工资最高的员工信息
select e1.* from employees e1 where e1.salary = (select max(salary) from employees e2 where e2.department_id = e1.department_id);

6.表连接

当结果数据来自于多张表时,需要通过一定的条件,讲多张表的记录合并成一行记录显示给用户

-- 打印员工的编号,姓名,工资,部门编号,以及所在部门名称
select e.employee_id,e.first_name||'_'||e.last_name name,e.salary,d.department_name from employees e,departments d where e.department_id = d.department_id;

1)内连接

使用inner join连接,inner 可以省略,使用on指定连接条件,其他判定条件沿用where

-- 打印60部门员工信息,以及所在部门信息
select e.*,d.* from employees e join departments d on e.department_id = d.department_id where e.department_id = 60;
注意: 内连接只会显示符合连接条件的记录,对于连接条件为null的记录直接舍弃,不在结果中显示

2)外连接

可以处理连接条件为null的记录

分类: a.左外连接: 在表连接的过程中,以"左表"为主(左表记录全部出现),右表辅助(没有对应的记录补齐空行),使用left outer join定义(outer可以省略)
b.右外连接:表连接时以"右表"为主,"左表"辅助,关键字 – right outer join
c.全外连接:表连接时两张表的记录全部出现,谁缺谁补,关键字full outer join

-- 打印所有员工信息,以及他们所在部门的信息
-- 左外连接实现
select e.*,d.* from employees e left join departments d on e.department_id = d.department_id;
-- 右外连接实现
select e.*,d.* from departments d right join employees e on e.department_id = d.department_id;
-- 全外连接实现
select e.*,d.* from employees e full join departments d on e.department_id = d.department_id;

3)自连接

通过为一张表定义两个别名的方式,模拟表连接

-- 请打印员工的姓名以及他的领导姓名
select e.first_name||'_'||last_name name,m.first_name||'_'||last_name name from employees e left join employees m on e.manager_id = m.employee_id;

4)多表连接

-- 打印员工详细信息,所在部门信息,以及所在的城市
select e.*,d.*,l.* from employees e left join departments d on e.department_id=d.department_id left join locations l on d.location_id = l.location_id;

7.sql命令的分类

1)概念区分

sql:结构化的查询语言,用来操作管理所有数据库数据的命令
plsql:oracle公司对sql命令的增强和改进
sqlplus:oracle提供的工具 - 操作工具命令

2)sql命令区分

dql - 数据查询语言 select
dml - 数据操作语言 insert update delete
ddl - 数据定义语言 create drop truncate alter
dcl - 数据控制语言 grant revoke
tcl - 事务控制语言 commit rollback

8.建表

1)合法标识符

a.由 字母 / 数字 / _ / $ / # 组成,其中数字不能开头
b.不能是关
键字,不区分大小写,字数控制在30个字符内

2)数据类型

a.数字类型(不区分整数和小数)
number(n1,n2):有效位数为n1的数字,其中小数点后占n2位,n1最大取值为38,省略n2则表示整数
number:一个很大的,数据库能表示的最大值,相当于java里的double
b.字符类型(不区分字符和字符串)
varchar2(n):不定长字符串,最大可存储n个字节,存储时会根据实际值大小调整。n的最大值为4000
char(n):定长字符串,不论实际值大小,一律分配n个字节的空间,n的最大取值4000
nvarchar2(n):以字符为单位存放数据,n最大取值1333
c.日期类型:date(dd-mon-rr) timestamp
d.大数据类型:CLOB(字符大对象,4G) BLOB(二进制大对象,4G)
e:注意: java中的boolean类型,在数据库里通常使用数字"0或1"

3)约束类型

a.主键约束(primary key,简称pk) – 表里的唯一标识符,非空唯一,表里最多只有一个主键
b.非空约束(not null,简称nn)
c.唯一约束(unique,简称uk) – 通常也称为"唯一键",有值的时候值唯一,空值不在统计范围
d.外键约束(简称fk) – 通常使用关键字references定义,必须指向另一张表的"主键"或"唯一键"
e.检查约束(简称ck,也称为"自定义约束") – 使用关键字check(约束条件)

9.数据库里的其它对象

1)序列sequence

作用: 可以生成一系列唯一有序数值的对象,是一个公开的公共的对象

语法:create sequence 序列名;
start with num —起始值
increment by num — 步长
maxvalue num — 最大值
cycle | nocycle — 是否支持循环
cache num | nocache — 是否有缓存
drop sequence 序列名 — 删除序列

获取: 通过调用序列提供的一个变量nextval来获取序列里的值,一旦获取到值,值与序列再无关系
currentval 获取当前序列值,需要先调用nextval才能使用

2)视图view

概念: 一条起了名字的查询语句,视图没有数据,只有命令

创建: create view 视图名 as 查询语句;
删除: drop view 视图名;
作用:
1.简化查询,提高查询语句的复用性
2.帮助做表的权限管理
a. create view emp as select employee_id,last_name,… from employees;
b. create view boss as select * from employees;
c. 禁掉employees表的访问权限,对外提供emp和boss;

3)索引index

概念:是一个两列多行的表(对建立索引的字段值排序 — 值所在的物理位置rowid)

创建: create index 索引名 on 表名(字段名);
作用: 当建立索引的字段出现在查询条件里时,db server会自动应用索引提高查询效率
注意: 索引不是越多越好,浪费空间,降低增删改效率
oracle server 会默认为表里的"主键"和"唯一键"自动添加索引

10.事务(transaction)

1)概念

是操作数据库数据的最小单位,是由一组不可再分的sql命令组成的集合,事务的大小由实际的业务觉得。

2)原理

数据库服务器会为每一个连接上来的client,开辟一小块内存空间(回滚段),用来暂时缓存sql命令的执行结果,当事务结束时根据client的指令决定数据的处理方式,client发出commit指令(成功),则将回滚段的数据写入数据文件;client发出rollback(失败),则清空回滚段里的数据

3)边界

a. begin: 从写第一条sql命令的那一刻
b. end
①如果输入一组DML(insert update delete)命令,需要手动显示输入commit或者rollback结束事务
②如果输入一组DDL或者DCL命令,则命令成功后自动commit
③如果输入一组DML命令后退出client,正常退出做commit,非正常做rollback

4)数据安全 — 每一行记录都有一把锁(“行级锁”)

a. 写锁

oracle服务器会为事务操作过的记录自动添加"行级写锁",在锁没有释放之前,其它事务不能操作这条记录,在当前事务结束时,锁会被释放,然后随机分给一个等待锁的事务。

b.查询命令select不受行级锁的限制
c.读锁:在执行select命令时,手动获取行的锁标记

-- 查询时获取所有数据,并针对结果里的行进行加锁
select ... from ... for update;
-- 对查询结果加锁时,以nowait方式加锁(如果无法加锁,直接返回)
select ... from ... for update nowait;
-- 对查询结果加锁时,如无法直接加上,则等待num秒
select ... from ... update wait num;

5)事务的四大特性(ACID)

A(atomic):原子性: 组成事务的sql命令不可再分
C(consistancy)一致性:在事务运行中,数据的状态要与事务所做的操作保持一致
I(isolation)隔离性: 事务并发运行时,事务之间不应该互相影响
D(durable)持久性: 事务结束时,数据必须做"持久化"操作

二、JDBC

1.概念

是java程序连接数据库的桥梁,通过jdbc驱动java程序可以操作访问数据库软件

2.jdbc的组成

(1)接口:由sun公司定义,提供给程序员开发使用,已经在jdk里提供(java.sql包和javax.sql包)

(2)实现类:由数据库厂商提供,通过jar包的形式
ojdbc5.jar — jdk5/jdk6
ojdbc5.jar — jdk7/jdk8

3.搭建环境(导入jar包)

(1)普通文本编辑工具,将jar包所在路径配置到CLASSPATH环境变量里
(2)使用集成开发工具
①在项目路径下新建一个lib文件夹,将ojdbc6.jar拷贝到文件夹下
②右键选中jar包,选择build path,选择add to build path
(3)在myeclipse里配置数据库操作窗口
①菜单window --> show view --> others --> 搜索db browser --> 选中
②在打开的窗口右键 --> new --> 填表格
web阶段概念语法----学习笔记_第3张图片
③在src目录下新建一个sql包,里面新建一个xxx.sql的文件

4.第一个jdbc程序

1)注册Driver(加载驱动)

Class.forName("驱动类的全类名");
注意: 可以在一个jdbc程序里注册多个Driver驱动类

2)获取数据库连接

代码: Connection conn = DriverManager.getConnection(地址,用户名,密码);
注意: 实际负责建立数据库连接的程序是Driver实现类,DriverManager只是一个工具类
地址解析
web阶段概念语法----学习笔记_第4张图片

3)创建Statement(sql命令的传送工具)

代码: Statement stm = conn.createStatement();

4)执行sql命令(传送)

a. executeUpdate(sql): 用来执行inser update delete命令,返回int值(命令影响了几条数据)
b. executeQuery(sql): 用来执行select命令,返回值为ResultSet(结果集)
c. execute(sql): 可以用来执行所有的sql命令,返回boolean值(标记是否有结果集返回)

5)处理结果集

方法: next() / getXxx()系列
web阶段概念语法----学习笔记_第5张图片

6)释放资源

注意: 资源释放按照生成顺序反向释放 rs — stm — conn

5.带参sql命令的执行

1)使用Statement执行带参sql

缺陷
①命令字符串的拼接比较繁琐
②sql注入
web阶段概念语法----学习笔记_第6张图片

2)使用PreparedStatement执行带参的sql

PreparedStatementStatement的子接口,可以解决sql注入(字符串拼接)的问题
②使用
a.创建PreparedStatement对象(需要直接指定执行的sql)
PreparedStatement ps = new prepareStatement(sql);
ps允许指定半成品sql,允许在sql命令中使用?作为占位符来代替暂时不方便给定的值
b.为?设置值: ps提供一系列的setXxx();

ps.setInt(int index, Integer value);
ps.setString(int index, Stringvalue);
ps.setDouble(int index, Double value);
ps.setDate(int index, Date value);

c.执行sql
ps.executeUpdate()ps.executeQuery()
web阶段概念语法----学习笔记_第7张图片

6.工具类 – JdbcUtil

(1) java代码复用的基本原则
a.函数封装: 经常反复出现在程序中的一段功能代码(冗余代码),通过函数封装可以提高代码的复用性
b.尽量减少"硬编码": 将可能会发生改变的值直接定义在java程序中(值的改变会导致程序的重新编译),将改变的值定义在配置文件
(2)配置文件

概念: 用来保存程序运行过程中所需要的一些数据

a.文件类型: xxxx.properties / xxx.xml
b.properties文件格式: 每一行定义一个值,一行由两部分name和value,中间等号或空格连接
c.集合类Properties: 是HashTable的子类,主键和值默认都是String类型,处理properties文件的工具
Properties集合提供了load(字符输入了)函数用来读取保存配置文件的内容
(3)效率
a.将读取文件的代码写在static静态代码块中
b.改变流的获取方式 getConnection();
InputStream is = 类对象.getResourceAsStream(路径); //代表src的根路径

7.O-R mapping

web阶段概念语法----学习笔记_第8张图片

实体类的作用: 用来封装数据库数据, 属性名最好和表中字段名保持一致
函数的返回值: 正常情况必须返回指定类型的值, 非正常情况,异常对象可作为一种返回值形式来表示

8.DAO(date access object 数据访问对象)

作用: 完成对数据库里一张表所有数据访问操作(增删改查)

命名规范:
(1)为每一张表提供一个与之对应的dao程序
(2)定义dao接口,命名以dao为后缀
(3)为接口提供实现类,接口名+Impl

web阶段概念语法----学习笔记_第9张图片

好处: 对调用者屏蔽底层数据库的差异

9.Service(业务层)

作用: 为了完成用户的一个具体的业务需求,需要定义函数来实现具体的业务过程(一定会落实到具体的数据库操作上)

(1)定义规则
a.每一个业务功能定义一个函数
b.程序命名规范"xxxxService" — 接口;实现类: “xxxxServiceImpl”
(2)Jdbc中的事务控制
a.jdbc中默认的事务提交策略为"一条命令提交一次" — 自动提交
b.手动提交API
① conn.setAutoCommit(boolean bn);true–自动提交 false-- 手动提交
一经设置,永久生效(在当前conn的生命周期中,一直有效)
②conn.commit(); conn.rollback();
(3)代码结构
web阶段概念语法----学习笔记_第10张图片
(4)使用ThreadLocal对象解决service层事务控制问题

1.ThreadLocal : 线程局部变量,一个ThreadLocal对象可以为每一个线程保存一个独占数据
2.使用API
(1)创建对象ThreadLocal<独占数据的类型> tol = new ThreadLocal<>();
(2)存数据tol.set(数据);
(3)取数据tol.get() --> 独占数据
(4)解除与当前线程的绑定 tol.remove();
3.作用
(1)为一个线程锁定一个数据,使得我们在线程的任意代码组成部分里都可以获取到这个数据(一个数据)
(2)为不同的线程锁定不同的数据

(5)使用ThreadLocal改写JdbcUtil
web阶段概念语法----学习笔记_第11张图片
(6)理论上,conn应该在线程结束时被关闭,实际开发中,线程结束的位置不固定,一般会在事务结束时就关闭连接,关闭同时切记解除conn与当前线程的绑定关系(dao层函数不能关闭连接)
在这里插入图片描述
web阶段概念语法----学习笔记_第12张图片
(7)业务层开发步骤
①获取数据库连接,并控制提交策略为手动提交
②完成业务功能(数据检验,数据库的访问操作 – 需要dao对象)
③提交或者回滚
④释放资源
web阶段概念语法----学习笔记_第13张图片

10.项目结构

web阶段概念语法----学习笔记_第14张图片

11.日期处理

// String转换成java.util.Date
System.out.println("请输入日期:");
String str = s.next();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = sdf.parse(str);

// java.util.Date转换成String
Date date = new Date();//获取当前时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
String str = sdf.format(date);

// java.util.Date转换成java.sql.Date
java.util.Date ud = java.util.Date();
long time = ud.getTime();//将java.util.Date转换成long类型
java.sql.Date sd = new java.sql.Date(time);

三、HTML

1. 概念

(1)标记语言:使用一些特殊的标记符号对所要展示的文本内容进行标记说明,不会发出任何机器指令,也不会体现具体的业务信息
(2)HTML超文本标记语言:对文本内容的显示样式,风格进行标记说明
(3)XML可扩展标记语言:对文本内容的含义进行标记说明

2. html说明

(1)使用html技术定义的文档,通常称为"网页",文件名会以 .html 或者 .htm为结尾
(2)可以使用任意文本编辑器开发html文件,使用浏览器解释执行(存在浏览器差异)

3. 基本语法

(1)使用“标签”的形式进行标记

    <标签名>       ---- 开始标签
        标签体     ---- 文本内容  or 其他标签
    标签名>      ---- 结束标签

    注意:标签嵌套的顺序

    特例:  <标签名/>    ---- 空标签(没有标签体的标签)

(2)标签可以有属性
<标签名 属性名=“属性值" 属性名=‘属性值’ 属性名=属性值> …
例如:


<html> --- html文档的根标签 <head> head> --- 对文档的一些配置信息进行说明 <body> body> --- 显示在浏览器窗口里的内容 html>

5. head标签

​ 用来对网页的特性属性进行说明定义,通常不会显示在浏览器的窗口里

1)<title> 定义网页标题,唯一一个有机会出现在窗口里的head标签
2)<meta/> 用来为网页定义特征属性
  
  <meta  http-equiv="refresh" content="3;url=http://www.baidu.com"/>

6. body标签

用来定义正文内容,可以显示在浏览器窗口里
(1)text属性:用来定义正文内容的颜色(英文单词 or 6位16进制数 RGB)
(2)bgcolor属性:背景色

7. 基础标签

 1)注释标签:  
 2)标题标签:  <h1>.....<h6> 值越大字越小,自占一行(“块级元素")
 3)标尺线 : 
4)居中标签:<center> center> 5)字体设置: <font color="" size=""> 6)段落标签: <p> 7)特殊设置: <br/>换行   空格 < > 8)字体设置: <b> 加粗 <i>斜体 <s>删除线 <u>下划线 <sub> <sup> 9)跑马灯: <marquee scrolldelay="速度" direction=“方向 left right">

8. 列表标签

1)有序列表 :

    ----

  1. 2)无序列表 :