JAVAweb
2022-10-17 11:28:41 25 举报
AI智能生成
coco博
作者其他创作
大纲/内容
MySQL
数据库(统一的管理数据的集合)
网状结构:IDS
层次结构: IMS 树结构
关系结构:Oracle,DB2 MYSQL, SQL SERVER ,以表存储
非关系结构:Redis 以哈希表,键值对的方式存储哦
数据库管理系统
MYSQL:关系型数据库管理系统
SQL SERVER
Oracle
DB2
SQL(结构化查询语言)
DQL:数据查询语言 select
DML:数据操作语言 update delete insert
TCL:事务控制语言
DCL:数据控制语言
DDL: 数据定义语言
CCL:指针控制语言
SQLyog
数据查询DQL
基本查询
排序查询
ORDER BY ACE (DESC)
条件查询
模糊: LIKE
分支
子主题
枚举: IN(属性1,2,3)
时间查询
字符串查询
聚合函数
SUM()
AVG()
MAX()
MIN()
COUNT()
分组查询(过滤)
GROUP BY 分组列 HAVING 过滤规则
限定查询
LIMIT 起始行,行数;
子查询(嵌套查询)
一个查询嵌套另一个查询,内层的查询称为子查询
子查询可以作为条件判断----(子查询)一行一列
子查询作为枚举条件--- (子查询)多行一列
子查询可以作为条件判断---- all(子查询)一行一列
--------------------------------any(子查询) 一行一列
--------------------------------any(子查询) 一行一列
作为一张临时表 FROM (子查询)
合并查询
SELECT *FROM 表一 UNION SELECT *FROM 表二;--去重
合并的两张表的列数必须相同,类型可以不同
SELECT *FROM 表一 UNION ALL SELECT *FROM 表二;--保留重复
连接查询
隐式链接(内连接)
FROM 表一 ,表二 WHERE 表一.stu=表二.stu
显示连接(内连接)
FROM 表一 INNER JOIN 表二 ON 表一.stu=表二.stu AND/WHERE/HAVING 条件
外连接
左外连接 FROM 表一 LEFT JOIN 表二 ON 条件
右外连接 RIGHT JOIN
自然连接
FROM 表一 NATURAL JOIN 表二 WHERE 条件
数据操作(DML)
添加数据
INSERT INTO 表名 (属性1,属性二,属性3)VALUES (值1,值2,值3);
修改数据
UPDATEE 表名 SET 列名=修改值 , 列名2=修改值 WHERE 条件
删除数据
DELETE FROM 表名 WHERE 条件
清空表
TRUNCATE 表名
数据定义(DDL)
创建表
定义各个列的属性
表约束
实体完整性约束(行)
主键约束
方法一: 创建表 Sid INT PRIMARY KEY
方法二: PRIMARY KEY( Sid)---(多用于联合主键)
方法三: 建表之后 ALTER TABLE student ADD PRIMARY KEY(id);
唯一约束
Sname INT(10) UNIQUE; ----与主键不冲突
自动增长列
在主键后面使用,不可单独使用 Sid INT PRIMARY KEY AUTO_INCREMENT
域完整性(列)
数据类型约束 数据类型(长度)
非空约束 NOT NULL
默认值 DEFAULT 值
引用完整性约束(表与表)
- 外键约束:CONSTRAINT 引用表 FOREIGN KEY (列名) REFERENCES 被引用表名(列名)
修改表 ALTER
删除表DROP
事务控制(TCL)
mysql是自动提交事务的,一条语句执行就会提交
原子性:一个事务内的操作不可分割,要么全部成功,要么全部失败
一致性:事务内一个修改失败时,所有其他修改过的操作回滚到修改之前
隔离性: 事务查看数据时,只能是另一并发事务修改前或者修改后的数据
持久性:持久性事务完成之后,对系统的修改是永久的
开启事务
STRAT TRANSACTION;----开启事务
TRANSACTION=0;----关闭自动提交
TRANSACTION=1;----开启自动提交
TRANSACTION=0;----关闭自动提交
TRANSACTION=1;----开启自动提交
提交 事务
COMMIT;
事务失败,回滚
ROLLBACK;
权限控制
创建用户
授予权限
撤销权限
删除用户
视图
概念:虚拟表,从一个表或多个表中提取出啦i,作用与表相同
创建视图: CREATE VIEW 视图名 AS
SELECT...
SELECT...
查看视图 :SELECT *FROM 视图名;
修改视图:
- 方式一:CREATE OR REPLACE VIEW 视图名 AS 查询语句
2.方二: ALTER VIEW 视图名 AS 查询语句
删除视图: DROP VIEW 视图名;
数据库的备份与恢复
JDBC
概念
什么是JDBC:JAVA连接数据库技术(规范标准)
核心思想: Java中定义了访问数据库的接口,再又各关系型数据库提供(Driver驱动)实现类
接口: Connection---l连接数据库
Statement----执行SQL语句
ResultSet-----接收查询结果
Statement----执行SQL语句
ResultSet-----接收查询结果
JDBC的开发
url: jdbc:mysql://localhost:3306/booksystem?useSSL=false&characterEncoding=utf-8
封装工具类
连接方法
释放资源
与事务相关的4个方法
通用增删改查方法
ORM : 对象关系映射
对结果集的遍历时,取出的都是一些零散的数据。
开发时需要对这些零散数据进行封装
开发时需要对这些零散数据进行封装
实体类(Entity)---一张表反射一个实体类(需要内省)
表名----类名
属性名----列名
类型-----列类型
添加构造方法、get,set方法
属性名----列名
类型-----列类型
添加构造方法、get,set方法
常用包名:beans、entity、domain、pojo
DAO: 数据访问对象
定义专门的对象,实现与数据库连接修改操作
实现了业务逻辑和访问数据库相分离(降低耦合)
创建Dao接口
创建Dao实现类
service:业务层
事务
connection对象.setAutoCommit(false);//关闭自动处理事务---手动提交事务
connection对象.commit();//提交事务
connection对象。rollback()//手动回滚
三层架构
界面层
业务层
数据访问层
连接池
德鲁伊连接池
阿帕奇工具类
HTML
简介:一门通过标记和标签描述网页的超文本标记语言
超文本:页面内包含图片,连接,音乐,程序等非文字元素
标记:即标签,不同的标签实现不同的功能
语言:人与计算机交互的工具
书写规范:<关键字></关键字>(通常成对出现)
属性=”属性值“
不区分大小写,建议全部小写
基本标签
文件标签
<html>
<head>
//网页头标签
<title>网页标题</title>
</head>
<body>
//网页主体
</body>
</html>
<head>
//网页头标签
<title>网页标题</title>
</head>
<body>
//网页主体
</body>
</html>
排版标签
注释标签
<!-- 注释内容 -->
换行标签
<br>
段落标签
<p></p>
水平线标签
<hr>
width:宽度
size:粗度
color:颜色
align:对齐方式
大小:px(像素)
容器标签
<div>行级块标签(自动换行)</div>
<span>行内块标签(都在一行)</span>
文字及标题标签
标题标签:<h1~5> n级 标题 </h1~5>
文字标签:<font size="2",face="字体"> 文字标题 </font>
文本格式化标签
加粗标签<b></b>
<strong></strong>
<strong></strong>
强调标签:<em></em>
下标签:<sub></sub>
上标签:<sup></sup>
删除线标签:<del></del>
列表标签
<ul type="类型">
<li>苹果</li>
<li>香蕉</li>
<li>菠萝</li>
</ul>
无序列表
<li>苹果</li>
<li>香蕉</li>
<li>菠萝</li>
</ul>
无序列表
<ol type="类型">
<li>苹果</li>
<li>香蕉</li>
<li>菠萝</li>
</ol>
有序列表
<li>苹果</li>
<li>香蕉</li>
<li>菠萝</li>
</ol>
有序列表
图片标签: <img/>
src="文件路径"
子主题
连接标签<a href=”连接地址“></a>
表格标签
表格标签<table border=”边框“ width="宽度">-----</table>
<tr>行</tr>
<td>列</td>
<th>--列名--</th>
<caption >---标题---</caption>
表格合并
跨行合并:rowspan="行数"
跨列合并colspan="列数"
表单标签(重点)
登录表单
<form>表单</form>
action=”服务器地址“
method="提交方式"
enctype="提交类型"
<input type="类型"/>
子主题
框架标签
在同一个浏览器窗口中不止一个页面
<frameset>框架标签</frameset>
其他标签
CSS
简介:用来表现HTML和Xml等文件样式的计算机语言------层叠样式表
美化页面
样式和页面相分离
导入方式
内联式:当前块有效
内部式:当前页面
外部式
链接式导入:link
导入式(不常用,淘汰)import
基本选择器
元素(标签)选择器: 标签{}
id选择器: #id名{}
class选择器 .class名{}
优先级:id选择器>class选择器>元素(标签)选择器
属性选择器:
伪类选择器:
层级选择器:
后代选择器
子代选择器
文本属性
font-xxx
color
text-xxx
背景属性
background-xxx
列表属性
list-style-xxx
outline-xxx
浮动属性
float
clear:
定位属性
position
盒子模型
边框border
外边距margin
内边距padding
Selvlet
概念:Server Applet---服务器端的应用程序(代码、功能实现)
B/S架构和C/S架构
子主题
Web
万维网:表示共外界刚问的资源
静态资源:HTML CSS JS
动态资源:Servlet JSP
动态Web开发技术,被称为JavaWeb
Web服务器(容器)
Tomcat(web主流服务器之一)
jetty(淘宝)
resin(新浪)
自己搭建服务器
Tomcat
目录结构
bin: 可执行文件
conf :服务器和Web项目配置文件
lib:存放运行所需的Jar包
webapps:存放Web项目-----地址栏默认访问ROOT项目
work:运行时生成的文件
使用
开启/关闭
修改默认端口号
部署项目到Tamcat
创建静态项目------webapps文件下,创建文件夹(直接放html文件)
创建Web项目-----webapps文件下, 项目文件夹下
WEB-INF
web.xml
WEB-INF
web.xml
idea创建web项目
连接Tamcat服务器
创建java项目,右键改为web项目
为WEB-INF添加classes文件夹和lib文件夹
配置项目
创建Servlet类三种方式
实现Servlet接口
继承GenericServlet
继承HttpServlet---需要重写doGet()和doPost()方法
web.xml文件配置
映射Servlet
设置错误网页
设置访问首页
导出项目war包
子主题
HTTP协议
超文本传输协议---基于TCP协议
请求方法 get()不安全 post()安全
三次握手四次挥手
请求报文:浏览器向服务器发送一个请求数据块----默认get
Servlet
创建Servlet类三种方式
实现Servlet接口
继承GenericServlet
继承HttpServlet---需要重写doGet()和doPost()方法
配置Servlet的两种方式
web.xml中配置
通过注解直接配置(推荐)
@web Servlet(”/XXXservlet“)
请求request
request.getParameter("表单名")-------根据表单名字获取请求的值
request.setCharacterEncnding("utf-8")------设置提交请求的编码格式
get请求
铭文传递,效率高,数据放在url之后?拼接
post请求
打包发送,密文传递,安全,效率没有get高
响应response
response.setContentType("text/html ; charset=utf-8")----解决服务器响应乱码问题
转发
request.getRequestDispatcher("目标url").forward(request,response);
---------------------------------------------include----------------也行
---------------------------------------------include----------------也行
服务器的行为,只做了一次请求
地址栏不发生变化
常用两个Servlet之间传输数据
重定向
response.sendRedirect("目标url")
服务区提供一个新的页面----客户重新请求
地址栏发生改变,始于两次请求
可以指向任何站点
线程安全问题
synchronized 同步代码块------性能太低
实现SingleThreadModel接口------过时了
尽可能使用局部变量(推荐)
状态管理(会话机制)
概念:将浏览器与客户端之间的多次交互当作一个整体来看
分类
客户端状态管理Cookie
服务器状态管理session
cookie(类)
创建cookie
查看cookie
删除cookie:删除cookie--创建同名cookie--name和路径相同
session(接口)
session是服务器自动创建的,通过request获取session对象
获取session
有效时间
创建时间
最后访问时间
session域对象
session.setAttribute("key","value")
session和request的区别
session:一次会话
request:一次转发
过滤器filter
概念:介于客户端和服务器之间,限制访问
配置方式
web.xml配置
注解的方式@webfilter("过滤资源url")
/servlet---精准过滤
*.html ,*.do---后缀过滤
/*----过滤所有
作用
统一编码
权限验证
注意:一定要放行
JSP
原理:TomCat会将JSP转换成Java代码,然后编译成class文件,左后在通过response响应给浏览器,所以本质上还是Servlet
jsp 3---6--9
3个指令
- page----与整个jsp相关的属性
2. include动态包含-----将外部页面的代码引入
3.taglib-----引入外部标签库
6个动作
<jsp:include>静态包含---将外部页面的结果导入
userBean
setProperty
getProperty
forword转发页面
param页内跳转
9大内置对象
<li>request</li>
<li>response</li>
<li>session</li>
<li>application</li>
<li>config</li>
<li>exception</li>
<li>out</li>
<li>pagecontext</li>
<li>page</li>
<li>response</li>
<li>session</li>
<li>application</li>
<li>config</li>
<li>exception</li>
<li>out</li>
<li>pagecontext</li>
<li>page</li>
pagecontext可以操作其他3个域对象
pagecontext.findAttribute("name");-----从4个域对象中取值
服务器4大域对象
session
pagecontext
request
application(ServletContext)
EL表达式(重点)
使jsp写起来更加简单,用于取域对象中的值
取基本类型作用域值---${"域对象name"}
去对象类型作用域值-----${"对象name.属性名"}----调用的是get方法
获取数组或list集合元素----${数组/集合name[下标]}
获取Map集合元素-----${name.get("key")}
运算符的使用---${10*5}
EL的11个隐式对象
pagescope:pageContexr域对象
requestscoope:request域对象
sessionscope-----
applicationscope-------
param
paramValues
header
headerValues
ininParam
cookie
pageContext
JSTL标签库
一个JSP标签集合,可以对EL得到的数据进行逻辑处理,域EL合作完成数据展示
使用方式
if----<c:if test=条件> </c:if>
foreach
子主题
choose
url
子主题
文件上传
1编写文件上传表单
提交方式post
表单提交类型---multiparty/form-data
type="file"
2编写服务器接受程序
@MultipartConfig(maxFileSize = 1024*1024*5,maxRequestSize = 1024*1024*20)设置单个文件大小,和总大小
处理乱码
浏览器中获取表单的文件请求 request.getpart("name");
创建上传文件的真实路径 request.getservletContext.getRealPath("WEB-INF/uplode")
创建文件夹
将文件写入路径文件夹part.write(真实路径+文件名part.getSubmitFilename())
细节优化
同名文件,文件覆盖问题
工具实现唯一名字
part.write(真实路径+处理过的文件名)
散列存储
通过hashcode创建2级,三级目录
限制上传文件类型
创建允许类型后缀名的list<String>集合
截取文件名的后缀part.getSubmittedFileName().substring(part.getSubmittedFileName().lastIndexOf(".") + 1);
判断此后缀名是否存在集合中 list.contains(str)
多文件上传
Collection<Part> parts = request.parts();----获取所有表单元素为part集合
增强for循环遍历得到每一个part
part.getSubmittedFileName-为null为基本元素----不为空为文件类型
文件下载
讲web资源下所有的文件展示给用户看,(uplode中的内容)
下载
JS
JS基本语法
基本数据类型
引用数据类型
数组类型
函数
三种弹窗韩函数
alert("提示")
confirm("提示")---带有返回值
prompt(”提示“,”输入框“)---返回值为输入内容
事件
onclick--点击事件
onchange--改变事件
。。。。。。
正则表达式
var rep=正则表达式
rep.test("string")-----返回true或者false
rep.exec("string ")----还会下标,找不到返回null
DOM(重点)
概述 文档对象模型(document) 加载网页时创建,被构造为对象的树
查找html元素
document.getElementById---通过id(唯一)
通过name--不唯一
通过class属性值不唯一
改变html元素
.innerHTML="信息"
改变html属性
document.getElementById.属性=”新的值“
改变CSS样式
document.getElementById .style.color="blue"
DOM事件(重点)
可以以通过触发事件来执行代码
点击
改变
页面加载完成
点击
改变
页面加载完成
onclick="document.getElementById("this").innerHTML="提示信息""
事件监听器
element(元素).addEventListener(event, function, useCapture);
event:事件--点击、改变等等
function函数---事件触发后的函数
userCature:捕获方式--默认为false冒泡(先响应内层)
操作元素
创建元素
追加元素
BOM
概念:浏览器上的操作,缩放窗口等操作
window.
screen.availWidth--窗口宽度
screen。availHeight---窗口高度
window.location---页面的url
- ocation.hostname 返回 web 主机的域名
- location.pathname 返回当前页面的路径和文件名
- location.port 返回 web 主机的端口 (80 或 443)
- location.protocol 返回所使用的 web 协议(http:// 或 https://)
- location.href 属性返回当前页面的 URL
- location.assign() 方法加载新的文档
- location.pathname 返回当前页面的路径和文件名
- location.port 返回 web 主机的端口 (80 或 443)
- location.protocol 返回所使用的 web 协议(http:// 或 https://)
- location.href 属性返回当前页面的 URL
- location.assign() 方法加载新的文档
window.history
history.back()后退
history.forward()向前
AJAX
JSON
概念JavaScrap对象标记--轻量级数据交换格式
json语法
{}:表示对象
[]:表示数组
”“ :表示属性名或者字符串类型的值
: :属性名和值之间的分隔
本质是字符串
json解析(将json串与对象互相转换)
Fast JSON--阿里
子主题
Jackson--spring
概念:异步JS和Xml
AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
AJAX 是一种用于创建快速动态网页的技术。
jquery
概述:一个框架,封装了js的框架
安装
本地引入
dns引入
jQuery语法
jQuery的基本使用
jQuery选择器
jQuery事件
jQuery效果
滑动
淡入
淡出
隐藏显示
jQueryDOM操作
捕获
设置
添加
删除
CSS类
css()方法
隔行换色
复选框全选全取消
省市级两级的联动
jquery遍历
祖先
后代
同胞
过滤
jQueryAJax
get请求
$.get( url, callback回调函数 )
post请求
$.post(url, params, callback回调函数)
(重要使用)Ajax()
子主题
注意 post,get,没有办法设置请求头,Ajax()可以设置
jQuery noConflict方法
jQuery放弃使用$引用
方法一
$.noconflict()
后续使用jquery.
方法二
var jq=$.noconflict()
后续使用jq代替
方法三
jquery(document).ready(function($)){
//可以使用$
}
//可以使用$
}
validate插件
作用:简化表单校验插件
使用步骤
导入validate.js----(jQuery使用3.xxx高版本)
messages_ch.js----(国际化问题,提示信息是中文)
messages_ch.js----(国际化问题,提示信息是中文)
$.("选择器").validate();---选择器是表单id
在validate()中编写校验规则
rules:{
input的name值:“规则”
},message{
name:提示信息
}
input的name值:“规则”
},message{
name:提示信息
}
bootstrap
子主题
0 条评论
下一页