基于JSP工厂模式的工资查询系统设计与实现

来源 :计算机时代 | 被引量 : 0次 | 上传用户:jingkewang
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要: 分层思想在JSP技术的开发过程中的优点是层次清楚,这有利于不同程序员分式开发,从而提高效率;但是在应用每一层相关类的时候需要实例化,这会增加系统开销。采用工厂模式在开发过程中向程序员提供一个“工厂”供程序员选择“零件”,可以减少实例化次数。工厂开发模式在JSP+tomcat的开发中,可结合分层思想,按照不同的层次进行开发,同时也可独立出公共模块切入到其他模块中,有效地避免了代码重复,提高了开发效率。
  关键词: 分层; 工厂模式; JSP; tomcat
  中国分类号:TP311 文献标志码:A 文章编号:1006-8228(2012)11-66-03
  Design and implementation of wage query system based on the JSP factory pattern
  Guo Wenlong
  (Dingxi Teachers College, Dingxi, Gansu 743000, China)
  Abstract: The advantage of layered idea development in JSP technology process includes clear hierarchy, from which different programmers’ fractional development benefits, thus efficiency is improved. But in the application of each layer class it needs to be instantiated, and will increase the system overhead. Applying factory pattern extension development process provides programmers with a "factory" for the programmers to choose “parts”, which can reduce the number of instantiating. Factory development patterns in the development of JSP+tomcat can not only combine with hierarchical idea, according to the different levels of development, but also separate from public module entry to the other modules, to effectively solve the code duplication, improve development efficiency.
  Key words: stratification; the factory pattern; JSP; Tomcat
  0 引言
  分层模式是在Web开发中应用比较成熟的一种技术,开发分三层结构:数据持久层、业务处理层和表示层,其中数据持久层负责数据库的连接并执行SQL语句,业务处理层主要负责业务逻辑,对用户或系统要求的逻辑功能进行统一管理,表示层主要提供以浏览器模式的用户操作界面,这三层架构大多采用struts+spring+hibernate架构来实现。但是这样的架构对服务器(特别是对tomcat这样的轻量级服务器)来说负荷非常大,不利于小型项目的开发。JSP+tomcat负荷虽然小,但开发时代码的重复率太高。而采用工厂开发模式能解决JSP的这一问题[1],可大大的提高开发效率,并保证tomcat轻装上阵。
  工厂就是生成产品(对象)的地方,对于复杂的对象生产过程,比如按条件生成不同的对象实体时,不适合用类的构造函数实现(这样会导致构造函数过于复杂),进而可用工厂方式代替。工厂模式其实质性的内容就是:提供创建对象的接口,让用户选择需要的产品。把对象的创建封装起来,使得创建实例的责任与使用实例的责任分割开来,并由专门的模块负责创建实例,而系统在宏观上不再依赖于对象创建的细节[2]。
  工厂开发模式分为简单工厂模式、工厂方法、抽象工厂模式[3]。简单工厂模式可以根据传入的参数决定创建哪一个类的实例,它其实是工厂方法和抽象工厂模式在一定程度上的简化形式。工厂原理如图1所示。
  
  图1 工厂原理图
  在图1中UserManagerFactory向开发者提供产品,而它所提供的产品依赖于接口UserManagerDao,接口的实现由类UserManagerDaoImpl来完成。
  1 系统设计
  教职工工资查询系统采用简单工厂模式来开发。本系统的主要功能模块如图2所示,此外还包括用户服务登录模块和身份验证功能模块。根据这些功能模块和数据访问以及业务处理的要求,分成了四个层次,分别是数据访问层、业务逻辑层、工厂和使用工厂的页面,其中业务逻辑层分为业务接口和业务实现。
  [工资查询系统][查看个人信息][设置密码保护][修改个人密码][工资查询 ][查看最近公告][教职工用户][系统管理员][修改个人密码][上传工资 ][删除工资 ][查看日志 ][删除日志 ][发布公告 ][删除公告 ][添加单个用户][批量添加用户][删除用户 ]
  图2 工资查询系统功能模块
  1.1 数据访问层
  数据访问层主要用来封装访问数据库的代码,并产生Connection对象。在教职工工资查询系统中采用数据连接池方式来连接数据库的,这样可以有效减少利用JDBC连接时多次实例化和容易忘记关闭Connection对象的弊端[4]。   1.2 业务接口层
  主要用来向工厂提供产品的接口。根据功能图分成以下几种接口:
  ⑴ 用户管理:用来提供增加、删除、修改、查询、批量导入用户等方法。
  ⑵ 工资管理:用来提供上传工资文件并转化成数据表文件、删除和查询等方法。
  ⑶ 公告管理:用来提供添加、删除和查询公告等方法。
  1.3 业务实现层
  针对接口层的方法对系统进行实现。这是整个系统业务功能实现的核心,业务逻辑处理主要在业务实现层来完成,负责与数据访问层进行交互,向工厂提供“零件”。
  1.4 公共业务层
  针对系统的安全性要求,系统实现身份验证和日志记录功能,该功能主要用来防止非法用户进入系统,以及在发生了问题以后系统可根据日志记录来恢复。管理员和普通用户操作每一个页面时,通过身份验证功能对其身份进行验证,判断其合法性;通过将他们所进行的操作都写入数据库,当发生故障时这些数据用于数据分析和数据恢复。
  1.5 工厂层
  向页面级代码提供产品工厂。产品工厂主要是返回一个接口实现的实例化对象,每一个实现方法作为零件,在程序员需要的时候通过工厂去找到相应的方法调用。
  2 系统实现
  2.1 数据访问层的实现
  在本系统中数据连接层的实现采用连接池方式,这样可以减少采用JDBC连接方式频繁地打开和关闭数据库,保证了效率。在tomcat下的Context.xml文件中配置如下:
    driverClassName="com.mysql.jdbc.Driver"
  url="jdbc:mysql://127.0.0.1/role8Demo"
  username="root" password="123456"
  maxWait="5000" maxActive="4" maxIdle="4"/>
  通过连接池获取数据连接的代码封装成一个Java Bean,代码如下:
  javax.naming.Context context=newjavax.naming.InitialContext();
  javax.sql.DataSource ds=(javax.sql.DataSource)context
  .lookup("java:comp/env/jdbc/ds");
  java.sql.Connection conn=ds.getConnection();
  2.2 业务接口层
  业务接口主要封装了业务方法,向工厂提供产品。在职工查询系统中,实现的业务接口主要有用户管理、日志管理、工资管理和公告管理接口,每个接口主要提供增加、删除、修改、查询方法。
  public interface UserDao {
  public void addUser(String insrtSql);
  public void delUser(String uid);
  public void updateUser(String sql);
  public ResultSet queryById(String uid);
  public void bitchAddUser(String file);
  }
  2.3 业务实现层
  在业务实现层主要针对接口中的方法对其实现,并实现对一些更新操作的日志登记,因此在实现时不仅要对接口方法进行实现,也要实现日志写入功能。以用户管理实现为例,代码如下:
  public class UserDaoImpl implements UserDao {
  ……
  public UserDaoImpl()
  { JDBCBean jb=new JDBCBean();
  conn=jb.getConn();
  LogFactory lf=new LogFactory();
  try {
  stmt=conn.createStatement();
  } catch (SQLException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  }
  ……
  }
  在对工资进行上传时,为了能把Excel文件中的数据导入到Mysql数据库,首先采用了JSPSmartUpload组件上传Excel文件到服务器,然后利POI组件把Excel文件转换成Mysql数据库中的表,同时为了查询方便,在数据库中增加了映射表,映射表主要是能使查询顺利地找到目标工资表。
  2.4 工厂层
  工厂层为面向页面级代码实现提供产品,方便调用,以实现用户管理工厂为例,其代码如下:
  public class UserFactory {
  public UserDao getUserDaoInstance()
  { return new UserDaoImpl();
  }
  }
  2.5 页面调用
  在页面实例化所需要的工厂,并通过工厂实例获取所需要的产品。
  UserFactory uf=new UserFactory(); //**实例化一个工厂
  ResultSet rs=uf.getUserDaoInstance().queryById(uid); //**调用
  工厂的queryById(String uid)方法
  3 重点问题
  3.1 用户身份验证
  当用户正常登录并通过用户名和密码验证时[5],开启两个session,一个用来记载用户名,另一个用来记载用户身份类别。本系统利用判断记载用户名的session是否为空和记载用户类别的session是否合法来阻止或者放行用户进入系统。为了防止用户通过非法入口进入系统内部,在系统内部每个页面也利用这一方法来判断用户的合法性,有效地减少了非法用户进入的途径。
  3.2 用户安全
  为了保证用户信息的安全性,除了对用户密码采用MD5加密以外,还允许用户本人设置安全问题,一旦用户忘记密码,也可以通过回答自己设置的安全问题来重新设置密码,而不是通过管理员来获取密码,进而保证了用户信息的安全性。
  4 结束语
  本文在采用工厂模式开发的基础上,把公共模块独立出来,并切入到一些方法中去执行,这样有利于开发效率的提高。与此同时关注系统级和用户级的安全性,减少了系统被入侵的风险。
  参考文献:
  [1] 吴小青.JSP+TOMCAT+MYSQL开源软件整合配置初探[J].齐齐哈
  尔大学学报,2012.28(4).
  [2] 雷根平等.基于JSP的校园新闻发布系统设计与实现[J].电脑知识与
  技术,2010.7.21:5750-5753
  [3] 刘锋等.DAO模式和抽象工厂模式在系统设计中的应用[J].计算机
  与信息技术,2011.3:84-87
  [4] 廖梦虎.JSP中数据库的连接方法研究[J].长江大学学报,2011.8
  (10):83-85
  [5] 黄贻培.简单工厂模式在数据访问层中的应用[J].计算机工程与设
  计,2009.30(7):1799-1800
其他文献
本文就新一轮国家基础教育课程改革所提出的重要概念——中学英语课程资源的开发,结合在课堂教学实践中,英语教师对本地区区域性文化资源课题成果的有效利用进行一些探讨和反思
从人参幼叶的培养中,筛选出了质地松疏、生长迅速、易于分散、可以长期进行继代培养的淡黄色半透明状愈伤组织系。将这种愈伤组织接种在液体培养基中进行振荡培养.建立起分散程
提出了安全审计系统获取内外网IP地址映射关系的一种方法,解决了目前安全审计系统只能掌握局域网计算机私网IP地址的缺陷。该方法通过模拟局域网计算机在防火墙内侧发送定制
德国慕尼黑BMW公司设计的K1200LT型豪华摩托车,有抗锁刹车,催化转化器,并具有超速行驶和倒逆齿轮的五档变速,电动防风屏,电子行驶控制,车载计算机以及包括有八个喇叭的收录机在内的
本文以函数图像在解题中的应用为例体现函数图像的优势,以激发学生的探究函数兴趣。
通过对大量学生的调查,发现多数的学生是由于不良的学习习惯而导致其学习兴趣减少而导致学习动力降低,进而导致其学习能力的下降。总结了有以下三方面的原因:
以球状纤维素为基体,通过醚化和胺化反应,成功地制备出一种新型的固定化酶载体-球状纤维素单宁树脂。该树脂具有良好的水力学性能,化学稳定性高,对蛋白质和酶等大分子有较高的吸附
质粒对受体细胞的转化及注意的问题郝林,李茂辉(沈阳师范学院生物工程研究所,江阳)目前,在基因工程的许多应用中,质粒载体的受体以大肠杆菌为主。近年来转化方法和转化效率有了很大
聚合酶链反应(PCR)技术已广泛用于DNA基础研究和临床诊断。本文介绍用它来鉴定靶序列,从而进一步筛选阳性重组体。由于引物Tm较高,采用二温段扩增法,确实扩增出10bp靶序列。文章还讨论了扩增较
来自实践的调查显示,儿童心理健康问题呼唤合理有效的教育促进措施。本论文以此为出发点,概括了儿童常见心理问题及其原因,并对于儿童心理健康教育与班主任工作进行了详细的描述