邮箱验证
ajax 用jquery编写的ajax,用于注册时的邮箱验证,运用ajax的局部刷新技术,与服务器进行交互,
用注册的email与服务端传递来的email进行比较,用的话输出为1表示不可用,没有则输出为0表 示可用
----------------------------------
jquery: jquery是一个javascript库,简化了js的编程。jquery可以隐藏当前html元素,<p>元素, class="test",id=test的元素,改变html和css操作。jquery有元素选择器、属性选择器、样式选择器。jquery核心是jquery的事件处理方法。当jquery与js库函数使用符号冲突时,比如都用$时,jquery用 var jq = jQuery.noConfilct() jq代替$,noConfilct()方法代替。
---------------------------------------
ognl 通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。OGNL是通常要结合Struts 2的标志一起使用。主要是#、%和$这三个符号的使用
parameters 包含当前HTTP请求参数的Map #parametersid[0]作用相当于request.getParameter("id")
request 包含当前HttpServletRequest的属性(attribute)的Map #request.userName相当于request.getAttribute("userName")
session 包含当前HttpSession的属性(attribute)的Map #session.userName相当于session.getAttribute("userName")
application 包含当前应用的ServletContext的属性(attribute)的Map #application.userName相当于application.getAttribute("userName")
attr 用于按request > session > application顺序访问其属性(attribute) #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止
用于过滤和投影(projecting)集合,如books.{?#this.price<100};
构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。
------------------------
javabeans Javabean 就是一个类,这个类就定义一系列 get<Name> 和 set<Name> 方法。 Javabean 就是为了和 jsp 页面传数据化 简交互过程而产生的。
使用 javabean 和不用 javabean 的区别:
一个 javabean 就是为 jsp 页面上的元素一一开辟一个空间,然后根据需要赋值、读值。而如果不用 javabean ,就直接使用 HttpServlet 的 request 对象:只在 jsp 页面间传递获取数据:tring name=req.getParameter(“name”);javabean在jsp中<jsp:useBean> <jsp:setProperty>标记 ,在jsp中生命周期只相当于一个request,当request转交给另一个对象时,它的生命周期就已重新开始。
javabean是一种组件,可以实现代码的重复利用,易于维护。特点:执行java.io.Serializable接口,提供无参构造器,提供get set方法,访问属性。
----------------
pojo 普通javaBean
-------------------------------------------------
json javascript对象语言表示法,是轻量级的文本数据交换格式,有自己的描述,简易方便,json数 据可以通过ajax进行传输。语法:数据有逗号分隔,花括号保存对象,方括号保存数组。json的值可以是数字、字符串、逻辑值、数组、对象、null。文件类型是.json。
----------------------------------------------
字节流(inputStream outputStream) 字节流直接操作在文件中,输出结果会直接在文件中
把字节写入文件中,需要四个步骤,1、使用File类找到一个文件 File f = new File("d:"+File.separator+"test.txt"); 2、通过子类实现父类对象OutputStream out =null;
out = new FileOutputStream(f);
3、进行操作 String str = "Hello World!!!";
byte b[] = str.getBytes();//把字符转化为数组
out.write(b); 4、关闭输出流 out.close();
package org;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class OutputStreamDemo05{
public static void main(String[] args) throws Exception{
File f = new File("d:"+File.separator+"test.txt");
OutputStream out =null;
out = new FileOutputStream(f);
String str = "Hello World!!!";
byte b[] = str.getBytes();//把字符转化为数组
out.write(b);
out.close();
}
}
字符流 (reader writer) 字符流在操作时,会先把结果存在缓存中,然后再存到文件中
package org;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class OutputStreamDemo03{
public static void main(String[] args) throws Exception{
File f = new File("d:"+File.separator+"test.txt");
Writer out =null;
out = new FileWriter(f);
String str = "Hello World!!!";
out.write(str);//这一步只是把字符流写到缓存中
out.flush();//没有这一步,是不能把字符流,写到文件中
out.close;
}
}
--------------------------------------
java序列化
------------------------------------
递归 就是程序自身的调用。
package zzia;
public class Digui {
public static int jie(int n){
if(n==0||n==1){
return n;
}else{
return n*jie(n-1);
}
}
public static void main(String[] args){
System.out.println(jie(5));
System.out.println(1*2*3*4*5);
}
}
-----------------
延迟加载
访问一个属性时,如果他有过多的外连接,而我们只需要其中一个时,就需要用到延迟加载,只访问其中一个属性。
------------------------
数据库座连接右连接
左连接(left join)where只影响右表,右连接(righr join)where只影响左表。
select * from tb1 Left Join tb2 where tb1.id = tb2.id
左连接后的检索结果只显示tb1的所有数据和tb2中满足where条件的数据
select * from tb1 Right Join tb2 where tb1.id = tb2.id
检索结果是tb2中的所有数据和tb1中满足where条件的数据。
inner join 有效连接 显示左右表中都有的信息。
full join 全连接 显示左右表中的所有数据
----------------------------------------
排序
冒泡排序
package zzia;
public class Maopao {
public static void main(String[] args) {
int array [] = {12,23,2,34};
int arr = array.length;
for(int i=0;i<arr-1;i++){
for(int j=arr-1;j>i;j--){
if(array[j]<array[j-1]){
int tem = array[j];
array[j]= array[j-1];
array[j-1]=tem;
}
}
}
for(int i:array){
System.out.println(i+" ");
}
}
}
---------------------------------------------------
jdbc连接数据库
package jdbctest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
public class Dbtest{
private static String URL="jdbc:oracle:thin:@localhost:XE";
private static String USERNAME="oa";
private static String Password="oa123";
public static Connection getCon(){
Connection conn = null;
PreparedStatement pstmt = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(URL,Username,password);
String sql ="";
pstmt =conn.preparedStatement(sql);
pstmt.excute();
pstmt.close();
}catch(Exception){
e.printStackTrace
}
}
return conn;
}
-----------------------------
测试类
---------------------------------
Spring注解
@Resource (默认Byname)作用相当于@autowired,有两个属性name和type,可以根据两个属性查找,一般来说要比@autowired好。
@autowired (根据类型自动装配) 可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。
----------------------------------------
modeldrvean
ModelDriven背后的机制就是ValueStack。ModelDrivenInterceptor是缺省的拦截器链的一部分,当一个请求经过ModelDrivenInterceptor的时候,在这个拦截器中,会判断当前要调用的Action对象是否实现了ModelDriven接口,如果实现了这个接口,则调用getModel()方法,并把返回值(本例是返回user对象)压入ValueStack。
----------------------------------------------
sql优化
sql语句优化
null 不能用null,因为null中不含索引,查找速度慢
通配符 % like __
order by 语句
not <> 这些都会降低sql语句的执行效率。
最高效的删除重复记录方法 ( 因为使用了ROWID)例子:
delete from emp e where e.rowid >(select min(x.rowid) from emp x where x.emp_no = e.emp_no)
用where字句替换having字句;减少对表的查询;使用表别名;用exists代替in;用索引提高效率。
--------------------------------------------------------
int 转换为String类型
int i = 10;
String s = " "+i;
String s = String.valueOf(i);
String s = Integer.toString(i);
------------------------------------------------------------
hibernate:
简单的说 hibernate就是jdbc+缓存:相对来讲jdbc在性能上有优势,而hibernate胜在容易学习和使用,但在用到很复杂的多表查询和复杂的数据库操作时,jdbc要比hibernate有优势。hibernate是封装了jdbc底层数据的访问细节。jdbc使用的是sql语言,它是一种结构化查询语言,不能很好的面向对象,而hibernate使用的是hql,能够很好的面向对象。hibernate会把数据库连接以及对象关系编写在配置文件当中,便于对数据维护和修改。
hibernate使用了缓存,分为一级缓存和二级缓存,一级缓存也就是session,它在查询过一次数据库后,会把数据库信息存放在缓存中,当第二次查询时,会直接从内存中取,加快了查询速度,二级缓存,是把处理信息的数据库语言都经过编译之后存放在sessionfactory,当需要使用时就直接调用,提高效率。hibernate的orm机制把数据之间的关系都通过配置文件加载进去,减少了大量执行sql语句的麻烦。
-----------------------------------------------
struts2:Struts2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。
struts2框架处理步骤:
1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被FilterDispatcher接收。
3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。
4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。
6、返回HTTP响应到客户端浏览器。
------------------------------------------------------
spring:主要起到解耦合的作用,它的实现主要依靠ioc 和aop。
ioc 控制反转,服务需要实现专门的接口,通过接口,由对象提供这些服务,可以从对象查询依赖性 (例如,需 要的附加服务)通过 JavaBean 的属性(例如 setter 方法)分配依赖性
aop 面向切面编程,它主要是通过配置文件中的切入点切入程序。
---------------------------------------------
反射:
所有的对象都是class的实例 通过class.forName(类名)得到类的实例,通过实例化的newInstance获取类的对象 getMethods 得到方法名 getFileds 得到属性。
Class ownerClass = owner.getClass():得到该对象的Class。
Field field = ownerClass.getField(fieldName):通过Class得到类声明的属性。
Object property = field.get(owner):通过对象得到该属性的实例,如果这个属性是非公有的,这里会报IllegalAccessException。
-----------------------------------------------
接口:
---------------------------------------------------------------------
事务:
事务是访问数据库的一个操作系列,数据库应用系统通过事务集来完成对数据库的存取;
原子性 即不可分割性,事务要么全部被执行,要么就全部不被执行。事务的所有子事务都提交,则数据 库改变状态,如果有一个子事务提交失败,则数据库操作被 回滚,回到执行之前的状态。
一致性 事务的执行使得数据库从一种正确状态转换为令一种正确状态。
隔离性 在事务正确提交之前,不允许把事务对数据的修改提供给其他事物,即在事务正确提交之前, 它的可能结果不能被其它事务查看。
持久性 事务在提交之后,其结果将永久保存在数据库中。
------------------------------------------------------------------
MVC model模型(数据层 和 业务层)使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。控制器接受用户的请求,并决定应该调用那个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
------------------------------------------------
单例模式:
饿汉式是在单例类的实例在jvm启动时就创建好了,懒汉式则是在第一次访问单例类的实例时才去创建
饿汉式:public class EagerSingleton {
private static final EagerSingleton instance = new EagerSingleton();
private EagerSingleton() {
}
public static EagerSingleton getInstance() {
return instance;
}
}
懒汉式:需要考虑到同步
public class LazySingleton {
private static LazySingleton instance = null;
private LazySingleton() {
}
public static synchronized LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}
-----------------------------------------------------
synchronized(同步):java关键字,当修饰方法和代码块时,表示同时时刻内最多只有一个线程执行这个代码块。
ajax 用jquery编写的ajax,用于注册时的邮箱验证,运用ajax的局部刷新技术,与服务器进行交互,
用注册的email与服务端传递来的email进行比较,用的话输出为1表示不可用,没有则输出为0表 示可用
----------------------------------
jquery: jquery是一个javascript库,简化了js的编程。jquery可以隐藏当前html元素,<p>元素, class="test",id=test的元素,改变html和css操作。jquery有元素选择器、属性选择器、样式选择器。jquery核心是jquery的事件处理方法。当jquery与js库函数使用符号冲突时,比如都用$时,jquery用 var jq = jQuery.noConfilct() jq代替$,noConfilct()方法代替。
---------------------------------------
ognl 通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。OGNL是通常要结合Struts 2的标志一起使用。主要是#、%和$这三个符号的使用
parameters 包含当前HTTP请求参数的Map #parametersid[0]作用相当于request.getParameter("id")
request 包含当前HttpServletRequest的属性(attribute)的Map #request.userName相当于request.getAttribute("userName")
session 包含当前HttpSession的属性(attribute)的Map #session.userName相当于session.getAttribute("userName")
application 包含当前应用的ServletContext的属性(attribute)的Map #application.userName相当于application.getAttribute("userName")
attr 用于按request > session > application顺序访问其属性(attribute) #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止
用于过滤和投影(projecting)集合,如books.{?#this.price<100};
构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。
------------------------
javabeans Javabean 就是一个类,这个类就定义一系列 get<Name> 和 set<Name> 方法。 Javabean 就是为了和 jsp 页面传数据化 简交互过程而产生的。
使用 javabean 和不用 javabean 的区别:
一个 javabean 就是为 jsp 页面上的元素一一开辟一个空间,然后根据需要赋值、读值。而如果不用 javabean ,就直接使用 HttpServlet 的 request 对象:只在 jsp 页面间传递获取数据:tring name=req.getParameter(“name”);javabean在jsp中<jsp:useBean> <jsp:setProperty>标记 ,在jsp中生命周期只相当于一个request,当request转交给另一个对象时,它的生命周期就已重新开始。
javabean是一种组件,可以实现代码的重复利用,易于维护。特点:执行java.io.Serializable接口,提供无参构造器,提供get set方法,访问属性。
----------------
pojo 普通javaBean
-------------------------------------------------
json javascript对象语言表示法,是轻量级的文本数据交换格式,有自己的描述,简易方便,json数 据可以通过ajax进行传输。语法:数据有逗号分隔,花括号保存对象,方括号保存数组。json的值可以是数字、字符串、逻辑值、数组、对象、null。文件类型是.json。
----------------------------------------------
字节流(inputStream outputStream) 字节流直接操作在文件中,输出结果会直接在文件中
把字节写入文件中,需要四个步骤,1、使用File类找到一个文件 File f = new File("d:"+File.separator+"test.txt"); 2、通过子类实现父类对象OutputStream out =null;
out = new FileOutputStream(f);
3、进行操作 String str = "Hello World!!!";
byte b[] = str.getBytes();//把字符转化为数组
out.write(b); 4、关闭输出流 out.close();
package org;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
public class OutputStreamDemo05{
public static void main(String[] args) throws Exception{
File f = new File("d:"+File.separator+"test.txt");
OutputStream out =null;
out = new FileOutputStream(f);
String str = "Hello World!!!";
byte b[] = str.getBytes();//把字符转化为数组
out.write(b);
out.close();
}
}
字符流 (reader writer) 字符流在操作时,会先把结果存在缓存中,然后再存到文件中
package org;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
public class OutputStreamDemo03{
public static void main(String[] args) throws Exception{
File f = new File("d:"+File.separator+"test.txt");
Writer out =null;
out = new FileWriter(f);
String str = "Hello World!!!";
out.write(str);//这一步只是把字符流写到缓存中
out.flush();//没有这一步,是不能把字符流,写到文件中
out.close;
}
}
--------------------------------------
java序列化
------------------------------------
递归 就是程序自身的调用。
package zzia;
public class Digui {
public static int jie(int n){
if(n==0||n==1){
return n;
}else{
return n*jie(n-1);
}
}
public static void main(String[] args){
System.out.println(jie(5));
System.out.println(1*2*3*4*5);
}
}
-----------------
延迟加载
访问一个属性时,如果他有过多的外连接,而我们只需要其中一个时,就需要用到延迟加载,只访问其中一个属性。
------------------------
数据库座连接右连接
左连接(left join)where只影响右表,右连接(righr join)where只影响左表。
select * from tb1 Left Join tb2 where tb1.id = tb2.id
左连接后的检索结果只显示tb1的所有数据和tb2中满足where条件的数据
select * from tb1 Right Join tb2 where tb1.id = tb2.id
检索结果是tb2中的所有数据和tb1中满足where条件的数据。
inner join 有效连接 显示左右表中都有的信息。
full join 全连接 显示左右表中的所有数据
----------------------------------------
排序
冒泡排序
package zzia;
public class Maopao {
public static void main(String[] args) {
int array [] = {12,23,2,34};
int arr = array.length;
for(int i=0;i<arr-1;i++){
for(int j=arr-1;j>i;j--){
if(array[j]<array[j-1]){
int tem = array[j];
array[j]= array[j-1];
array[j-1]=tem;
}
}
}
for(int i:array){
System.out.println(i+" ");
}
}
}
---------------------------------------------------
jdbc连接数据库
package jdbctest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.PreparedStatement;
public class Dbtest{
private static String URL="jdbc:oracle:thin:@localhost:XE";
private static String USERNAME="oa";
private static String Password="oa123";
public static Connection getCon(){
Connection conn = null;
PreparedStatement pstmt = null;
try{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(URL,Username,password);
String sql ="";
pstmt =conn.preparedStatement(sql);
pstmt.excute();
pstmt.close();
}catch(Exception){
e.printStackTrace
}
}
return conn;
}
-----------------------------
测试类
---------------------------------
Spring注解
@Resource (默认Byname)作用相当于@autowired,有两个属性name和type,可以根据两个属性查找,一般来说要比@autowired好。
@autowired (根据类型自动装配) 可以对成员变量、方法和构造函数进行标注,来完成自动装配的工作。
----------------------------------------
modeldrvean
ModelDriven背后的机制就是ValueStack。ModelDrivenInterceptor是缺省的拦截器链的一部分,当一个请求经过ModelDrivenInterceptor的时候,在这个拦截器中,会判断当前要调用的Action对象是否实现了ModelDriven接口,如果实现了这个接口,则调用getModel()方法,并把返回值(本例是返回user对象)压入ValueStack。
----------------------------------------------
sql优化
sql语句优化
null 不能用null,因为null中不含索引,查找速度慢
通配符 % like __
order by 语句
not <> 这些都会降低sql语句的执行效率。
最高效的删除重复记录方法 ( 因为使用了ROWID)例子:
delete from emp e where e.rowid >(select min(x.rowid) from emp x where x.emp_no = e.emp_no)
用where字句替换having字句;减少对表的查询;使用表别名;用exists代替in;用索引提高效率。
--------------------------------------------------------
int 转换为String类型
int i = 10;
String s = " "+i;
String s = String.valueOf(i);
String s = Integer.toString(i);
------------------------------------------------------------
hibernate:
简单的说 hibernate就是jdbc+缓存:相对来讲jdbc在性能上有优势,而hibernate胜在容易学习和使用,但在用到很复杂的多表查询和复杂的数据库操作时,jdbc要比hibernate有优势。hibernate是封装了jdbc底层数据的访问细节。jdbc使用的是sql语言,它是一种结构化查询语言,不能很好的面向对象,而hibernate使用的是hql,能够很好的面向对象。hibernate会把数据库连接以及对象关系编写在配置文件当中,便于对数据维护和修改。
hibernate使用了缓存,分为一级缓存和二级缓存,一级缓存也就是session,它在查询过一次数据库后,会把数据库信息存放在缓存中,当第二次查询时,会直接从内存中取,加快了查询速度,二级缓存,是把处理信息的数据库语言都经过编译之后存放在sessionfactory,当需要使用时就直接调用,提高效率。hibernate的orm机制把数据之间的关系都通过配置文件加载进去,减少了大量执行sql语句的麻烦。
-----------------------------------------------
struts2:Struts2框架由3个部分组成:核心控制器FilterDispatcher、业务控制器和用户实现的业务逻辑组件。
struts2框架处理步骤:
1、客户端浏览器发出HTTP请求。
2、根据web.xml配置,该请求被FilterDispatcher接收。
3、根据struts.xml配置,找到需要调用的Action类和方法, 并通过IoC方式,将值注入给Aciton。
4、Action调用业务逻辑组件处理业务逻辑,这一步包含表单验证。
5、Action执行完毕,根据struts.xml中的配置找到对应的返回结果result,并跳转到相应页面。
6、返回HTTP响应到客户端浏览器。
------------------------------------------------------
spring:主要起到解耦合的作用,它的实现主要依靠ioc 和aop。
ioc 控制反转,服务需要实现专门的接口,通过接口,由对象提供这些服务,可以从对象查询依赖性 (例如,需 要的附加服务)通过 JavaBean 的属性(例如 setter 方法)分配依赖性
aop 面向切面编程,它主要是通过配置文件中的切入点切入程序。
---------------------------------------------
反射:
所有的对象都是class的实例 通过class.forName(类名)得到类的实例,通过实例化的newInstance获取类的对象 getMethods 得到方法名 getFileds 得到属性。
Class ownerClass = owner.getClass():得到该对象的Class。
Field field = ownerClass.getField(fieldName):通过Class得到类声明的属性。
Object property = field.get(owner):通过对象得到该属性的实例,如果这个属性是非公有的,这里会报IllegalAccessException。
-----------------------------------------------
接口:
---------------------------------------------------------------------
事务:
事务是访问数据库的一个操作系列,数据库应用系统通过事务集来完成对数据库的存取;
原子性 即不可分割性,事务要么全部被执行,要么就全部不被执行。事务的所有子事务都提交,则数据 库改变状态,如果有一个子事务提交失败,则数据库操作被 回滚,回到执行之前的状态。
一致性 事务的执行使得数据库从一种正确状态转换为令一种正确状态。
隔离性 在事务正确提交之前,不允许把事务对数据的修改提供给其他事物,即在事务正确提交之前, 它的可能结果不能被其它事务查看。
持久性 事务在提交之后,其结果将永久保存在数据库中。
------------------------------------------------------------------
MVC model模型(数据层 和 业务层)使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。控制器接受用户的请求,并决定应该调用那个模型来进行处理,然后模型用业务逻辑来处理用户的请求并返回数据,最后控制器用相应的视图格式化模型返回的数据,并通过表示层呈现给用户。
------------------------------------------------
单例模式:
饿汉式是在单例类的实例在jvm启动时就创建好了,懒汉式则是在第一次访问单例类的实例时才去创建
饿汉式:public class EagerSingleton {
private static final EagerSingleton instance = new EagerSingleton();
private EagerSingleton() {
}
public static EagerSingleton getInstance() {
return instance;
}
}
懒汉式:需要考虑到同步
public class LazySingleton {
private static LazySingleton instance = null;
private LazySingleton() {
}
public static synchronized LazySingleton getInstance() {
if (instance == null) {
instance = new LazySingleton();
}
return instance;
}
}
-----------------------------------------------------
synchronized(同步):java关键字,当修饰方法和代码块时,表示同时时刻内最多只有一个线程执行这个代码块。