object类下的方法:
getClass(),hashCode(),equals(),toString(),clone(),wait(),notify
(),notifyAll(),finaliza()
JSP内置对象:
request表示HttpServletRequest对象,包含浏览器请求的信息,包含get或post请求
参数。
法。
out提供的方法,传送回应的输出。 pageContext:管理网页的属性,用于方便存取各种范围名字 response:表示HttpServletResponse对象,浏览器响应方空间、servlet相关的对象的API、包装通用的servlet相关功能的方法。
session:用于存储用户状态信息。 application:表示servlet正执行的内容,有助于查找servlet引
擎和servlet环境。
config:servlet的构架部件,用于存取servlet实例的初始化参数。
page:JSP网页本身,表示该页面产生一个servlet实例。 exception:针对错误网页,未捕捉的例外。
面向对象:
1、抽象:忽略一个主题中的无关项,以便充分体现有关项。分为:过程抽象和数据抽象。
2、继承:一种联结类的多层次模型,允许重用,提供了一种明确表达共性的方法。
3、封装:把过程和数据包围起来,通过已定义的界面对数据进行访问。把现实世界描绘成封装的对象,通过接口访问其他对象。
4、多态性:允许不同类对同一消息作出响应。包括参数化多态性和包含多态性。解决了应用程序函数同名问题。
内存:
堆:存储new出来的对象
栈:存储所有局部变量
方法区:存放类的信息和方法
变量:
局部变量:
1、定义在方法中
2、没有默认值,必须自己设定初值 3、方法在调用时存在栈中,方法结束时局部变量从栈中清除 成员变量:
1、定义在类中,方法外
2、系统默认初值 3、类在实例化后,存在堆中,对象回收时成员变量失效 抽象类和接口的区别:
1、一个类只能继承一个抽象类,但可以实现多个接口
2、抽象类可以定义自己的成员变量,接口只能有静态常量
3、抽象类可以包含非抽象方法,可以实现部分方法,接口中的方法必须是抽象的,必须实现所有抽象方法
日期操作:
1.获取系统当前日期及时间
Date date=newDate()
2.将时间转换为指定格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss")
String str=sdf.format(date)
3.将指定格式时间转换为系统时间
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss")
Date date=sdf.parse(str)
4.设置日期及时间变量
Calendar calendar = Calendar.getInstance();//创建出的Calendar表示当前系统时间
//设置年为20xx年
calendar.set(Calendar.YEAR,2008);
//设置月为5月
calendar.set(Calendar.Month,4);//月份从0开始
calendar.set(Calendar.Month,Calendar.MAY);//也可以使用常量来设置
//设置日为30日
caneldar.set(Calendar.DAY_OF_MONTH,30);
5.获取时间分量对应的值
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calednar.get(Calendar.Month);
int date = calendar.get(Calendar.DAY_OF_MONTH);
集合:
1.List、Set、Map接口
List、Set继承自Collection接口,List是有序的,元素可以重复,Set是无序的,通过实现类进行排序,元素不可以重复。Map保存key—value值,value可以多值。
2.ArrayList、Vector、LinkedList
ArrayList、Vector都是使用数组方式存储数据,允许直接序号索引元素,插入涉及数组元素移动等内存操作,所以索引快插入慢,Vector是线程安全的,所以性能稍差;LinkedList使用双向链表实现存储,插入速度快。
3.HashMap、Hashtable
共同点:都实现了Map接口,将唯一键映射到特定值上。 不同点:1.HashMap没有排序,允许一个null键和多个null值,Hashtable不允许
2.HashMap把Hashtable的contains方法去掉了,改为containsKey和containsValue
3.HashMap是Map接口的实现,Hashtable是继承Dictionary 4.HashMap不是线程安全的,在多个线程访问时必须提供外同步,Hashtable是线程安全的,不需要提供方法提供同步
字节流:InputStream和OutputStream
文件流:FileInputStream和FileOutStream
缓冲流:BufferedInputStream和BufferedOutputStream
对象流:ObjectInputStream和ObjectOutputStream
instanceOf作用是判断某个引用指向的对象是否为指定类型 indexOf(int char)索引字符串下标
substring(int begin,int end)获取子字符串,含头不含尾,下标从0开始
trim()去除字符串两边的空格
charAt(int index)获取指定位置的字符
startWith(String prefix)以给定的字符串开始
endWith(String suffix)以给定的字符串结束
toLowerCase()转为小写
toUpperCase()转为大写
valueOf(参数)将指定的参数以字符串的形式描述
StringBuilder:
1、append(String str)追加字符串
2、insert(int index,String str)在指定位置添加字符串
3、delete(int start,int end)删除指定范围内的字符串,含头不含尾
4、reverse()字符串反转
StringBuffer是线程安全的,同步处理,性能稍差,StringBuilder是非线程安全的,并发处理,性能稍快
自动装箱Integer a=Integer.valueOf(int)
自动拆箱int b=a.intValue()
int c=Integer.parseInt(String)
XML指可扩展标记语言,常用于简化数据和共享。
SAX解析
优点:解析立即执行,速度快,没有内存压力。
缺点:不能对节点做修改。
DOM解析
优点:可以遍历和修改节点
缺点:文件较大时,内存有压力,解析时间长
线程和进程:
1.一个进程至少有一个线程。进程在执行过程中有独立的内存单元,多个线程共享内存
2.每个线程有一个程序运行的入口,顺序执行序列和程序的出口,线程不能独立执行。
线程的五大状态:
1.new,创建一个线程,没有任何操作。
2.Runnable,新线程调用start方法,从new状态转换到Runnable状态,等待CPU分配时间片。
3.Running,从Runnable状态到Running状态,执行run方法。
4.Dead,从Running状态到Runnable状态,run方法运行完毕后,线程就会被抛弃进入Dead状态。
5.Block,从Running状态到Block状态,阻塞原因:I/O阻塞,调用线程的sleep方法,调用对象的wait方法。
创建线程的方式或多线程的实现方式:
1.使用Thread创建线程,Thread是线程类,每一个实例表示一个可以并发运行的线程。重写run方法是定义该线程要执行的逻辑,启动时先调用start方法把线程纳入线程调度,线程分配时间片后执
行run方法中的逻辑。优点:编写简单,可以直接操纵线程,不能继承其他类。
2.使用Runnable创建线程。实现Runnable接口,并重写run方法定义线程体,创建线程的时候将Runnable的实例传入并启动线程。优点:减少耦合,定义一个类实现Runnable接口,可以继承其他类。
sleep和wait
sleep是线程Thread的方法,暂停执行指定的时间,监控状态依然保持,调用sleep不会释放对象锁。
wait是Object类的方法,对象调用wait方法会放弃对象锁,进入等待池,此对象发出notify方法后,才会进入对象锁定池才会准备获取对象锁进入运行状态。
数据库:
数据定义语言(DDL):创建语句CREATE,修改语句ALTER,删除语句DROP
数据操作语言(DML):插入语句INSERT,更新语句
UPDATE,删除语句DELETE
事物控制语言(TCL):提交COMMIT,回滚ROLLBACK,保存点SAVEPOINT
数据查询语言:SELECT
数据控制语言:GRANT:用于给用户或角色授予权限
REMOVE:用于回收用户或角色已有的权限 CREATE USER:创建用户
创建表:CREATE TABLE 表名
查看表数据结构:DESC 表名
指定默认值:DEFAULT 'M'
非空约束:NOTE NULL
修改表:
1.修改表名:RENAME old_name TO new_name
2.增加列:ALTER TABLE 表名 ADD(列名 数据类型)
3.删除列:ALTER TABLE 表名 DROP(列名)
4.修改列:ALTER TABLE 表名 MODIFY(列名 要改为的数据类型、长度、默认值)
5.增加记录:INSERT INTO 表名(列名) VALUES(值)
6.更新记录:UPDATE 表名 SET 列名=值
7.删除记录:DELETE FROM 表名 WHERE 列名 IS NULL 字符串函数:
1.字符串连接:CONCAT和"||"
SELECT CONCAT(CONCAT(列名,':'),列名) FROM 表名 SELECT 列名|| ':' 列名 FROM 表名
2.字符串长度:LENGTH
SELECT 列名,LENGTH(参数字符串)
3.大小写转换:UPPER、LOWER、INITCAP
SELECT UPPER('hello world') FROM DUAL(全大写)
SELECT LOWER('HELLO WORLD') FROM DUAL(全小写) SELECT INITCAP('hello world') FROM DUAL(首字母大写)
4.截去子字符串:TRIM、LTRIM、RRIM
SELECT TRIM(C2 FROM C1) FROM DUAL从指定字符C1的前后截去C2
SELECT LTRIM(C1[,C2]) FROM DUAL从指定字符C1的左边截去C2
SELECT RTRIM(C1[,C2]) FROM DUAL从指定字符C1的右边截去C2
5.补位:LPAD、RPAD
SELECT LAPD(char1,n,char2) FROM DUAL左补位函数,在char1的左边用char2补足n位
SELECT RAPD(char1,n,char2) FROM DUAL右补位函数,在char1的右边用char2补足n位
6.截取子字符串:SUBSTR
SELECT SUBSTR(char,start,end) FROM DUAL起始位置从零开始
7.子字符串的位置:INSERT
SELECT INSERT(char,指定子字符串,start,end) FROM DUAL 数值函数:
1.四舍五入:ROUND
SELECT ROUND(45.678, 2) FROM DUAL; --45.68
SELECT ROUND(45.678, 0) FROM DUAL;--46
SELECT ROUND(45.678, -1) FROM DUAL;--50
2.截取:TRUNC
SELECT TRUNC(45.678, 2) FROM DUAL; --45.67
SELECT TRUNC(45.678, 0) FROM DUAL;--45
SELECT TRUNC(45.678, -1) FROM DUAL;--40
3.取模(取余):MOD
SELECTename, sal, MOD(sal, 1000) FROM emp
4.向上取整:CEIL,向下取整:FLOOR
SELECT CEIL(45.678) FROM DUAL; --46
SELECT FLOOR(45.678) FROM DUAL;--45
日期操作:
1.按照格式获取系统时间
SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd day hh24:mi:ss') FROM DUAL;
2.转换数据类型
SELEC 列名 FROM 表名 WHERE 查询条件> TO_DATE(‘2002-01-01','YYYY-MM-DD');
日期函数:
1.返回最后一天
SELECT LAST_DAY(SYSDATE) FROM DUAL;--查询当月的最后一天
SELECT LAST_DAY('20-2月-09') FROM DUAL;--查询09年2月的最后一天
2.追加月
SELEC 列名 ADD_MONTHS(列名, 20 * 12) "20周年" FROM 表名;
3.日期范围
SELEC 列名 MONTHS_BETWEEN(SYSDATE, 列名) 列名 FROM 表名;
4.下一天
SELECT NEXT_DAY(SYSDATE,4) next_wedn FROM DUAL
5.最大值、最小值
SELECT LEAST(SYSDATE, '10-10月 -08') FROM DUAL;//--最小值
SELECT GREATEST(SYSDATE, '10-10月 -08') FROM DUAL;//--最大值
6.获取指定的数据
SELECT EXTRACT(YEAR FROM SYSDATE) current_year FROM DUAL
聚合函数:
MAX、MIN、AVG、SUM、COUNT
SELECT MAX(sal) max_sal, MIN(sal) min_sal FROM emp; SELECT AVG(sal) avg_sal, SUM(sal) sum_sal FROM emp; SELECT COUNT(*) total_num FROM emp;
使用别名若区分大小写用双引号引起来
SELECT empno AS id ,ename "Name", sal * 12 "Annual Salary" FROM emp;
查询语句的执行顺序:
1.FROM:执行书序为从后往前、从右往左。数据较少的表尽量放在后面
2.WHERE子句:执行顺序为自下而上、从右到左。将能过滤掉最大数量记录的条件写在WHERE子句的最右
3.GROUP BY:执行顺序从左往右分组,最好在GROUP BY前使用WHERE将不需要的记录在GROUP BY之前过滤掉
4.HAVING 子句:消耗资源。尽量避免使用,HAVING 会在检索出所有记录之后才对结果集进行过滤,需要排序等操作
5.SELECT子句:少用*号,尽量取字段名称。ORACLE 在解析的过程中, 通过查询数据字典将*号依次转换成所有的列名, 消耗时间
6.ORDER BY子句:执行顺序为从左到右排序,消耗资源
关联查询:
1.内连接:返回两个关联表中所有满足连接条件的记录。
2.外连接:返回两个表中不满足连接条件的记录。
视图:也被称为虚表,本质是一条SELECT语句的结果集被赋予一个名字。视图本身数据不会改变,基表改变时,视图也发生改变。作用是基于复杂查询建立,简化查询。
序列:(SEQUENCE)是一种用来生成唯一数字值的数据库对象。序列的值由Oracle程序按递增或递减顺序自动生成,通常用来自动产生表的主键值,是一种高效率获得唯一键值的途径。序列是独立的数据库对象,和表是独立的对象,序列并不依附于表。
索引:是一种允许直接访问数据表中某一数据行的树型结构,为了提高查询效率而引入,是独立于表的对象,可以存放在与表不同的表空间(TABLESPACE)中。索引记录中存有索引关键字和指向表中数据的指针(地址)。对索引进行的I/O操作比对表进行操作要少很多。
Oracle分页查询:
1.确定查询的数据,并且排序(第一次子查询)
2.对数据进行编号(第二次查询)
3.根据行号取范围
SELECT * FROM(
SELECT ROWNUM rn,t.* FROM(
SELECT ename,sal,job,deptno FROM emp
ORDER BY sal DESC) t)
WHERE rn >=6 AND rn <=10
JDBC实现Oracle分页:
String sql = "select * from (select rownum rn, empno, ename, job,mgr, hiredate, sal, comm, deptno from (select * from emp order by empno) ) where rn between ? and ?";
两个占位符分别是结果集的起点和终点,计算后,替代SQL中的占位符:
int begin = (page - 1) * pageSize + 1;
int end = begin + pageSize - 1;
其中:
page:返回第几页
pageSize:每页多少条
stmt = con.prepareStatement(sql);
stmt.setInt(1, begin);
stmt.setInt(2, end);
rs = stmt.executeQuery();
JDBC实现MySQL分页查询:
select * from 表名 limit begin,pageSize
其中:
begin: 从第几条开始显示
pageSize:每页多少条
Web是基于Internet的一个多媒体信息服务系统,整个系统由Web服务器、浏览器和通信协议组成。
从一次点击到浏览器获得一张网页的过程如下:
1. 浏览器用URL查询DNS,DNS返回IP地址
2. 浏览器用这个IP地址与服务器建立连接
3. 浏览器通过连接向服务器发送一个HTTP请求
4. 根据请求内容,服务器找到响应的文件,根据文件的扩展名形成一个MIME类型的HTTP回答消息,发送给浏览器,关闭连接
5. 根据消息头,浏览器按照某种方式显示文件内容或者执行其他命令
HTML(HyperText Markup Language,超文本标记语言)是编写Web页面的语言。
id属性:定义元素的唯一标识
title属性:定义元素标题信息
class属性:定义样式
style属性:定义内连样式
表单:
action属性:发送表单数据的路径
method属性:发送表单的方式
type属性:值为text,则可以创建单行文本输入控件
value属性:为文本输入控件提供一个初始值,在表单初次加载时会显示该属性的值;
maxlength属性:用于规定输入字段的最大长度,以字符个数计; disabled属性:禁用控件,该属性的值为“disabled”;
readonly属性:规定文本框为只读,该属性的值为“readonly”。 单选框:<input type="radio"/>
复选框:<input type="checkbox"/>
提交按钮:<input type="submit"/>
重置按钮:<input type="reset"/>
标准按钮:<input type="button"/>
隐藏域:<input type="hidden"/>
文本选择框:<input type="file"/>
name属性:设置控件的名称,用于提供“名/值”对,以发送给服务器。
value属性:用于记载用户选择的上传文件的路径,以发送给服务器。
size属性:size属性用于规定文本上传控件的宽度,单位为字符。
accept属性:用于指示上传的文件的MIME类型。
disabled属性:禁用控件。
<select name=”选择框的命名” size=”不写或者值为1时是下拉框,大于1时是滚动框”>
<option value="java">Java</option>
. . .
</select>
<textarea>元素:用于创建多行的文本输入控件,可以规定输入文本的行和列
控件分组:
<fieldset>:将有关的项放在一起,并在周边创建一个框 <legend>用户信息</legend>:分组标题
用户名:<input type="text" /><br />
密码:<input type="password" />
</fieldset>
JavaScript常用内置对象:
简单对象:String、Number、Boolean
组合对象:Array、Math、Date
复杂对象:Function、Regex、Object
其他对象:window、document
String对象:定义的方法不能改变字符串的内容,返回的是全新的字符串。
String 对象的常用方法有:
?
? x.toLowerCase()、x.toUpperCase():大小写转换方法; x.charAt(index):返回指定位置的字符;
? x.charCodeAt(index):返回指定位置字符的Unicode编
码;
? x.indexOf(findstr,index)、x.lastIndexOf(findstr,index):获
取指定字符;
?
?
? x.substring(start, end): 获取子字符串; x.replace(findstr,tostr):替换子字符串; x.split(bystr): 拆分子字符串。
Array对象:如果调用构造函数 Array() 时没有使用参数,那么返回的数组为空,length 字段为 0。
Array对象的常用方法:
?
? join():用于把数组中的所有元素放入一个字符串 toString():把数组转换为字符串,与没有参数的join()
方法返回相同的字符串
?
? concat():用于连接两个或多个数组 slice():从已有的数组中返回选定的元素,传入起始和结束位置下标,含头不含尾
?
? reverse() :用于颠倒数组中元素的顺序 sort() 方法用于对数组的元素进行排序
Math对象:数学函数
Number对象:是原始数值的包装对象
toString() :用于把一个 Number 对象转换为一个字符串,并返回结果。语法为:
NumberObject.toString(radix)
其中,参数 radix 可选,规定表示数字的基数,使 2 ~ 36 之间的整数。若省略该参数,则使用基数 10。
toFixed():可把 Number 四舍五入为指定小数位数的数字。语法为:
NumberObject.toFixed(num)
其中,参数 num 必须,表示规定小数的位数,是 0 ~ 20 之间的值,包括 0 和 20,有些实现可以支持更大的数值范围。如果省略了该参数,将用 0 代替。