1、JDBC
一、JDBC概述
1、什么是JDBC
JDBC:Java数据库连接
利用Java语言访问数据库的一门技术
2、为什么要学习JDBC
后面在开发中更多是通过Java程序来访问数据
通过Java程序来访问数据需要用到JDBC这门技术
3、如何通过JDBC访问数据库
//1.注册驱动
//2.获取连接
//3.获取传输器
//4.执行sql语句,返回执行结果
//5.处理结果
//6.释放资源
二、JDBC增删改查
略
三、JDBCUtils工具类实现
getConnection – 获取并返回一个连接对象
close – 释放资源
四、PreparedStatement和SQL注入攻击
Statement对象
PreparedStatement
12360 -- SQL注入攻击
优势:
(1)采用预编译,可以防止sql注入攻击
(2)通过方法设置sql参数更加的方便
(3)能够尽最大可能提高程序执行的效率.
Statement
select * from user where username='zs' and passowrd='123'
select * from user where username='ls' and passowrd='456'
PreparedStatement
select * from user where username=? and passowrd=?
五、批处理
将大量的sql打成一个批, 一次性发送到数据库执行的一门技术
如果要有大量的sql语句到数据库执行, 通过批处理可以减少sql语句发送的次数, 提高程序执行的效率
大量
JDBC事务
六、数据库连接池
1、什么是数据库连接池
存放数据库连接的池子(容器)
把连接放在一个容器中, 供整个程序共享, 实现连接的复用!
2、为什么要使用连接池?
如果通过传统方式,需要连接时直接跟数据库要(创建)一个连接,用完后在关闭连接还给数据库,其中创建和销毁的过程是非常消耗资源,并且效率比较低。
在程序启动时,将一批连接放在连接池(容器)中,当我们需要连接,直接从连接池里面拿一个连接使用,用完之后也不要关闭,直接还给连接池即可,这样可以实现连接的复用,减少连接开关的次数,提高程序执行的效率!
3、如何使用连接池开发数据库程序(c3p0)
(1)导入c3p0的开发包
(2)在源码目录(src或者相似的目录下)下提供一个 c3p0-config.xml 文件
(3)在程序中创建一个连接池实例
ComboPooledDataSource pool = new ComboPooledDataSource()
(4)从连接池中获取一个连接对象
pool.getConnection()
…
…
(5)用完连接后, 记得将连接还给连接池!
2、WebServer
利用前面JavaSE所学的技术知识(IO流/多线程/网络编程/xml/jdbc/http)实现一个基础HTTP协议的Web服务器端程序
可以将一些Web资源文件(Html/CSS/JS/图片等)放在WebServer服务器中, 通过浏览器请求这些资源文件, 服务器端根据请求来处理, 最终做出响应.
3、HTML、CSS
HTML
一、HTML概述
1、什么是HTML
HTML:超文本标记语言
用于开发网页的一门语言
是标记语言,不是编程语言
HTML本质上是一个文档
2、HTML的结构
<!doctype html> 声明HTML的版本,当前是html5.0
真正的网页内容
解决网页乱码: 保证meta标签中的charset属性指定的编码和html文件保存时使用的编码一致.
3、HTML的语法
标签(标记/节点/元素): 分为开始和结束, 可以将开始和结束合并成一个自闭标签
属性的值可以用单引号或者双引号引起来
写一个空格:  
做一个换行: <br/>
注释: <!-- 注释内容 -->
二、HTML标签
1、标题标签
2、列表标签
- 中国
- 美国
- 中国
- 美国
3、图像标签
![](imgs/1.jpg)
![](https://i-blog.csdnimg.cn/blog_migrate/c3637eefcf0a5a1e1a6c2d4fd698bf9e.png)
4、超链接(a)
百度一下,你就不知道!
target: _self/_blank/frameName
5、表格标签
11 | 12 |
21 | 22 |
11 | |
21 | 22 |
colspan:设置单元格横跨的列数
rowspan:设置单元格竖跨的行数
设置table/tr/td的样式推荐使用CSS属性来设置
6、form表单
6.1.表单标签
表单的作用: 用于向服务器发送数据
也可以通过超链接后面拼接参数的形式向服务器发送数据
</form>
6.2.表单项标签
input
文本输入框:
密码输入框:
单选框:
复选框:
设置单选框和复选框默认被选中, checked=“checked”
普通按钮:
提交按钮:
重置按钮:
文件上传项:
隐藏域:
select/option
<select>
<option>北京</option>
<option>上海</option>
<option>广州</option>
</select>
textarea
<textarea>请输入个人简介...</textarea>
如果表单项(中的数据)需要被提交, 表单项必须指定name属性(参数名称), 否则将不会被提交!!
7、div/span/p
div/p: 块级元素(block) 比如: hr/h1~h6/form…
默认情况下独占一行
可以设置宽高
外边距/内边距/border都可以设置
span: 行内元素(inline) 比如: input、a、img…
多个行内元素可以处在同一行
不可以设置宽高
左右外边距/内边距/border都可以设置, 上下外边距设置无效
CSS
一、CSS概述
1.什么是CSS
css:层叠样式表, 用于美化网页的一门技术, 可以实现将设置样式的CSS代码和展示数据的HTML代码进行分离, 增强了网页的展示能力.
二、CSS引入
1.通过style属性来引入css
2.通过style标签引入css
3.通过link标签引入外部的css文件
三、CSS选择器
1.基本选择器
标签名选择器
div{…}
span{…}
class类选择器
.class属性值{…}
id选择器
#id值{...}
2.扩展选择器
后代选择器: div span{}
子元素选择器: div>span{}
分组选择器: div,span,.c1,#d1{}
属性选择器: input[type=‘submit’]{}
input[type=‘checkbox’]{}
相邻兄弟选择器: #d1+span{}
#d1~span{}
伪元素选择器:
div:first-child{ //匹配所有的第一个div子元素
}
div:last-child{ //匹配所有的最后一个div子元素
}
div:hover{//鼠标悬停在div上时的状态
}
四、盒子模型
将所有的html元素都看成一个一个盒子或者是框
margin(外边距)
margin: 9px 7px;
margin: 10px 20px 30px 40px;
margin: 10px 20px 30px;
margin: 10px;
border(边框): 1px solid red;
padding(内边距)
padding: 10px 20px 30px 40px;
padding: 10px 20px 30px;
padding: 10px 20px;
padding: 10px;
五、常用的CSS属性
1.display属性 – 设置元素是否以及如何显示
block: 块级元素
inline: 行内元素
inline-block: 行内块元素(既可以设置宽高, 又可以同行显示)
none: 隐藏元素
2.文本属性
text-align: 水平排列方式
text-indent: 首行缩进
text-shadow: 字体阴影
letter-spacing: 字符间隔
text-decoration: 设置字体下划线样式
3.字体属性
font-size: 字体大小
font-weight: 字体粗细
color: 字体颜色
line-height:行高
font-family: 设置字体
4.背景属性
background-color:背景颜色
background-image:背景图片
background-repeat:背景是否以及如何重复排列
background-position:背景图片的位置
background-size:背景图片的大小
4、JS、DHTML
JS基础语法
一、JS简介
1、什么是JS
JavaScript
是一门基于对象和事件驱动的脚本语言
专门为网页交互而设计
主页应用在客户端
2、JS的特点和优势
解释执行, 不需要编译
基于对象
弱类型
交互性
安全性
跨平台性
3、JS的引入
3.1.通过script标签引入JS代码
3.2.通过script标签引入外部的JS文件
<script src="js文件的路径"/>如果这个标签写成自闭的, 将会引入失败!
<script src="js文件的路径">
//这里的代码将不会执行!
</script>
二、JS语法
1、数据类型
基本数据类型
数值类型(number)
都是浮点型
NaN
字符串类型(string)
字符串可以用单引号/双引号引起来
布尔类型(boolean)
undefined
表示定义了变量, 但是没有赋值, 此时变量的值就是undefined
null
表示空值
复杂数据类型
对象(函数/数组/对象)
2、变量和运算符
var str = “Hello”;
var num = 100;
var x;
JS中的运算符和Java中的大致相同
== ===
typeof
3、语句
if…else
switch
循环语句
4、数组
var arr1 = new Array();
arr1 = new Array(10, “hello”);
var arr2 = [10, "hello"]
length属性 -- 返回数组的长度
pop方法
push方法
shift方法
unshift方法
sort方法
reverse方法
5、函数
function 函数名称(参数列表){
函数体
…
}
var 函数名/变量名 = function(参数列表){
函数体
...
}
6、对象
6.1.JS的内置对象
String对象
Array对象
Date对象
Math对象
Global对象
RegExp对象
6.2.自定义对象
function Person(){}
var p1 = new Person();
var p2 = {
"name" : "zs",
"age" : 18,
"run" : function(){
}
}
-----------------------------
$("div").css({
"color" : "red",
"width" : "100px",
"height" : "100px"
})
DHTML
5、jQuery
6、tomcat、http协议
XML: 可扩展标记语言
1、html和xml的区别
html:超文本标记语言, 是用于开发网页的一门语言
xml:可扩展标记语言, 现在主要用于传输数据和作为应用程序的配置文件
html:对语法的要求非常不严格(比如标签没有结束或者标签交叉嵌套有时也会被正常解析)
对语法要求很严格(标签必须得结束及标签也不能交叉嵌套等)
html:是超文本标记语言, 其中的标签都是预先定义好的, 不能自己定义
xml:xml是可扩展标记语言, 其中的标签允许用于自己定义
相同点: 都是标记语言, 都是由W3C组织统一发布的. 在解释时都可以使用dom思想来进行解析.
2、xml简介
可扩展标记语言, 现在主要用于传输数据和作为应用程序的配置文件
xml是一门数据交换格式或者是数据存储格式
<中国>
<北京>
<海淀区/>
<朝阳区/>
</北京>
<河北>
<石家庄/>
<秦皇岛/>
</河北>
</中国>
在xml中, 是通过标签来表示数据本身, 利用标签之间的嵌套关系来表示数据之间的层级关系
3、xml的语法
(1)一个格式良好的xml文件必须要具有一个文档声明
<?xml version="1.0" encoding="utf-8"?>
(2)一个格式良好的xml文件必须要具有一个根标签
(3)xml中的元素名称必须要符合一定的规范
严格区分大小写、元素名不能以数字或标点符号开头
不能包含冒号或者空格
4、xml的应用场景
xml的应用场景主要有两个
(1)传输数据
由于xml本质上是一段字符串, 因此可以用于在不同的系统和平台之间传输数据
(2)作为应用程序的配置文件
由于xml可以保存有结构的数据, 因此常被用于用作应用程序的配置文件, 比如后面所学的(C3P0、spring、springMVC、Mybatis、hibernate、struts2等框架都是使用xml来作为配置文件)
(3)其他应用场景: 用于开发网页/模拟数据库等
products.xml
路径问题
一、Web阶段的路径
1、相对路径:不以斜杠开头的路径
比如: demo.css
demo.js
…/demo.css
2、绝对路径:以斜杠开头的路径
比如: /test/a/1.jpg
/test/a/index.html
推荐使用绝对路径, 因为相对路径不太稳定, 举例说明!
------------------------------
现在/a/index.html中引入了一幅图片:
(1)第一次访问, index.html的访问路径是:
http://localhost/test/a/index.html
当前文件(index.html)所在的路径是:
http://localhost/test/a/
再拼接上相对路径(1.jpg), 就得出了图片的完整路径:
http://localhost/test/a/1.jpg
这个路径是正确的, 所以可以访问到图片!
(2)第二次访问, 通过HelloServlet转发访问index.html, 那么index.html的访问路径是:
http://localhost/test/HelloServlet
在/a/index.html中引入了一幅图片:
<img src="1.jpg"/>
当前文件(index.html)所在的路径是:
http://localhost/test/
再拼接上相对路径(1.jpg), 就得出了图片的完整路径:
http://localhost/test/1.jpg
这个路径是错误的, 所以访问不到图片!
在Web阶段推荐使用绝对路径, 在写绝对路径时, 什么时候需要加上当前Web应用的虚拟路径, 什么时候不需要加?
(1)请求转发:
request.getRequestDispatcher("/a/index.html").forward(res, req);
(2)请求包含:
request.getRequestDispatcher("/a/index.html").include(res, req)
<%@include file="/a/index.jsp" %>
<%@page errorPage="/a/index.jsp"%>
请求转发和包含因为只能转发或包含同一个Web应用内部的资源, 所以在写路径时, 不需要加上Web应用的虚拟路径!!
(3)请求重定向:
response.sendRedirect("/test/a/index.html")
(4)定时刷新:
response.setHeader(“Refresh”, “3;url=/test/a/index.html”)
(5)图片的路径
(6)引入JS文件/jQuery文件
(7)引入css文件
(8)表单的提交路径
(9)超链接跳转的路径