service方法中调用多个dao符合规范吗.docx

上传人:b****8 文档编号:27942544 上传时间:2023-07-06 格式:DOCX 页数:7 大小:18.13KB
下载 相关 举报
service方法中调用多个dao符合规范吗.docx_第1页
第1页 / 共7页
service方法中调用多个dao符合规范吗.docx_第2页
第2页 / 共7页
service方法中调用多个dao符合规范吗.docx_第3页
第3页 / 共7页
service方法中调用多个dao符合规范吗.docx_第4页
第4页 / 共7页
service方法中调用多个dao符合规范吗.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

service方法中调用多个dao符合规范吗.docx

《service方法中调用多个dao符合规范吗.docx》由会员分享,可在线阅读,更多相关《service方法中调用多个dao符合规范吗.docx(7页珍藏版)》请在冰豆网上搜索。

service方法中调用多个dao符合规范吗.docx

service方法中调用多个dao符合规范吗

竭诚为您提供优质文档/双击可除

service方法中调用多个dao符合规范吗

  篇一:

实验报告

  一、系统总体设计图:

  本系统采用了四层架构,分别为视图层、控制器层、数据访问层、持久化层。

客户端不直接与数据库交互,而是通过控制器与数据访问层建立连接,再由数据访问层与数据库交互。

  表现层采用了jsp,控制器层采用struts,数据访问层使用jdbc封装了对底层数据库的相关操作,数据库采用了mysql数据库存放数据,具体的总体构架如下图所示。

  二、系统用例图:

  删除信息查询信息

  三、数据库:

  四、系统效果图展示:

  1、添加视图

  添加视图的页面如图所示,在该页面用户输入需要添加的信息,单机【添加】按钮即可将信息添加到数据库,并返回到学生信息列表页。

  2、列表视图

  在后台查询出的数据封装到request中,然后页面上用el来取出并迭代出来即可。

  3、修改视图

  当需要修改某条信息时,单机对应信息的“编辑”按钮,系统将先查询并显示出该信息,修改页面的效果如图所示。

在修改完成后单击“确定”

  按钮即可将修改后的数据保存到数据

  库,并返回到列表页显示出所有学生的信息。

  五、代码树形图

  六、代码清单

  1.javabean

  student.java是一个普通的javabean,主要用来封装student表的数据,属性名与student表中的列名一一对应。

  packageorg.njy.bean;

  importjava.io.serializable;

  publicclassimplementsserializable{}

  /**学生编号*/privateintid;/**学生姓名*/privatestringname;/**学生班级*/

  private/**学生分数*/privatestringscore;

  省略系统自动生成的get和set部分的代码

  2.Formbean

  studentForm.java用来封装表单提交的数据,它所包含的属性名称与页面表单中的元素名以及javabean中的一致。

  packageorg.njy.form;

  importorg.apache.struts.action.actionForm;

  publicclassextendsactionForm{

  privateintid;privatestringname;privatestringclasses;privatestringscore;}

  省略系统自动生成的get和set部分的代码

  3.struts-config.xml

  该文件配置验证表单的formbean,指定studentForm处理用户表单中的数据,定义action,

  指定所有student.do请求都交由studentaction类处理,并指定响应结果,当响应forward值togetlist,响应到“student.domethod=getall”,当forward值为tolist时,相应到list.jsp页面,当forward值为toedit时,响应到edit.jsp页面。

  

    "http:

//struts.apache.org/dtds/struts-config_1_2.dtd">

  

  

  

  

    type="org.njy.action.studentaction">

  

  

  

  

  

  4.action类

  action类,处理用户业务的请求,传统的继承action类中必须定义excute()方法处理,操作性与实用性都不是很强。

该类继承自dispatchaction类,其好处是一个action类可以同时处理针对同一对象的多个用户的请求。

  packageorg.njy.action;

  importjava.util.list;

  importjavax.servlet.http.httpservletRequest;importjavax.servlet.http.httpservletResponse;mons.beanutils.propertyutils;importorg.apache.struts.action.actionForm;importorg.apache.struts.action.actionForward;importorg.apache.struts.action.actionmapping;importorg.apache.struts.actions.dispatchaction;importorg.njy.bean.student;importorg.njy.form.studentForm;

  篇二:

一个进程如何将service加到另一个进程(系统servicemanager)中去,涉及到进程间的通信

  -------------------------------------------一个进程如何将service加到另一个进程(系统servicemanager)中去,涉及到进程间的通信------------------------

  defaultservicemanager()调用addservice添加服务的执行流程:

---------------------------------------

  1、

  defaultserv  

icemanager()->addservice(

  string16("media.player"),newmediaplayerservice());

  因为defaultservicemanager()返回servicemanager的代理bpservicemanager,所以这里调用bpservicemanager的addservice函数。

  2、addservice函数中分析

  将调用,

  status_terr=remote()->transact(add_seRVice_tRansaction,data,

  因为remote()函数是bpservicemanager基类bpRefbase的函数,它返回mRemote,这个值我们知道保存了一个bpbinder对象,所以将调用bpbinder的transact函数。

  3、在bpbinder:

:

transact函数中

  status_tbpbinder:

:

transact(

  uint32_tcode,constparcel

  因此它又将调用ipcthreadstate的transact函数。

  4、在ipcthreadstate的transact函数中,

  status_tipcthreadstate:

:

transact(int32_thandle,

  uint32_tcode,constparcel

  发送数据,然后使用,

  err=waitForResponse(reply);

  等待处理的结果,最后将处理结果err和reply分别通过返回值和参数返回。

  5、在函数ipcthreadstate:

:

writetransactiondata中,将数据封装到mout变量中。

  6、在函数ipcthreadstate:

:

waitForResponse中,

  起一个循环,首先调用talkwithdriver将mout写给低层binder,然后通过min将结果传出。

  其次使用switch判断传出的消息,最后执行ipcthreadstate:

:

executecommand对各种消息进行处理。

  7、函数ipcthreadstate:

:

executecommand,注意其中的几个消息的处理,

  casebR_tRansaction:

处理中

  if(tr.target.ptr){

  spb((bbinder*)tr.cookie);

  conststatus_terror=b->transact(tr.code,buffer,

  if(error  }

  调用了bbinder对象b,这个对象就是bnservicemanager中的那个。

  casebR_dead_bindeR:

  {

  bpbinder*proxy=(bpbinder*)min.readint32();

  proxy->sendobituary();

  mout.writeint32(bc_dead_bindeR_done);

  mout.writeint32((int32_t)proxy);

  }break;

  收到binder发来service死掉的消息,由bpbinder进行处理。

  casebR_spawn_loopeR:

  mprocess->spawnpooledthread(false);

  break;

  收到驱动的指示,创建一个新线程,用于和binder通信。

  8、函数ipcthreadstate:

:

talkwithdriver

  通过ioctl和binder驱动进行消息传递。

  if(ioctl(mprocess->mdriverFd,bindeR_wRite_Read,

  else

  err=-errno;

  9、

  使用函数processstate:

:

startthreadpool在进程中开一个线程。

  voidprocessstate:

:

startthreadpool()

  {

  automutex_l(mlock);

  if(!

mthreadpoolstarted){

  mthreadpoolstarted=true;

  spawnpooledthread(true);

  }

  }

  调用spawnpooledthread(true)创建一个线程。

注意,ismain是true.

  线程的名称用

  int32_ts=android_atomic_add(1,

  charbuf[32];

  sprintf(buf,"binderthread#%d",s);

  指定。

  可以看出,和binder相关的线程都是有processstate启动的,而每个进程和binder通讯时,只有一个processstate,但可能会有多个binderthread。

  10、使用函数ipcthreadstate:

:

self()->jointhreadpool()将创建的线程添加到线程池。

  在其内部调用

  mout.writeint32(ismainbc_enteR_loopeR:

bc_RegisteR_loopeR);

  其实也是启动一个线程。

  11、以上都是由代理bpservicemanager传递的,bnservicemanager并未显示创建,但肯定是有的。

有个和它一样的

  功能由系统创建,在文件service_manager.c的main中进行了创建,它直接和binder打交道。

  12、

  mediaplayerservice的client端实现。

  通过函数imediadeathnotifier:

:

getmediaplayerservice()获得mediaplayerservice的bpmediaplayerservice。

首先通过binder=sm->getservice(string16("media.player"));得到系统的bpbinder,然后利用

  smediaplayerservice=interface_cast(binder);

  生成系统的bpmediaplayerservice,得到服务的代理。

  ---------------------------------------------------------------end---------------------------------------------------------------------------------------

  篇三:

实验六mVc和dao模式

  《j2ee企业级软件开发》实验六

  mVc和dao模式

  学号:

___________________姓名:

____________________

  实验目的:

  1,理解mVc分层设计的思想2,理解dao模式的思想

  3,熟悉在已有程序中体现mVc和dao模式的基本方法

  实验内容和步骤:

  1,在myeclipse中导入上次实验(实验五)实现的用户登录程序,将代码中的数据库访问代码进行抽取和封装,并放到专门的cn.edu.lynu.dao包中。

  2,在dao层的代码userdao中,增加用户查询、新用户注册、用户删除、用户信息修改的4项功能(大致对应user表的增删改查操作)。

  3,将所有servlet代码移动到控制层,即创建cn.edu.lynu.servlets包,为第2步中添加的功能添加对应的servlet,以及jsp页面。

注意要点:

1)在servlet的处理中调用合适的dao层的方法,进行合适的jsp页面跳转。

2)既可以在一个servlet中处理多个请求,也可以创建多个servlet而每个servlet

  只对应一个请求。

(根据页面复杂程度和项目需要设计)3)页面的跳转要规划好,最好首先画出一个流程图,对于用户的查询、注册、

  删除、修改功能可以有多种不同的跳转方法。

例如,下面是其中一种设计:

  4,修改dao层的代码,将得到数据库connection类对象的操作专门放入一个新的方法,并将项目的数据库类型从mysql移植到h2database(一种小型开源嵌入式数据库)。

  5,(选作内容)为dao层的代码提供上层接口,将这些接口都放到一个专门的包内(cn.edu.lynu.service),让控制层的servlet代码里只调用这些接口的方法。

  6,(选作内容)将dao层获得connection对象的方法中访问jdbc链接的驱动类和jdbc地址字符串修改称为从一个.properties文本文件中获取。

  作业和思考题:

  (回答完毕以下问题,请将本文件作为实验报告,上传到教师指定目录。

为防止上传文件重名而覆盖,建议命名为“学号+姓名.doc”)1,mVc分层思想的主要优势体现在什么地方。

  2,dao模式除了能够切换数据库外,还能提供哪些能力,试举一例。

  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1