首页 > 代码库 > 银保项目总结2014.8.22

银保项目总结2014.8.22

自我分析见证自己的成长..
银保项目总结:
1.开发前没有系统的分析所有的流程
2.思考问题思路不清晰
3.很多东西忘记了,导致效率底下,开发工具使用,不熟悉


学习技巧:
一旦有一个操作,就要分析操作的所有流程;
所有的web项目都是
1.验证数据
2.清除数据
3.获值(jquery)
4.传入后台(form表单,ajax,a标签href,action)
5.后台处理传入数据库
6.数据库db操作函数,复用select_paramIndex_returnParam
7.传值(out.print())
8.显示
以上步骤全部基于:操作
1.每一个操作,都要分析每一种可能
2.非法操作(前台),失败操作(后台),成功操作(后台)

JQUERY
对JQUERY的理解 都是通过先地位,再筛选,然后改变状态
$("#parentid child[attr=attrValue]")
  .attr("attrName","attrValue)
  .css("cssName","cssValue")
  .html("htmlValue");

JQUERY AJAX JSON知识
1.jquery.js,json.js,json6个包
2.前台格式
前台
$.ajax({
  url:"test.action",
  data:{name:zhangsan,age:20}   //注意
  type:"post",
  dataType:"json",
  success:function(msg){
   $.each(msg,function(idx,item){
    //... idx遍历数,item当前遍历信息;
   })
  }
})
3.后台格式
后台
responsesetContentType("text/javascript;charset=gbk");      //注意
//单个
out.print(JSONObject.fromObject("{name:‘zhangsan‘,age:‘20‘}").toString());    //注意
//数组
ArrayList<String> list =new ArrayList<String>();
list.add("{name:‘zhangsan‘,age:‘20‘}");
list.add("{name:‘lisi‘,age:‘21‘}");
out.print(JOSNArray.fromObject(list).toString());         //注意

ajax加载数据过大几千条,在IE9中渲染就会变慢 chrome一般在1s左右
$("#table").html()>js>jquery 渲染速度
1.多用id选择器,少用class,用tagName
2.多用链式操作
3.先绑定后插入
$.ajax({
  url:"test.action",
  data:{name:zhangsan,age:20}
  type:"post",
  dataType:"json",
  success:function(msg){
   $.each(msg,function(idx,item){
     var htmlstr = "<tr><td>"+item.name+"</td><td>"+item.age+"</td><td>"+item.hobbit+"</td><td>"+item.height+"</td></tr>";
     $("#table").html(htmlstr);
   })
  }
})


JQUERY获值
$("#select").val();
$("#select option:selected").text();
$("#select").get(0).selectedIndex;

$("#select").val("zhangsan");
$("#select option[text=abc]").attr("selected",true);

//$("#checkbox_parent").change(function(){  相同效果
$("#checkbox_parent").click(function(){
  //$("#checkbox_child").attr("checked",true);  //全选
  //$("#checkbox_child").attr("checked",false);  //全不选
  //$(":checkbox[id=checkbox_child]").attr("checked",$("#checkbox_parent").attr("checked"));  //同步选
  //$(":checkbox[id=checkbox_child]").attr("checked",!$(":checkbox[id=checkbox_child]").attr("checked"));  //不同步选
  //$(":checkbox[id=checkbox_child]").each(function(){;          //反选
  //   $(this).attr("checked",!$(this).attr("checked"));
  //})
  //$(":checkbox[id=checkbox_child]:checked").each(function(){ alert($(this).attr("value")); })//选中的值
  $(":checkbox[id=checkbox_child]").each(function(){ if($(this).attr("checked")==false) alert($(this).attr("value")); })//没选中的值
})
当checkbox有多组时
一个checkbox_parent 和 多个checkbox_child
用$("#checkbox_child")只能获得第一个数据
因为document.getElementById()返回的是单个数据
$(":checkbox[id=checkbox_child]")返回checkbox中所有的id=checkbox_child的数据
使用的是getElementByTagName()返回多个数据;
$.each(function(){
 $(this)   //当前下标对象;
})


小知识:
1.end() 返回上一个操作的元素
2.find()查找子元素
3. .each()中的中断    break  continue 用一下替代
   return false; -->break;
   return true; -->continue;

java正则
Pattern.matches(reg,str);
*-->0
+-->1


一个很方便的验证
//  var reg = /[^0-9]+/g;
 function vali(obj,reg){
  var v = $(obj).val();
  if(reg.test(v)){
   $(obj).val(v.replace(reg,""));
  }
 }

informix数据库
1.select skip M first N name from student;  //分页  M跳过M个数据,取后面N个数据;

2.分组的另一种方法
select name,age from student s1 where name in   //按班级分组得到每个班的人姓名;
(select name from student where class = s1.class );

3.存储过程
------------基本-----
drop procedure pro_test1(int);
create procedure pro_test1(var_num int)
returning int;
define temp1 int;
let temp1=9;
return temp1;
end procedure;         

-------------带有查询 返回值
--drop procedure pro_test(char(50));     -- SHZ31405
--create procedure pro_test(var_num char(50))
--returning char(30);
--define temp1 char(30);
--select  username into temp1  from shz_appusers where userid= var_num ;
--return temp1;
--end procedure;
     
execute procedure pro_test(‘SHZ31405‘);

------------------------插入操作-不返回值---------
drop procedure pro_insert(char(30));
create procedure pro_insert(var_num char(30))

define temp_i
insert into shz_appusers(username) values (var_num);
--updata from shz_appusers set userid=‘1‘ where username=var_num;
end procedure;

------------------

--------条件----------
IF ( condition ) THEN
   statements
ELIF ( condition ) THEN
   statements
   …
ELSE
   statements
END IF;
--------实例---
drop procedure pro_if(int);
create procedure pro_if(var_if int)
returning char(30);
define result_if char(30);
if var_if = 0 then
let result_if = ‘success!‘;
elif var_if = 1 then
let result_if = ‘failed!‘;
else
let result_if = ‘nofind‘;
end if
return result_if;
end procedure;
execute procedure pro_if(10);

--foreach------------
FOREACH SELECT salary INTO ind_sal
FROM customer
WHERE location = “UK"
sum_sal += ind_sal;
END FOREACH;
RETRUN sum_sal;       6)continue或exit语句
       都可以被使用在for、foreach和while循环语句中。
       参考实例如下:
FOR i = 1 TO 5
   LET j = i;
   WHILE (j > 0)
      LET id = foo(j);
      IF (id = 5) THEN
         LET j = j – 1;
         CONTINUE WHILE; -- 不执行后续的操作,继续回到while循环接着执行
      END IF;
      LET sum = sum + 5;
      LET j = j – 1;
      IF (sum > 500) THEN
         EXIT FOR; -- 退出for循环
      END IF;
   END WHILE;
END FOR;
RETURN sum;
--------实例---
drop procedure pro_foreach;
create procedure pro_foreach(var_foreah int)
returning char(30),char(50);
define un char(30);
define ui char(50);
foreach select username,userid into un,ui  from shz_appusers where userid = var_foreach
end foreach;
end procedure;
------while循环------
WHILE (条件表达式)
   执行的语句
END WHILE;      while中的条件表达式的举例如下:
WHILE (count < 20)
WHILE (status matches "A*")
WHILE (EXISTS (SELECT name FROM customer WHERE cus_num=100))
WHILE (status IN ("A", "I", "D"))
--------实例---
drop procedure pro_while(int);
create procedure pro_while(var_while int)
returning int;
define idx int;
let idx=1;
while var_while < 100
let idx=idx+1;
let var_while=var_while+1;
end while;
return idx;
end procedure;
execute procedure pro_while(10);
--循环-for----
FOR count = 2 TO 30
FOR count = 2 TO 30 STEP 2
FOR count IN ( 2, 5, 7, 9)
FOR count IN ( 2 to 8 STEP 2, 12 to 19, 22)
FOR name IN ("AMY", "MAX",
(SELECT name FROM customer WHERE customer_num = 100) )
--------实例---
drop procedure pro_for(int);
create procedure pro_for(var_i int)
returning int;
define i int;
for i=1 to 10
let var_i=var_i+1;
end for
return var_i;
end procedure;
execute procedure pro_for(10);

---------------返回多行值  游标---------------------------------
drop procedure pro_dele;
create procedure pro_dele()
define p_time date;
begin work;
foreach curl for
--update游标必须命名
select time_stamp into p_time from pro_dele_tbl
where num > 100
if p_time is not null then
delete from pro_del_tbl where current of curl;
--删除当前记录
end if;
end foreach;
commit work;
--所有修改记录的锁被释放。
end procedure;
---------------返回多行值with resume---------------------------------
drop procedure count_add;--删除存储过程
create procedure count_add(user_name_var varchar(50) default ‘administrator‘)
--user_name_var传递参数变量在此定义
returning varchar(50);
--返回一个字符型的值
define error_count_var integer;
----定义输入的次数变量
select error_count into error_count_var from users where user_name=user_name_var;
----error_count默认是0,从0开始记数
let error_count_var=error_count_var+1;
----输入一次记数加1
update users set error_count= error_count_var where user_name =user_name_var ;
return user_name_var;
--返回变量值,与returning对应。
return user_name_var WITH  RESUME;
----将保证存储过程继续执行,所有的变量均保持原有的值
end procedure

银保项目总结2014.8.22