`
pouyang
  • 浏览: 321670 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Experience Serializable transient,输入输出流,反射应用

    博客分类:
  • Java
阅读更多

 

 

需求:

有好几个功能模块都需要审核的功能。

例如:

在功能模块A中填写了表单,并保存提交了,待审核过后才能有效。

在功能模块B中同样如此

在功能模块C中同样也是如此

这些都需要在审核功能模块审核通过后方能生效。

 

分析问题:

或许一拿到这样的需求,设计的时候都会在数据库表中增加一个状态字段来表示审核成功还是失败。如果这样做的话,那么审核的时候,必须选择功能模块类型,然后查询相应需要审核的记录,进行审核,如果不选择审核类型进行查询而是查询所有审核信息,则要遍历多张表。再增加一个功能模块的时候,要在审核这里再做修改。相当于审核的功能都渗透到其他功能模块中去了,一旦需求变更的时候,修改就比较多,模块之间依赖程度太高。

 

 

提出问题,解决问题:

增加表字段的方法可以解决问题,但感觉不是很好。应该把审核的功能独立出来,可以设计一张审核表,审核的信息只从审核表中查询,待审核通过后,将数据插入到相应的功能模块x表中。

 

问题1:各个不同模块的内容怎么在一张审核表中进行存储,审核的时候怎么查看 ?

在各种模块中,提交的时候,将po转换成二进制流存储在数据库中,该字段设置成大字段类型 blog(mysql),只需要审核表定义一个这样的字段就可以存储各个不同模块的数据。

 

问题2:查看各模块的详细信息并修改,怎么处理?

查询详细的时候,可以通过审核id在审核的Controller层获取到审核具体的内容,问题是,获取到内容后怎么跳转到相应功能模块的详细页面,不同的功能有不同的详细页面。

我们得有一个数据类型,通过数据类型来判断是哪个功能模块,然后在配置文件中配置相应的url,在审核控制层进行读取配置文件进行跳转就ok了。

例如:

audit.detail.1=bbsdetail.do   // 跳转到bbsdetail.do 

audit.detail.2=newsdetail.do  // 跳转到newsdetail.do

第三个参数是数据类型1=bbs,2=news

修改信息的时候:

修改的时候应该跟查询一样

audit.modify.1=bbsmodify.do   // 跳转到bbsmodify

audit.modify.2=newsmodify.do  //跳转到newsmodify

第三个参数是数据类型1=bbs,2=news

 

问题3: 审核通过之后,实际功能模块的信息怎么入库?

审核通过后:

在审核模块中取到具体po后将二进制流还原成po,原来的po重生了,通过配置文件取到各个模块的service,进入相应的模块的service层的方法进行处理即可。

怎么跳?

在配置文件中配置:

audit.dealService.1=bbsService  

audit.dealService.2=newsService

第三个参数是数据类型

audit.auditmethod.1.1 = addbbs  

audit.auditmethod.1.2 = addnews

第三个参数是操作类型1=add,2=modify

第四个参数是数据类型1=bbs,2=news

 

 

整个思路流程到此为止。

 

用的技术点:

 

1、序列化,输入/输出流: 将po对象转换成二进制流并保存起来,将二进制流还原成对象。

   Serializable串行化,输入输出流 可参考 http://blog.csdn.net/hbcui1984/archive/2007/04/02/1549290.aspx 

 

2、反射: 得到对象实例xxxService,知道方法名称。

Method method = service.getClass().getMethod(dealmethod, new Class[]{obj.getClass()});

Object result = method.invoke(service, obj);


分享到:
评论

相关推荐

    浅谈输入输出流

    ### 浅谈Java输入输出流 #### 一、引言 Java作为一种广泛应用的编程语言,在处理数据时提供了非常强大且灵活的输入输出功能。然而,Java的输入输出操作可能看起来较为复杂,因为开发者通常需要处理多种不同的对象...

    Java 输入输出流

    Java 输入输出流是Java编程语言中的一个重要组成部分,它允许程序进行数据传输,无论是从本地文件系统、网络连接还是内存中的对象。在Java中,输入输出流(I/O Stream)是处理数据流的一种机制,用于读取和写入数据...

    SCJP 310-055 题库5 输入输出流

    从给定的SCJP 310-055题库中的输入输出流部分,我们...这些知识点不仅涵盖了Java中文件操作的基本概念,还深入探讨了输入输出流、序列化以及类继承在序列化中的应用,对理解Java的IO流操作和序列化机制具有重要意义。

    对象输入输出流的图书馆里系统(没有界面)

    在Java编程语言中,对象输入输出流(Object Input/Output Stream)是用于序列化和反序列化对象的关键组件。这个图书管理系统项目显然依赖于这些功能来存储和恢复系统的状态,比如书籍信息、借阅记录等。以下是关于...

    Java输入输出流

    Java输入输出流是Java编程语言中处理数据传输的基础框架,它允许程序与外部资源(如文件、网络连接、硬件设备等)进行数据交互。在Java中,一切皆为对象,输入输出流也不例外,它们被封装成一系列的类,提供了一套...

    《Java语言程序设计》课件及源代码_第6章 输入输出流

    在Java编程语言中,输入输出(I/O)流是处理数据传输的核心机制,尤其是在文件操作、网络通信和数据管道等方面。本章节将深入探讨《Java语言程序设计》中关于第6章输入输出流的知识点,结合提供的源代码文件,我们...

    java输入输出流详解.doc

    ### Java 输入输出流详解 #### 一、I/O流概述 在Java中,输入输出流是处理文件读写、网络通信等数据...以上是关于Java输入输出流的一些基础概念和使用方法的详细介绍,希望对你理解和应用Java输入输出流有所帮助。

    完整word版-实验04Java输入输出流报告材料.doc

    Java 输入输出流是Java编程语言中处理数据传输的关键部分,主要负责在程序和外部资源(如文件、网络连接等)之间进行数据交换。本实验旨在让学习者掌握Java中的流概念,理解输入输出流的总体结构,并能熟练运用各种...

    JAVA实习4输入输出流实用.pdf

    Java 输入输出流是Java编程语言中处理数据传输的基础工具,广泛应用于文件操作、网络通信以及对象序列化等场景。在Java实习中,了解并熟练掌握输入输出流的使用至关重要。以下将详细介绍实验四中涉及的五个Java输入...

    Java输入输出流.pptx

    Java输入输出流是Java编程语言中的重要组成部分,用于处理数据的输入和输出操作。Java的I/O机制基于数据流的概念,涉及数据从源到目的地的传输。数据流分为两种主要类型:输入数据流(Input Stream)和输出数据流...

    Java 的二进制和文本输入输出

    Java 二进制和文本输入输出 Java 中的输入输出(Input/Output,简称 I/O)是指Java 程序与外部世界交互的一种机制。Java 提供了多种方式来实现输入...开发者可以根据需要选择合适的输入输出流来实现自己的应用程序。

    io_输入输出流_序列化反序列化_04.zip

    在Java编程语言中,输入输出(IO)流是处理数据传输的核心工具,广泛应用于文件操作、网络通信等场景。本文将深入探讨Java中的IO流体系,包括字节流与字符流,以及序列化和反序列化的概念。我们将通过标题"io_输入...

    完整版精品java课件 Java基础入门教程 Java程序设计 第9章 输入输出流(共49页).ppt

    Java输入输出流(I/O流)是Java编程中不可或缺的一部分,它主要用于程序与外部设备(如硬盘、键盘、显示器等)之间数据的传输。在Java中,I/O流被分为两类:字节流(Byte Stream)和字符流(Character Stream)。...

    java 对象默认序列化的干预方法

    // 从输入流中读取并设置age字段 } // ... } ``` 在这个例子中,`writeObject()`方法首先调用`defaultWriteObject()`来序列化非`transient`字段,然后使用`writeInt()`手动写入`age`字段。同样,`readObject()`...

    JAVA输入输出总括

    Java 输入输出流是Java编程语言中用于处理数据输入和输出的核心机制。它们允许程序与外部资源,如文件、网络连接、设备等进行数据交换。Java I/O系统是基于流(Stream)的概念,流可以分为两大类别:输入流和输出流。 ...

    java输入输出操作

    在实际应用中,FileInputStream和FileOutputStream是最常用的文件输入输出流,用于读写文件。例如,要从一个名为“data.txt”的文件读取数据,可以创建一个FileInputStream实例,然后调用其read()方法。同样,若要向...

    java关键字transient

    2. `transient`关键字只能应用于实例变量,不能应用于静态变量,因为静态变量属于类而非特定的对象实例。 3. 一个`transient`变量在序列化后,即使在源代码中被赋了值,在反序列化时也不会恢复这个值,需要在程序中...

    轉Serializable至Stream

    另一方面,`Stream`通常指的是I/O流,它是Java处理输入/输出数据的主要方式。在某些场景下,如在JSP(JavaServer Pages)中,我们可能需要将一个`Serializable`对象转化为`Stream`,以便直接发送到客户端。以下是...

    IO/输入输出

    在Java中,IO操作主要由java.io包提供,它包含了一系列类和接口,用于处理各种类型的输入输出流。 1. **流的概念**: 在Java IO中,数据被视作流,它们可以像水一样流动,从一个源头(输入源)流向目的地(输出...

Global site tag (gtag.js) - Google Analytics