Java 笔记整理
包含内容
Unix
Java 基础,
数据库(Oracle jdbc Hibernate pl/sql),
web,
JSP,
Struts,
Ajax
Spring,
Ejb,
java和模式
张巍峰 编辑
20009.10
Linux/Unix笔记
用户:xiangf Pwd xiangf
Put mput上传多个Get mget下载多个
在linux下Jdk的安装
Vim 。bash-profile编辑
Core Java笔记
PATH:指定可执行程序(命令)在哪个目录。不同目录用(:)分开。--->SHELL
CLASSPATH:指定(jar文件)中间字节码文件在什么地方。由多个目录组成的集合。--->
Source .bash_profile:只能经过这条命令之后,才会让修改的变量生效。(csh)
3,运行时,一定在顶层包的同级目录下运行java命令,
(如果顶级包所在的目录已经被配置到CLASSPATH中的话可以在任意目录中启动 java命令)
运行命令java xxxx 类的名字--- 启动虚拟机
(一)语言:适合于internet
(二)变量:
String(字符串)复杂数据类型(类)
BigDecimal比double更精确,一般用于处理高精度运算。
&是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and)
3,大小写敏感。 4,没有长度限制。如:ArrayOutOfBoudle
XXXXXX;
XXXXXX;
(1) a;
XXXXXX;
XXXXXX;
4,分支
XXXXXXXXXXX;
XXXXXXXXXX;
XXXXXXXXXXXX;
XXXXXXXX;
1,申请空间;(把值放到空间里,再把空间的地址给引用变量。)----创建父类对象
1,在普通方法里,指代当前对象引用(哪个对象调用该方法,this就指向该对象)
(4)初始化本类的实例变量(该类的所有属性);
(也就是会先执行static修饰的变量);
(访问的是父类的静态方法);
Object是Java里所有类的直接或间接父类,Object类里面的所有功能是所有java类共有的
Exception(异常):运行时的概念。
2)Exception:从代码的角度是程序员可以处理的问题;
1)声明抛出异常(消极的处理)
2)LinkedList集合类实现List接口,他底层是以链表实现的,查询慢,增删快,
(Key--value)不可重复且无序--可重复
Hashtable类实现Map接口:查询慢,线程安全
注意:如果需要定位,就得用“普通”的 for,在列表遍历期间无法删除集合对象。
=======图形界面(GUI)==================================
2,设置布局管理器
=======多线程========================================
Reader/Writer 字符流的父接口
((可以向下转换)) 与上面的(1)是相等,
BufferedReader/PrintWriter 有缓冲
ORACLE
1) nvl('hello','world')-----> 'hello'
2) select id,last_name,dept_id
3) select id,concat(last_name,first_name),dept
1) select sysdate from dual;
fm:在不引起歧义的情况下去掉前置的零和空格
1.等值连接(内连接) 条件: fk-----pk
1) select dept_id
2) select last_name,dept_id,start_date
--->select e.last_name,e.dept_id,e.start_date
Define Variable
1) define varname=value
2) accept varname type prompt ' ' hide //单
1.db structure
1) 约束前面是逗号就是表一级,
2) not null只能定义在列一级
3) 联合键只能定义在表一级
1) 表的列名,列数,类型靠子查询定
2) 主sql规定了列名,列的个数,不能定义列的类型
3) 可以制定约束
1) 表:存放描述数据库状态的数据
DML:
1) update luxw8
Transaction(事务):必须具有原子性
ACID:
A:原子性,加钱和减钱都要成功或都失败,保持原子性;
DDL:
2) nextval:
1) create view emp_v1
2) 复杂视图:里面包含了函数,连接,组函数
JDBC笔记
OracleDriver{
DB2Driver{
/com/kettas/jdbc/cfg/config.properties
2. read Student.class 读取类文件
3. Class c----> 获得Student类详细信息(类对象)
1. jdbc 六个步骤
2. 注册Driver的三种方式
3. ResultSet遍历
1) next()---->boolean
4. 三种execute方法的区别
4)使用pstm的环境
Transaction: 一组不可再分的sql命令,根具体业务有关
1 PreparedStatement
3 ThreadLocal
1) app: showinterface
4. 事务处理conn.commit 或conn.rollback;
Repeatable read
1) 手动控制事务的大小,节约了db服务器的内存
2) 事务结束时写日志,减少了查找失败事务的时间
3) 删除备份数据库表里的约束,减少数据进入时验证的时间
4) 降低数据库的隔离级别,设置到read uncommited
5) 插入时选择PreparedStatement,执行同构sql,减少编译
ResultSet.TYPE_SCROLL_INSENCITIVE
ResultSet.CONCUR_UPDABLE
1.db--sql
2. db
3. dao( CarDao--->jdbc_car , LicenseDao--->jdbc_li
2. db
3 dao
Object query(value){
1)API 2) ACID 3)并发问题 4)隔离级别
1) Batch
2)数据分页
Hibernate
2) relation db -----> create table
4) configure file ----> classpath(src)
5) application ( base hibernate )
1) create table hilotable
2)
2) 没有写property-ref, 没有写cascade
1. 标签: 类驱动表,真实反应Java里的类,即:以类为主
1.javabean
2 db table
1. 修改配置文件
1) 查询同一个对象,不用再访问数据库,
2) 脏的检测,当检测到实体集合与深度拷贝集合里的数据不同时,会把改变的对象同步到数据库里。
1 many-to-many
1) java
2)db
2. hibernate---->ormapping (object-->db)
3.Persist
2) 一级cache(Session)----> 集合
2) 利用持久化对象的扩散
A--->B--->C--->D
1) query by id ( get() or load() )
1. Student s=sess.get(Student.class,id,LockMode.U
LockMode.NONE: 查询时先在cache(缓存)里找,如果没有,再到db里加载 无
1. javabean
2. db
3. mapping file
4. change config file
5. dao
6. biz
7. view
8. test
1.optimistic-lock
2. 1)javabean ---> extends
3. valuetype 值对象 (没有oid的java对象)
1) one value ---> component (两个类一张表)
2) one collection (两个类两张表)
3) one map
1) Company c=sess.get(Company.class,18);
2) query oid;
4) Criteria
5) 本地sql
2. 支持多态查询
Iterator et=q.iterate(); --->效率高
4. 数据分页:
6. 参数绑定:
7. 连接:
8. 组函数
12. batch update
13. SQL语句是对数据库的表操作,HQL语句是对类的操作。
Session
_new _self _blank _top 如果不加_表示一个f
JavaScript_1:============
========= 词法特性 =================
JAVA:
JavaScript_2:==================
|- 0,非0 | null 和非null
6 作为变量函数
servlet
|- webapps : 最重要的一个目录,其下放置各种Servlet文件、网
|- WEB-INF目录
|- web.xml 配置文件
1 Servlet接口、GenericServlet类、HttpServlet类 :
2 使用GenericServlet实例 :
3 使用HttpServlet简单实例 :
com.kettas.servlet.LoginServlet
4 请求转发 :
(1) 第一个servlet,负责业务
(2) 第二个servlet,负责显示
(3) web.xml片段 :
5 关于Cookie, 在客户端浏览器保存用户状态的一种机制
6 关于HttpSession, 在服务器端保存用户状态的一种机制
7 ServletConfig对象和ServletContext对象
// 覆盖之前调用父类的这个方法, 否则ServletConfig对象会丢失
1 : 通过web.xml文件,在ServletContext对象中存入数据
8 监听事件和过滤器
监听包括三种情况,分别是HttpRequest、Session、ServletContext监听。
常用的是implements servletContextListener(全局变量)两个方法 p
Session监听事件所示 :
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import com.kettas.upp02.util.Constant;
public class SessionListener implements HttpSessio
public void sessionCreated(HttpSessionEvent ent)
HttpSession session = ent.getSession();
synchronized (this) {
ServletContext ctx = session.getServletContext(
Integer counter = (Integer) ctx.getAttribute("s
ctx.setAttribute("sessionCount", counter.intVal
System.out.println(Constant.LOGO + "SessionCoun
+ (counter.intValue() + 1));
}}
public void sessionDestroyed(HttpSessionEvent ent
HttpSession session = ent.getSession();
synchronized (this) {
ServletContext ctx = session.getServletContext(
Integer counter = (Integer) ctx.getAttribute("s
ctx.setAttribute("sessionCount", counter.intVal
System.out.println(Constant.LOGO + "SessionCoun
+ (counter.intValue() - 1));
}
}}
在web.xml文件中配置如下 :
shop. SessionListener
其他两个监听事件的实现同上并无二致。
过滤器 // 实现Filter接口
import java.io.IOException;
(1)加载和实例化:找到servlet类的位置通过类加载器加载Servlet类,成功加载后,容器通过
(2)初始化: 容器将调用Servlet的init()方法初始化这个对象。初始化的目的是为了让Ser
Servlet采用多线程来处理多个请求同时访问,Servelet容器维护了一个线程池来服务请求。
线程池实际上是等待执行代码的一组线程叫做工作者线程(WorkerThread),Servlet容器使
当容器收到一个访问Servlet的请求,调度者线程从线程池中选出一个工作者线程,将请求传递给该线程,
当这个线程正在执行的时候,容器收到另外一个请求,调度者线程将从池中选出另外一个工作者线程来服务新的请
当容器同时收到对同一Servlet的多个请求,那这个Servlet的service方法将在多线程中并
3)、如何现实servlet 的单线程模式
<%@ page isThreadSafe=”false”%>
1) 表达式标签 <%= 1 + 1 %>
3) 普通脚本 : <% %> 普通脚本是不能嵌套的
<%= 1+ 1 %>
3 动作元素
<%@page contentType="text/html" %>
Action ---> Biz
4) 编写下一个JSP
ProductBiz
QuerProductAction
1) 获取struts的jar包 --> 拷贝到WEB-INF/lib
3) 确保struts用到的配置文件被放置到指定的位置 . struts1.2.7/webapps/
3) 在jsp中使用资源文件的内容 . 编程时使用key 显示时看到的是value
2) 在ActionForm里编写验证代码 . @Override validate() Actio
3) 编写Action对象.execute方法 |-> 调用biz对象的方法. |->
---> Action ---> Biz ---> Dao
XXXXXXXX
ResultSet
1) 程序员负责编写需求说明书 . 说明
1) 保证validation.jar , jakarta-ora.jar
ActionForm
DynaActionForm
Struts 2
Ajax部分
1. javascript 创建XMLHttpRequest 对象并用它与web server 通信
1. 创建XMLHttpRequest 对象xhr;
4. (在使用POST 方法使用)使用xhr 的setRequestHeader 设置请求头。通常设
5. 使用xhr 的send 方法发送请求;
1) 获取ajax核心对象XMLHttpRequest的标准JavaScript函数 :
2) 实例 : 在网页中验证电子邮箱输入的格式
3) 向服务器请求获得xml文件(对象)
7 封装ajax的调用步骤 :
8 采用kettasAjax对象,采用不同的方式向服务器发送不同类型的数据
9 页面部分更新,只更新表格部分
10于Ajax中的Json
Json 是一种线上协议,轻量级的xml 一种文体格式
// ss.getProducts()方法返回一个商品对象的集合
(2) 实例 : 人员管理
<%@taglib uri="http://struts.apache.org/tags-html"
${error}
<%@taglib uri="http://struts.apache.org/tags-bean"
/**实现HibernateCallback()方法所传的参数必须是final的,
Object object = getHibernateTemplate().executeFi
//通过session获得标准
//如果以下这3个参数都不为空的时候执行