Board logo

标题: 数据验证出现在什么地方最合适 [打印本页]

作者: qingqing3721    时间: 2011-8-16 22:05     标题: 数据验证出现在什么地方最合适

数据验证的类型
要确定将验证代码放置在什么位置,第一步是了解您正在处理什么类型的验证。数据格式验证确保一切数据类型(整数、浮点数、字符串等)都是正确的。它还要确认变量都在允许值的范围之内以及实践的形式按预期的婚配。实质上,数据格式验证处理验证的任何方面,这些验证不需要运用特定业务规则。
特定于业务的验证基于一组业务规则(例如,确保所提供的ISBN号与您数据库中的实践书籍相婚配)。它几乎总是需要对EJB层以及运用顺序中的其它业务逻辑组件具有访问权。
数据格式验证
确定了正在处理的验证类型之后,下一步是确定放置代码的位置。在您的 EJB运用顺序中,数据格式验证逻辑可以如下停止放置:
将赋值(setter)方法放置在业务委派上。
将赋值(setter)方法放置在 bean 的远程接口上。
将赋值(setter)方法放置在 bean 的消息对象或值对象上。
关于本示例,我们将假定您正在处理一个包括业务委派的EJB运用顺序。假如是这样,那么您应该采取某些步骤,确保一切的运用顺序客户机(处于Web层)都在运用委派停止bean访问,而不是直接访问bean。binger淘宝旗舰店假如确实是这样,那么您可以将一切数据验证代码都平安地放置在业务委派方法中,如清单1所示。
清单 1. 业务委派中的数据格式验证

!--

  Code highlighting produced byActiproCodeHighlighter(freeware)
  CodeHighlighter/
  --1 package com.ibm.library;
  2 import java.rmi.RemoteException;
  3 import java.util.Iterator;
  4 import java.util.List;
  5 import javax.ejb.CreateException;
  6 import javax.naming.NamingException;
  7 public class LibraryDelegate implements ILibrary {
  8 private ILibrary library;
  9 public LibraryDelegate(){
  10 init();
  11 }
  12 public void init() {
  13 //Look up and obtain our session bean
  14 try{
  15 LibraryHomelibraryHome =
  16 (LibraryHome)EJBHomeFactory.getInstance().lookup(
  17 java:comp/env/ejb/LibraryHome,LibraryHome.class);
  18 library= libraryHome.create();
  19 }catch (NamingException e) {
  20 thrownew RuntimeException(e);
  21 }catch (CreateException e) {
  22 thrownew RuntimeException(e);
  23 }catch (RemoteException e) {
  24 thrownew RuntimeException(e);
  25 }
  26 }
  27 // No validation requiredfor accessor (getter)methods
  28 public boolean checkout(Bookbook)throwsApplicationException{
  29 // No validationrequired here; the object type
  30 // takes care of it
  31 try{
  32 returnlibrary.checkout(book);
  33 }catch (RemoteException e) {
  34 thrownew ApplicationException(e);
  35 }
  36 }
  37 public boolean checkout(Listbooks)throwsApplicationException{
  38 // Validatelist
  39 for (Iterator i= books.iterator(); i.hasNext(); ){
  40 Objectobj = i.next();
  41 if!(obj instanceof Book) {
  42 thrownew ApplicationException(
  43 ApplicationException.VALIDATION_ERROR,
  44 OnlyBooks are allowed in the input list);
  45 }
  46 }
  47 try{
  48 returnlibrary.checkout(books);
  49 }catch (RemoteException e) {
  50 thrownew ApplicationException(e);
  51 }
  52 }
  53 // And so on...
  54 public voiddestroy() {
  55 //In this case, do nothing
  56 }
  57 }
  58




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0