zoukankan      html  css  js  c++  java
  • 最近小项目总结 2013.5.3

    距离上次更新随笔已经快1个月了,要不是有这个项目,估计很难又会拾起这些以前很熟悉,现在却很非常生疏的东西。

    从4.22左右到5.2 终于完工了, 闲暇时间做的,总体还可以。 

    功能也就是增,删,改,展示并打包下载的。

    项目内容:

    A公司是某行业权威部门,是系统内的出版机构。 部分企业向A公司缴纳费用后,就可以上传自己的企业信息和产品信息,然后A公司的编辑部门就会根据这些信息来设计宣传广告

    *生成key后,发放给已经缴费的企业

    *企业根据key,一次性填写企业信息和产品信息(产品最多填写6个)

                

    1.首先根据要求的字段创建了相关的数据库表

         3个表:  key 表;company表;product表

    2. 开始分析如何设计web应用程序

       因A公司给的需求,要求最好在同1页面中收集到所有信息;但是这样的话,在同一个页面要判断好多post过来的参数,公司信息参数20个,单个产品信息10个,最多60产品参数。

      故摒弃了这种做法,用3个页面来实现系统。   addkey.aspx 用于验证key是否有效;addCompany用来判断company是否有效;addProduct用来添加product信息(一次添加一个,添加完可以在本页面展示本企业已经上传的列表)

    3.确定好页面逻辑就开始动手建立项目

    1.   下载动软生成器; 根据数据库生成项目。  生成的项目内 有  Bll,Dll,Common,DbUtitly,Web  5个子项目。
    2.    web项目中有  PageValidate.cs  此页面有正则可以用来判断post或者get过来的参数是否合法化
    3.    Bll 一般逻辑处理项目 用于和Dll 交流数据;假设获取某表最大的Id,则Bll 中有个 Exist(int id){ Return  Dll.Exist(ID);},Dll中有个和Bll中同名的Exist 用来访问数据      库获取信息。  
    4.    DbUtitly 是处理sql的最基本语句,Dll中调用DbUtitly中的成员访问数据库。  一般情况下不单独使用DbUtitly
    5.     Web项目中  根据表的字段 生成了若干页面                例:company表,就生成了add.aspx,show.aspx,delete.aspx,showlist.aspx
    6.     common项目中有一些功能;   比如:发送邮件,弹出对话框;生成excel 等功能。

      根据这个项目又重新熟悉了一些内容如下

    • IIS7配置和IIS6配置(win2003 用的IIS6),主机头配置,二级域名配置(要求网络提供商那要解析);注意集成方式和经典方式;注意应用程序池的启动 和一些 具体参数,回收和停止应用程序池。
    • 上传图片时候要给与文件夹写入权限,否则提示无访问权限。
    • 文件夹判断存在否,建立文件夹;文件是否存在,创建文件,删除文件;
    • 如果没用server 控件,则 同一页面要上传多个图片, 用Form表单 Mulitpart 上传,不限制上传数据大小; 普通postdata 限制post数据大小

     

    • 根据第三方dll,来压缩整个项目文件夹,生成压缩包*.zip  ; 附上实例:下载地址
    • 根据动软生成器生成的common类 来生成Excel  *.xls
    • 提供下载压缩包。
    • key要求唯一,则通过GUID,根据机器码,时间,操作系统参数等等好多参数生成 ,目测几千年才会出现一次相同。  sql: NewId();
    • connectString加密。  web.config 可以 用动软生成器的加密工具,对明文数据库连接字符串进行加密。

        

    • sql注入问题;

     假设:a.aspx?id=1     则如果是拼接sql,数据库则执行 select * from X Where id='1'

       如果用户输入的是, 1' or 1=1;drop database xx;--,则数据库执行  select * from x  where id='1' or 1=1;drop database xx;

    则xx数据库会被删除掉。

    解决办法: 通过ADO.net提供的 SqlParm 来生成参数

                   sql="select * from product where id=@id";

                   sqlParm a=new sqlparm("@id",id);

                  然后执行数据库,这样就可以判断是否有注入,如果有注入则自动提交失败。

         

        

      

  • 相关阅读:
    Linux进程间通信之信号量
    C语言文件操作
    Linux多线程同步方法
    Linux进程间通信之共享内存
    关于P2P下载的思考
    学习Jxta,初窥门径
    庆祝一下,基于JXTA的P2P文件共享传输文件测试成功。
    关于java nio在windows下实现
    Java aio和JSR 203
    关于文件目录的P2P共享问题
  • 原文地址:https://www.cnblogs.com/StudyLife/p/3055968.html
Copyright © 2011-2022 走看看