Java Web学习笔记(4)

<jsp:setProperty>标签标示为JavaBean中的属性设置内容,其中一共有两个属性。

    name:对应着<jsp:useBean>中声明的id属性,表示使用指定的JavaBean

    property:表示要操作的属性,“*”表示自动匹配

取得属性:<jsp:getProperty>,自动调用JavaBean中的getter()方法。

<jsp:getProperty name="实例化对象的名称(id)" property="属性名称">

<jsp:useBean>指令上存在一个scope属性,表示一个JavaBean的保存范围:有page、request、session、application。如果一个JavaBean不再使用的话,则可以直接使用4中属性范围的removeAttribute()方法进行删除。



DAO设计模式;

    DAO(Data Access Object,数据访问对象)的主要功能是数据操作,在程序的标准开发架构中属于数据层的操作。

程序的标准开发架构如下:

客户层->显示层->业务层->数据层->资源层

客户层:一般客户都是用浏览器进行访问,所以一般采用B/S开发架构

显示层:使用JSP/Servlet进行页面效果的显示

业务层(Business Object,业务对象):会将多个原子性的DAO操作进行组合,组合成一个完整的业务逻辑

数据层(DAO):提供多个原子性的DAO操作,如增加、修改、删除等,都属于原子性的操作。

在整个DAO中实际上是以接口为操作标准,即客户端依靠DAO实现的接口进行操作,而服务端要将接口进行具体的实现。

DAO由以下几个部分组成:

    DatabaseConnection:专门负责数据库的打开与关闭操作的类。

    VO:主要由属性、setter、getter方法组成,VO类中的属性与表中的字段相对应,每一个VO类的对象都表示表中的每一条记录。

    DAO:主要定义操作的接口,定义一系列数据库的原子性操作标准,如增加、修改、删除、按ID查询等

    Impl:DAO接口的真实实现类,完成具体的数据库操作,但是不负责数据库的打开和关闭。

    Proxy:代理实现类,主要完成数据库的打开和关闭,并且调用真实实现类对象的操作。

    Factory:工厂类,通过工厂类取得一个DAO的实例化对象。


    为了清除地区分出接口和类,在定义接口时往往在接口名称前加上一个字母“I”,表示定义的是一个接口。

    在定义DAO接口方法时要将数据库的更新及查询操作分开执行,规则如下:

        数据库更新操作:doXxx,操作以do方式开头

        数据库查询操作:findXxx或者getXxx,操作以find或get开头

    DAO接口定义完成后需要做具体的实现类,有两种:一种是真实主题实现类,另外一种是代理操作类。

    真实主题类主要的负责具体的数据库操作,在操作时为了性能及安全将使用PreparedStatement接口完成。在代理类的构造方法中实例化了数据库连接类的对象以及真实主题实现类,而在代理中的各个方法也只是调用了真实主题实现类中的相应方法。

    DAO的真实实现类和代理实现类编写完成后就需要编写工程类,以降低代码间的耦合度。编写完一个DAO程序后,即可使用JSP进行前台功能的实现。


    要想进行上传,则必须使用HTML中提供的file空间,而且<form>也必须使用enctype属性进行封装,表示表单将按照二进制的方式提交,即所有的操作表单此时不再是分别提交的,而是将所有内容都按照二进制的方式提交。

    为了防止重名,上传的文件的命名一般按照如下格式:IP地址+时间戳+三位随机数

    可以通过正则判断文件的后缀名是否合法来限制文件的上传类型。

    文件上传的组件有FileUpload和SmartUpload

    FileUpload上传的基本步骤:

        1.创建磁盘工程:DiskFileItemFactory factory = new DiskFileItemFactory();

        2.创建处理工具:ServletFileUpload upload = new ServletFileUpload(factory);

        3.设置上传文件大小:upload.setFileSizeMax(3145728);

        4.接收全部内容:List<FileItem> items = upload.parseRequest(request);

    FileUpload对所有的上传内容都采用同样的方式操作。将所有的上传内容(包括文件与普通参数)一起接收,所以需要一次判断每一次上传的内容是文件还是普通文本。

    在使用FileUpload接收时,所有提交的内容都会通过upload.parseRequest()方法返回,然后再使用Iterator依次取出每一个提交内容,即FileItem对象,然后使用FileItem类中的isFormField()方法来判断当前操作的内容是普通的文本还是上传文件。

    要想进行文件的保存,在FileUpload中就必须通过java.io包中的InputStream和OutStream两个类完成。

    


猜你喜欢

转载自blog.csdn.net/arpospf/article/details/80299687
今日推荐