service方法中调用多个dao符合规范吗.docx
- 文档编号:27942544
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:7
- 大小:18.13KB
service方法中调用多个dao符合规范吗.docx
《service方法中调用多个dao符合规范吗.docx》由会员分享,可在线阅读,更多相关《service方法中调用多个dao符合规范吗.docx(7页珍藏版)》请在冰豆网上搜索。
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模式除了能够切换数据库外,还能提供哪些能力,试举一例。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- service 方法 调用 dao 符合 规范
![提示](https://static.bdocx.com/images/bang_tan.gif)