drp项目管理日志

一,数据库的设计
0.模块:人员管理,物料管理,报表部分,物流单部分
1,生成报表的工具(第三方工具:直接与数据库连,可用sql语句查询):润乾包表,等等;
2,web展现工具:ext,doado等
3,数据库的三个范式:a.第一范式:有主键,列不可分割独立;
                     b.第二范式:完全依赖,不存在部分依赖;
                     c.第三范式: 不存在传递依赖
4,分销商树形结构设置:需用一个number型的数据(oracle中)作为主键。
5,PowperDesiger中设置分销商的级别为一个外键。
6,物理数据模型转化为sql脚本的过程:a:纠错:用菜单栏的tools中的check model检查是否有错,右击错误可自动纠错;
                                   b:将表名改为大写,去掉表名上的双引号:在tools中model option--(code与name)都需设置为大写的(uppercase),将表的名字改为大写,去掉引号;
       c:取消外键约束(可省略的一步),在数据库=>genarate datebase=>option中将外键去掉。
       d:生成sql脚本,数据库=>genarate datebase。
7.oracle的安装过程:
                   a.把oracle的安装包放在一个不含中文字符的目录下。
                   b.验证本机是否安装了oracle,sql server等数据库:右击我的电脑--管理--服务--若能找到相关的服务,就说明本机已安装。
     c.当解压完毕,打开目录中的setup.exe进行安装;
     d.建议自己建立一个文件目录,然后我们把数据库安装进去的;在这里创建一个启动数据库(默认数据库),当我们在创建一个数据库实例时,就会自动的创建三个用户,sys,system等
     e,此时会报错,“程序异常终止,发生内部错误”,此时右击set.exe--属性--兼容性(改为windows server 2003);在一管理员的身份运行此安装程序
8,将sql脚本导入到oracle当中,步骤如下:a,创建用户,用plsql developer工具,system用户登录,打开一个commend window,输入以下命令:create user drp identitied by drp;
                                       b,建立表空间,命令如下:"create tablespace ts_drp datafile 'D:\oracle\oracle1\oradata\filedate-date.dbf' size 100m;"
                                       c.将建立的表空间赋给创建的用户,命令如下;" select username,default_tablespace from dba_users;"
           d.通过system用户给用户授权,命令如下:"grant create session ,create table,create view,unlimited tablespace to drp;"
           e.切换到新建的用户,"show user;"查看当前的用户;"conn drp/drp;"切换到drp用户;
           f.将sql脚本文件导入," @C:\Users\wenwen\Desktop\DAPlearning\drp_oracle.sql;";
9,html相关知识:a.<head>中的<meta>标签当中可以设置html编码,是否缓存,动态出现,搜素引擎的设置等等;
                b.相对路径:将图片存在与html同级下的img文件夹,直接用"img\1.jpg"即可;
  c.横线;<hr>可设置长度,宽度,颜色等属性,
  d.超链接<a href="#" target="">
  e.字体:<font size="16" color="" 》,<b>粗体,<i>斜体,<u>下划线,<s>中划线,<sub>下标,<sup>上标,
  f.特殊字符:空格,>,<,",&等的表示。
  g.保持文章原始的格式:<pre>
10.表单提交方式:get与post区别:a.get发送 的数据有限制:256byte,且发送的内容显示在url的后面,与herf这一效果相同;
                                b.post发送的数据的大小没有限定 ,且发送的数据不在url后面显示。
11.id是标签的唯一标示,不能重复,那name当type相同的时候可以重名,服务器拿到的数据始终是value,checkbox多选,radio单选,select<option>下拉选择,加上mutiple属性变为多选等
12,<input type="image" src="a1.jpg">相当于submit
13,html的框架:<frameset cols="30%,*"><frame name="left" src=""></frame><frame name="rigth" src=""></frame></frameset>
                 <iframe>内部滚动条;
14,css日志: a.引用外部的css文件的方法:三种,前两种舍去,第三种:<head><link rel="stylesheet" style="text/css" src="demo.css"></link></head>
             b.css的一般格式:body {background-color: #FFCC66; background-image: url("butterfly.gif"); background-repeat: no-repeat[repeat-x];}
      c.字体的设置格式:p {font-style: italic;font-weight: bold();font-size: 30px;font-family: arial, sans-serif;}
      d.文本修饰:h1 {text-decoration: underline[line-through,overline];}
      e.水平字间距:h1 {letter-spacing: 6px;}
      f.CSS属性text-transform用于控制文本的大小写。无论字母本来的大小写,你可以通过该属性令它首字母大写(capitalize)、全部大写(uppercase)或者全部小写(lowercase)。
             g.连接特效制作:为未访问过的链接和已访问过的链接分别使用伪类a:link和a:visited。活动的链接对应的伪类为a:active,有鼠标悬停的链接对应的伪类为a:hover。
        点击是字体变大:a:hover {letter-spacing: 10px;font-weight:bold;color:red;}
        去掉连接中的下滑线:a:link {color: blue;text-decoration:none;}
       h.设置对象的边框样式,border : border-width || border-style || border-color ;
       border-width :length:由浮点数字和单位标识符组成的长度值,不可为负值 ;
       border-style:none: 无边框 ,默认值,solid: 实线边框 ,double:双线边框,
       border-color:color:指定颜色,
       border-collapse,separate  : 默认值。边框独立(标准HTML) ,collapse  : 相邻边被合并 ,
15,js学习日志:a.引用外部js文件的方法:<script src="demo1.js" language="javascript">
              b.设置浏览器:工具--internet选项--高级--显示每个脚本的错误;工具--internet--常规--设置--每次访问网页时。
       c.局部变量与全局变量的使用与java的相同;
       d.强制类型转换:parseInt()[parseFloat()];
       e.自定义对象:function Person(){}这是定义的类;调用:Person p=new Person();赋值: p.name="张三"; p.age=12;
       f.内置对象:Object用法:Person p=new Object();
                   String: var a=new String("hello world");
              g,DOM:一个标签对应一个dom对象,面向对象的思想,通过这些对象操作标签;window.getElementById("demo").value;


二,用户(user)管理界面的开发,
0,将原型拷贝到webroot下,
1,连接数据库,与mysql,sql server相同,打开oracle服务(oracle..listener..,oralceserviceORCLHSP)拷贝驱动包,写连接数据库的类;
2,xml相关的知识:a.相对于html而言,他将数据与形式分开,xsl规定了xml的结点名称与顺序等,web.xml就是运用了DTD,schema等规定的规范,才能点出<servlet>等,
                 b.xml访问方式(就是提取xml中的内容):sax,dom,dom4j,jdom等
3.将登陆的信息(drivername,url,username,password)等信息写到一个xml当中,读取它,完成数据库的连接工作;
4.用户管理模块相关知识:a.单例模式,采用static关键字,将dao单例化,这与spring的注解吻合;
                        b.利用oracle客服端工具(Toad)自动生成增删改查等sql句;
   c.客户注册时间利用系统的时间,prepareStatement.setTimestamp(1,new Timestamp(System.currentTimeMillis()))
                        d.将原型中的html改为jsp,a,加上jsp的头;b.改后缀名即可;
5.js,正则表达式做验证: a.了解了validator的验证的使用方法,比较快,但是限制比较的,不能做个性化定制;
                        b.每一个if后加上return关键字,使验证更加人性化;
   c.正则表达式语法:var re=new RegExp(/^[a-z1-9A-Z]{4,6}$/),正则表达式要new一个 RegExp的对象放置正则,'/../'表示这里面匹配正则表达式;'^'表示开始匹配,'$'表示结束匹配,'[a-z1-9A-Z]'表示匹配这个范围中的任一个字符,'{4,6}'表示此字符串只能在4-6位之间;
6.键盘监听事件:a,<body οnlοad="init()">init函数控制当此页面被加载的时候,鼠标焦点停留到指定位置;
                b,<input type="text" onkeypress|οnkeydοwn="funtion()">;event.keyCode 获取按下键的Unicode,并可以进行一定的操作;
  c,事件event.srcElement 设置或者获取触发事件的对象;拿到form后设置它的action与submit等属性,进行跳转提交;
7,junit单元测试业务层与数据库的连接情况;(学习里面有详解)
8,中文乱码处理:在jsp的头部的pageEncoding是限制了服务器发给客户端的编码方式,而request.setCharacterEncoding这个方法是限制了从客户端向服务器发送时的编码方式;
9,当数据库中有待查入的数据时,应返回这些数据到文本框;(未实现)
10,ajax实现服务器端查重,步骤learning的ajax中详解:a.注意:xmlHttpReq.responseText获取的数据有空格,必须去掉之后才能进行判断他是否正确;
                                                   b.checkIDinfo.innerHTML="<font color='blue'>可以注册</font>";
         c.checkIDinfo必须是全局变量,或者在callback函数中重新获得;
11.分页查询(oracle)当中做分页:第一步:在oracle数据库当中,写sql语句,三层嵌套,需要不断地用rownum就要不停的嵌套得到每页的数据;select t.* from( select rownum fn, t.* from(select * from t_user where user_id <> 'root') t where rownum <= 4) t where fn >2
                     第二步:sql查出总共的条数;
       第三步:根据currentPageNo(当前页),pagesize(一页显示多少条记录):"<="范围currentPageNo*pagesize,">"范围(currentPageNo-1)*pagesize
                     第四步:前三步已经完成基本的查询,接下来封装pagemodel类;
12.修改用户:a.var selectflag=document.getElementByName("selectflag");这里的selectflag是一个数组,拿到它后循环验证是否被选中,注意:将页面上的多选框value设为userid,方便url拿到它;
             b.接下来location=url;调用ser 完成相关操作;
13.删除用户:a.多条删除,通过下面的方法拿到id的一个数组,循环调用业务层的删除逻辑,String[] values=request.getparametervalue();拿到的是一个数组,
14.过滤器filter:(可用于做字符编码设置,权限设置,servlet的.do设置)执行流程:面向切面的思想(AOP),设在tomcat与servlet之间的一系列filter链,
                    a.tomcat启动时服务器自动初始化;
      b.tomcat接受到web客户端的数据,request封装了数据;
      c.request到达指定了过滤目录的filter,将request数据传到这里,fliter调用dofilter方法,做相关的全局设置,在调用dofilter传给servlet做业务层的增删改查;
      d.servlet做完操作之后,返回数据封装在response当中,此时进入到filter当中,结束本次的filter过滤;
15.实现全选与全不选:用一个js函数实现,当然前面用过用jquray实现了,将每行的checkbox的name="selectflag",拿到这个数组后,for循环将他的checked属性这位true,flag[i].checked=true;
16,filter实现用户登录:<未实现>
17.url时:request.getContextPath()的作用,不知道啥作用;
18,sql注入:select * from t_user where user_id='fdfdfd' and password='' or '1'='1 ',能够查到说有的用户;
19.批量删除,提交一次事务,用String拼sql句;

三,分销商管理界面的开发
1.完成树形结构的开发;(作为一个例子方便以后用到树的使用);
2.rational rose的使用;
3.利用一张表实现自增增长,在java中用rs.getInt("value")拿到数据,select (t.value+1) as value from t_table_id t where table_name='t_client';
4.数据库悲观锁select(sql)..+for update;当事务发生回滚或提交时别的用户才能使用此对象且释放此锁,syn...那个方法也是一样
5.DAO模式的相关:1.可分为表示层,业务层,持久化层(连接数据库的JDBC); 
                 2.面向接口,如调用JDBC的Connection都是面向抽象接口的,有利于扩展;单向依赖关系;
   3.工厂模式:功能--将访问JDBC细节做了封装,new出DAO;
   4.DAO层细粒度,不涉及逻辑,如增加之前判断一下是否已经存在;而在Manager则需要加入一些逻辑,如判断一下,或是需要修改别的表;
6.访问路径(js中失灵):回到根部<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
                    <%@ page import="com.wenwen.drp.datadict.*" %>
                     <%
                String path = request.getContextPath();
             String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
                       %>
                      <html>
             <head>
              <base href="<%=basePath%>">
7.自定义异常(runtime异常),抛到界面做相关的处理;
8.servlet过滤器的配置:1.filter只对指定路径的文件做过滤,所以servlet中还要配置filter;
                      2.过滤器只对post提交起作用;
9,有关请求转发与重定向的路径问题:1. request.getRequestDispatcher("/basedata/item_add.jsp").forward(request, response);
                                  2. resp.sendRedirect(req.getContextPath()+"/basedata/item_maint.jsp");
10.404与500错误过滤器优化:
11.调试技巧:空指针,1,在work中找到第一个堆栈对象的sevlet,第几行出错;
                     2,若出现空指针,则是对象创建失败,或者对象的属性没有设进去;或者没有调用创建对象的方法;
       3,设置断点,查看是否调用了DAO层的方法,若没有跳转到debug界面,则表示没有调用此方法;
12.在java中可直接拿到checkbox值为true的value.代码如下:String[] userIds=request.getParameterValues("selectFlag");
13.在增删改成功与否的返回界面上用到request接受时,最好用三则运算符,如:<%=request.getAttribute("msg")== null ? "" :request.getAttribute("msg") %>
14.图片上传,两种方式:
15,复杂工厂模式(Spring):1,设置一个Servlet在Tomcat启动时初始化需加上:<load-on-startup>2</load-on-startup>
                         2.深刻理解工厂模式,并是实现他的做法;
    3.保证factory单例时,采用了application域;
    4.保证itemdao与service单例时用了Map;
26.EL学习;
27.密码修改(复习js,ajax);
28.建立流向单等实体(桌面上有UML),添加流向单的主从表;
四:流向单多表操作:
1.生成系统时间;new Timestamp(System.currentTimeMillis());
2.ThreadLocal(线程局部变量):a.将connection进一步封装,使得不同线程间的同一个名字变量不相互影响,能够保证线程安全;
                              b.ThreadLocal是一个范围:局部变量,全局变量,整个本线程内;
3.事务的批处理:psts.addBatch();psts.executeBatch();在一个提交当中添加多条数据;
4.window.opener...拿到开启新窗口的父窗口;
-------------------------------------------------------------------------------------------
一:spring的基本理解:
0.spring的作用:实例化相关的bean;自动装配将bean装配到其他的bean当中;
1.spring注入类型:1.setter方法,这是常用的一种方法,就是添加setter方法;2.构造方法;3.接口注入;
2. 自动装配:autowire="byname" or "bytype" ,自动装配后,就不用在bean中手动指定装配那个对象了,spring自动完成了装配;
3.bean的范围(scope):scope="prototype" 默认的是单例模式,但一般建议用prototype;
4,xsd规定了xml能够有的标签:“spring/xsd命名空间”;
5.bean标签中加上属性init-method="init()"其中init是bean中的一个方法,当此bean创建时,先执行这个方法;“F:/spring/init-method”
6,@antowire自动提示自动出现;"F:/spring/@"
7,#autowire的使用方法:添加在方法之上,默认是根据类型注入的,"F:/spring/autowire"
8.resource注入,默认是
bytype@resouce(name)
9.Spring的AOP面向切面编程:在每一个方法前执行一段话,使用动态代理类实现;  "F:/spring/AOP contects";
10.使用Proxy对象与InvocationHandler对象实现动态代理;"F:/spring/Proxy" "F:/spring/InvocationHandler";
11.spring的动态代理实现模拟:在xml中配置<aop:aspectj_autoproxy />,并编写动态代理类;"F:/spring/aop_aspect_xml"  "F:/spring/aop_aspect_java";
12.spring的动态代理实现过程,"F:/spring/spring_aop实现"   "F:/spring/spring_aop实现1";
13.spring连接数据库,"datasource",,"F:/spring/spring_datasource".
-------------------------------------------------------------------------------------------
:项目部署
1.jsp空间和域名的申请试用:
   a.www.netjsp.com租用空间与域名,在此网站注册;看pwd.txt
   b.创建虚拟主机,选择JDK,tomcat等,进入管理;
   c.启用leapFTP,服务器等设置;
   d.利用eclipce 的database插件连接远程服务器,在里面建表;
   e.项目中的目录不能写死了,因为上传后不传项目名
--------------------------------------------------------------------------------------------
1,使用div,span等时必须指定float属性,不然不会显示;
2,magin是外边距,padding是里面的内容里边框有多远,都必须减去此控件的高与宽;
3,设置这个div的宽度,然后设置它的margin值 margin: 0 auto;就会居中了。
  

 

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值