Day01
一、Javascript基础
1.什么是Javascript?
Javascript是一种客户端运行的解释性脚本语言。
Javascript是由网景(Netscape)推出的产品。
Microsoft推出的JScript。
ECMAScript(欧洲计算机制造商协会),
2.Javascript能做什么?
完成客户端的交互工作(如表单的验证、焦点广告、菜单效果等)。
3.Javascript的使用方式
3.1 使用外部的JS文件
Javascript文件的扩展名.js
3.2 书写于文档的头部
4.JS代码规范
A.可选的分号(但一般情况下都需要分号结尾)
B.大小写敏感
C.每行代码尽量不要超过80个字符。
5.标识符
指语言环境下的变量名称、类名称、对象名称等。
A.标识符必须以字母或下划线开头,包含字母、数字及下划线。
B.标识符禁止包含空格、斜线等特殊符号。
C.标识符禁止与系统关键字相同。
6.变量
[var] 变量名称;
[var] 变量名称 = 值;
说明:建议在声明变量时使用var关键字。
二、数据类型
1.字符型(string),必须括在单引号/双引号之间。
转义符:
\n,换行
\r,回车
\t,水平制表符
\v,垂直制表符
\\,反斜线
\',单引号
\",双引号
2.数值型(Number),可以存储整数或浮点数,
可以带有符号位。
3.布尔型(Boolean),只有true和false。
4.数据类型的自动转换
字符+数字:数字转换成字符
数字+布尔:布尔转换成数字(true=>1,false=>0)
字符+布尔:布尔转换成字符(true=>"true",false=>"false")
布尔+布尔:布尔转换成数字(true=>1,false=>0)
5.数据类型的强制转换
parseInt,转换成整数
parseFloat,转换成浮点型
6.Javascript的调试工具(补)
Firebug(F12) --> Console(控制台)
7.运算符
字符运算符:+
算术运算符:+(正数)、-(负数)、*、/、%、+、-、
逻辑运算符:!、&&、||
比较运算符:>、>=、==、!=、<>、===(全等)、!==(不全等)、<=、<
全等:值与数据类型完全匹配。
自增/自减运算符:
i++,i--(后缀形式:先使用,后加减)
++i,--i(前缀形式:先加减,后使用)
三目运算符: 表达式? 值:值;
流程控制:
if
if...else
if...else if...else
switch
for
while
do...while
Day02
一、Javascript的内置对象
1.String
创建String对象
直接量方式
var object = '值';
var object = "值";
构造函数方式
var object = new String("value");
属性
length
描述:获取字符串的长度
语法:intobject.length
方法
toLowerCase()
描述:转换成小写字母
语法:stringobject.toLowerCase()
toUpperCase()
描述:转换成大写字母
语法:stringobject.toUpperCase()
substr() [补P17[2]]
描述:截取字符串
语法:stringobject.substr(int start[,int length])
说明:
A.字符从0开始编号
B.起始位置为负数,则倒数
substring()
描述:截取字符串
语法:stringobject.substring(start[,end])
说明:包含起始位置,但不包含结束位置。
indexOf()
描述:返回一个字符串在另一个字符串第一次出现的位置
语法:intobject.indexOf(string str[,int start])
说明:如果没有出现则返回-1
lastIndexOf()
描述:返回一个字符串在另一个字符串最后一次出现的位置
语法:intobject.lastIndexOf(string str[,int start])
说明:如果没有出现则返回-1
charAt(int pos) 等价于 substr(int pos,1)
replace()
描述:字符替换
语法:stringobject.replace(object regExp,string replacement)
split
描述:将字符串拆分成数组
语法:arrayobject.split(string separator)
2.Math
属性
Math.PI
Math.SQRT2
方法
Math.ceil()
描述:向上取整
语法:intMath.ceil(float val)
Math.floor()
描述:向下取整
语法:intMath.floor(float val)
Math.pow()
描述:幂运算
语法:floatMath.pow(float base ,float exp)
Math.sqrt()
描述:平方
语法:floatMath.sqrt(float val)
Math.min()
描述:返回最小值
语法:floatMath.min(float val,float val,....)
Math.max()
描述:返回最大值
语法:floatMath.max(float val,float val,....)
Math.round()
描述:四舍五入
语法:floatMath.round(float val)
说明:保留到整数位。
Math.random()
描述:产生随机数
语法:floatMath.random()
3.Array
创建数组
直接量方式
varobject = [值,....]
构建函数方式
varobject = new Array(值,...)
属性
length
描述:返回数组成员的数量
语法:int object.length
访问数组成员
数组名称[下标]
说明:数组的下标从0开始。
for...in语句
作用:遍历数组/对象
语法:
for(变量名称 in 数组/对象){
...
}
方法
join()
描述:将数组成员连接成字符串
语法:string object.join([stringseparator])
push()
描述:在数组的未尾添加一个或多个成员
语法:int object.push(val,...)
unshift()
描述:在数组的开头添加一个或多个成员
语法:int object.unshift(val,...)
pop()
描述:删除数组的最后一个成员,并且返回该成员
语法:val object.pop()
shift()
描述:删除数组的第一个成员,并且返回该成员
语法:val object.shift()
slice()
描述:截取数组
语法:array object.slice(start[,end])
reverse()
描述:数组反转
语法:array object.reverse()
4.Date
创建Date对象
var object = new Date()
方法
getYear()
描述:获取年份
语法:intobject.getYear()
getFullYear()
描述:获取年份
语法:intobject.getFullYear()
getMonth()
描述:获取月份(取值范围为0~11)
语法:intobject.getMonth()
getDate()
描述:获取日期(多少号)
语法:intobject.getDate()
getDay()
描述:获取星期的第几天(0为星期日,依次类推)
语法:intobject.getDay()
getHours()
描述:获取小时
语法:intobject.getHours()
getMinutes()
描述:获取分钟
语法:intobject.getMinutes()
getSeconds()
描述:获取秒
语法:intobject.getSeconds()
getTime()
描述:获取毫秒
语法:intobject.getTime()
二、自定义函数
1.什么是自定义函数
完成某种功能的代码段。
2.创建自定义函数
function 函数名称([参数[,...]]){
...
...
[return 返回值]
}
3.调用自定义函数
[var 变量名称=] 函数名称([值[,...]])
4.变量作用域
4.1 JS编译和执行过程
A.编译,只负责变量的声明和函数的定义。
而且所有变量的初始值为undefined.
B.执行,自上而下,
4.2 变量作用域
全局变量
局部变量
Day03
一、DOM编程
1.什么是DOM?
DOM[Document Object Model],文档对象模型。
DOM提供处理XML/HTML文档的API。
DOM的主要操作:节点的获取、节点的动态的创建、创建的删除及节点的替换。
节点(Node),在DOM树中所存在的任何一个元素(如HTML元素,文本、属性等)。
节点的类型
Node.ELEMENT_NODE,1(元素类型)
Node.ATTRIBUTE_NODE,2(属性类型)
Node.TEXT_NODE,3(文本类型)
Node.COMMENT_NODE,8(注释类型)
Node.DOCUMENT_NODE,9(文档类型)
2.document对象
属性
方法
getElementById()
描述:根据ID获取对象
语法:Elementdocument.getElementById(string id)
createElement()
描述:创建元素节点
语法:Elementdocument.createElement(string tagName)
createTextNode
描述:创建文本节点
语法:textNodedocument.createTextNode(string value)
createComment
描述:创建注释节点
语法:commentNodedocument.createComment(string value)
createAttribute
描述:创建属性节点
语法:attrNodedocument.createAttribute(string name)
3.Node接口
属性
firstChild
lastChild
nextSibling
previousSibling
parentNode
childNodes
nodeName
nodeType
nodeValue
方法
appendChild()
描述:追加子节点
语法:object.appendChild(node)
insertBefore()
描述:插入子节点
语法:object.insertBefore(newNode[,refNode])
Day04
一、HTMLDOM
1.什么是HTMLDOM?
HTMLDOM提供处理HTML文档的API。
2.W3CDOM与HTMLDOM的区别
W3CDOM可以处理HTML/XML文档;
HTMLDOM仅能处理HTML文档。
3.获取对象
HTMLElement document.getElementById(stringid)
4.访问HTML对象的属性
object.属性名称 = 值
[var 变量名称 = ] object.属性名称
说明:
A.HTML标记的属性即HTMLDOM节点的属性。
B.如果HTML标记的属性为合成词,在HTMLDOM中应采用"驼峰标记法"命名。
C.HTML标记的class属性,在HTMLDOM中应使用className取代。(因为class是ECMAScript预保留的关键字)
D.HTML标记的style属性,在HTMLDOM中将返回CSSStyleDecleration(或CSS2Properties)对象。
5.CSSStyleDecleration对象
访问CSS样式
CSSStyleDeclaration.属性名称 = 值
[var 变量名称 = ] CSSStyleDeclaration.属性名称 = 值
说明:
A.如果CSS样式为单个单词,则在CSSStyleDeclaration对象中直接书写。
B.如果CSS样式带有短横线,则在CSSStyleDeclaration对象中去掉短横线,然后再使用"驼峰标记法"命名。
C.CSS样式中的float属性在CSSStyleDeclaration对象中,如果浏览器为Chrome、Firefox等,则使用cssFloat取代;如果浏览器为IE则使用styleFloat取代。
6.访问HTML对象的文本
所有文本都认为纯文本(HTML不能被解析)
object.innerText
HTML可以被解析
object.innerHTML
7.添加节点
A.全部HTMLDOM节点的创建都可以通过W3CDOM的方法实现
B.有几个特殊的HTMLDOM节点,它们拥有自己的创建、删除方法。
7.1 图像
通过构造函数方式
[var 变量名称 = ] new Image(width,height)
7.2 列表框
A.列表框
add()方法
描述:添加Option对象
语法:object.add(optionElement)
remove()方法
描述:删除Option对象
语法:object.remove(index)
options属性
描述:返回列表框中所有列表项的集合
语法:object.options
value
描述:返回列表框中被选定选项的值
语法:stringobject.value
B.列表选项
创建列表选项对象(Option对象) -- 构造函数方式
[var 变量名称 = ] new Option(text[,value[,defaultSelected[,selected]]])
text,指列表项显示文本
value,指列表项的提交值,如果省略value,则提交值与显示文本相同。
defaultSelected,指是否为默认选项(boolean)
selected,指是否被选定
(boolean)
Day05
一、HTMLDOM
1.单选框/复选框/列表框
说明:
A.单选框/复选框在HTML中默认被选定,需要使用checked="checked"属性;在HTMLDOM编程时需要使有object.checked= boolean语句。
B.所有表单控件(如单行文本框、密码框等)都存在disabled="disabled"属性(禁用);在HTMLDOM编程时使用object.disabled= boolean语句。
二、选取对象的方法(总结)
A.document.getElementById(string id)
B.Element.getElementsByTagName(string tagName)
返回由标记名称所组成的集合(NodeList)。
C.document.getElementsByName(string name)
返回具有相同name属性的对象所组成的集合
(主要用于复选框)
三、Table对象
rows属性
描述:返回表格的tr对象组成的集合
语法:collectionobject.rows
rowIndex
描述:获取行对象的索引数
语法:intobject.rowIndex
insertRow()
描述:插入行
语法:rowElementobject.insertRow(index)
说明:index为新行的索引值,其编号从0开始。
deleteRow()
描述:删除行
语法:object.deleteRow(index)
s
TR对象
cells属性
语法:返回行对象中单元格对象组成的集合
语法:collectionobject.cells
insertCell()
描述:在行对象内插入单元格
语法:cellElementobject.insertCell(index)
deleteCell()
描述:删除列
语法:object.deleteCell(index)
四、window对象
setTimeout()
描述:设置一次性定时器
语法:intwindow.setTimeout(string code,int time)
setInterval()
描述:设置周期性定时器
语法:intwindow.setInterval(string code,int time)
clearTimeout()
描述:清理由setTimeout()方法设置的定时器
语法:window.clearTimeout(inttimeId)
clearInterval()
描述:清理由setInterval()方法设置的定时器
语法:window.clearInterval(inttimeId)
open()
描述:打开浏览器窗口
语法:window.open(url)
Spring
Day01
老师:刘苍松
15601035818
liucs@tarena.com.cn
Servlet/JSPAjax/jQuery
Web 前端,Web界面编程
对象的管理: 创建和销毁
Spring
IOC AOP
Spring最核心的功能:管理对象
管理对象的生存周期,和对象的关系
概念: Java Bean 实现如下规则的Java对象
1) 必须有包(package)
2) 必须有无参数构造器
3) 实现序列化接口
4) 有getXXX setXXX方法定义的Bean属性
String
5) toString
equals hashCode (后2个有ID对象都重写)(这一条不算,只是约定)
简而言之: 有一定约定的Java对象!
Spring 管理的Java Bean对象,访问Bean属性
SpDay02
class MessageBean{
String msg = “Hello”;
public String getMsg(){
return msg;
}
public void setMsg(String msg){
this.msg = msg;
}
}
//两种方式读取#{msgBean.msg} 或 #{msgBean[‘msg’]}
Day03
Spring
为什么要注入(DI/IOC)
因为对象是有关系的!
在软件运行期间,对象之间根据业务需要有关联关系
引用变量,在运行期间动态绑定到对象
进而解决的对象的耦合性
Spring的注入
1 支持两种方式注入
A 构造器参数注入(不常用)
B set方法输入(Bean属性注入)
2 Spring支持各种类型数据的注入
A 基本类型数据(含String)
B 对象(Bean)的注入
1) 引用方式
2) 匿名Bean,没有ID的Bean (不常用)
C 集合的注入 listset map properties
1) 集合中元素可以是基本类型
2) 集合中元素可以是Bean对象
3) 引用方式注入集合
使用命名空间util:
D Spring 表达式注入
1) 从Bean对象中读取数据,注入到其他Bean
2) 支持从 Bean属性读取,List集合读取
Map集合,Properties集合
3) 语法与 JSP EL 表达式相同
常见用途:读取properties文件
软件的结构与Spring
软件一般都采用“经典”的“设计模式”
软件经典结构:3层架构
表现层:就是软件的界面,用来呈现数据,与用户交互
业务层: 封装的了软件的核心功能(业务逻辑功能)
数据层: 提供业务实体的 CRUD(增删改查),也
叫持久化层
Spring 可以将软件的各个层次模块进行集成
管理。
表现层:Spring MVC 登录框
业务层: UserService
User login(String name, String pwd)
数据层:UserDao (OracleUserDao MySqlUserDao)
User findByName(String name)
JdbcDataSource 管理数据库连接
db.properties
applicationContext.xml
注解方式的默认Bean ID命名规则
类名DemoBean 注册Bean ID 为 demoBean
类名Bean 注册Bean ID 为 bean
类名SQLBean 注册Bean ID 为 SQLBean 不建议使用!
类名OracleUserDao注册Bean ID 为 oracleUserDao
另外命名(建议按照接口命名):
类名OracleUserDao@Component("userDao")
注册Bean ID 为 userDao
注入指定ID的Bean
假设 Egg@Component("e")
同时
class Food{
@Resource(name="e")
Egg egg;
}
利用注解管理 软件的组件
@Service
UserService{
@Resource
UserDao userDao;
}
@Repository("userDao")
OracleUserDao{
@Resource
JdbcDataSource dataSource;
}
@Component("dataSource")
JdbcDataSource{
String driver;
@Value("#{jdbc.url}")
String url;
String user;
Stringpwd;
@Value("#{jdbc.driver}")
public void setDriver(String driver){
//....
}
}
Day04
Spring MVC 解决的界面空值流转
页面向控制器传递值
将用户添加的数据 传递到控制器,控制器根据用户数据调用业务流程()
有3种方式
1. Request
2. 控制器方法参数注入
3. 值对象参数注入
如何从控制器向界面传递数据
将业务处理结果在界面显示
1使用 request.setAttribute()
session.setAttribute()
application.setAttribute()
2 使用ModeAndView对象
使用ModelMap参数对象
使用@ModelAttribute注解
Day06
Spring 扩展功能
1 编码支持
中: \u4e2d utf-8: e4 b8 ad GBK: d6 d0 utf-16:4e 2d
2 拦截器
Day07
2 文件上载
1) JavaWeb API没有支持文件上载协议!
2) 第三方API支持文件上载
commons fileupload apache.org
3) Spring提供了对 fileupload 的支持,使用更加简洁.需要配置bean,使用参数注入
Spring JDBC 简洁的JDBC API
核心类JdbcTemplate
1) jdbcTemplatebean 必须注入dataSource对象
2) 在Dao 对象中注入jdbcTemplate
3) 使用jdbcTemplate 对象的方法实现JDBC操作
queryForObject() 适合有唯一查询结果的SQL语句
queryForList() 适合查询多行的结果
update() 适合insert,update,delete
都提供了便捷的参数动态绑定方法
update(SQL,param …)
dataSource对象?
实际开发中,都使用第三方实现的DataSource
可以支持任意的JDBC驱动. DBCP c3p0
1) SUN 定义了DataSource接口 数据源
2) 第三方提供DataSource接口的实现 DBCPc3p0…
这些实现,都是数据源的实现,简称数据源