JDBC实验八 WEB常用设计模式及应用.doc_第1页
JDBC实验八 WEB常用设计模式及应用.doc_第2页
JDBC实验八 WEB常用设计模式及应用.doc_第3页
JDBC实验八 WEB常用设计模式及应用.doc_第4页
JDBC实验八 WEB常用设计模式及应用.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

广州中医药大学医学信息工程学院实 验 报 告课程名称:网络数据库编程专业班级:计算机科学与技术( 2010 )级学生学号:2010081126学生姓名:吕吕实验名称:实验成绩:课程类别:必修 限选 公选 其它实验八 WEB常用设计模式的应用实验类型:应用性实验 实验日期: 2013.04.24 实验目的1. 熟悉J2EE的构架。2. 掌握MVC设计模式的应用3. 熟悉JSP+TAG模式的应用实验内容(可参考示例)(以下为理论题)1. 选用一熟悉的基于WEB的管理信息系统,如用MVC设计模式,请分别写出对应的M、V、C模块,并用实例说明如何实现,画出对应的示意图等。答:MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层模型层、视图层、控制层。目前Web学生信息管理系统都能支持多平台访问与控制,采用分布数据管理方式。学生可以通过网络实现信息查询、选课、个人信息统计、下载学习资料、上传作业、报告乃至实现网络化学习,该系统主要有如下几个功能模块:基于MVC架构进行开发设计,MVC组件类型和对应的功能模块如下图所示:该学生信息管理系统中,对应的M、V、C模块如下图所示:2. MVC模式与JAVABEAN+Servlet+JSP有什么区别?答:MVC是 模型(Model),视图(View)和控制(Controller)的缩写,其目的实现Web系统的职能分工。其中Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现; View层用于与用户的交互,通常用JSP来实现; Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。所以说,MVC模式是一种软件设计的典型模式,JAVABEAN+Servlet+JSP是MVC实现的具体技术。3. 如何管理及调用TAG文件?答:Tag文件可以实现代码的复用,这些代码可能是许多JSP页面都需要的。为了能让一个Web应用中的JSP页面使用某一个Tag文件,必须把这个Tag文件存放到Tomcat服务器指定的目录中,也就是说,如果某个Web服务目录下的JSP页面准备调用一个Tag文件,那么我们必须在该Web服务目录下,建立如下的目录结构:Web服务器WEB-INFtags。Tag文件的使用:一个JSP页面通过使用Tag标记来调用一个Tag文件。Web服务目录下的一个JSP页面必须首先使用指令标记引入该Web服务目录下的标记库,只有这样,JSP页面才可以使用Tag标记调用相应的Tag文件。指令的格式如下: 一个JSP页面可以使用几个指令标记引入若干个标记库,例如: 引入标记库后,JSP页面就可以使用带前缀的Tag标记调用相应的Tag文件,其中的前缀由指令中的prefix属性指定。例如注意:通过前缀可以有效地区分不同标记库中具有相同名字的标记文件。4. J2EE的核心技术有哪些?答:J2EE所涉及到的知识范围非常广阔。它的核心技术主要有13种。分别为:(1)JDBC (2)JNDI (3)EJB (4)RMI (5)JSP (6)JAVA SERVLET (7)XML (8)JMS (9)JAVA IDL (10)JTS (11)JTA (12)JAVAMAIL (13)JAF 但实际上,我们最经常使用到的主要为JDBC、JNDI、EJB、JSP和Servlets。所以我们学习的重点应该放在这5种最常见的技术上,而且书场上大部分的书箱都是针对这5种技术进行讲解。相信你只要熟练掌握了这5种技术,J2EE就已学会了一大半。另外提示一下,学好J2EE,记得宏观了解下J2EE这个平台的系统架构原理(MVC)。对学好J2EE有好处。下面是简要的图形释义:5. 什么是RMI, JNDI、JMS, JTS, JTA, JavaMail,JPA,JPO?通过概念,框图及程序代码描述它们的功能。答:RMI(Remote Method Invoke) 正如其名字所表示的那样,RMI协议调用远程对象上方法。它使用了序列化方式在客户端和服务器端传递数据。RMI是一种被EJB使用的更底层的协议。代码介绍:package com.unmi;import java.rmi.*; /* * 远程接口必须扩展接口java.rmi.Remote */ public interface HelloInterface extends Remote /* * 远程接口方法必须抛出 java.rmi.RemoteException */ public String say() throws RemoteException; package com.unmi;import java.rmi.*; import java.rmi.server.*; /* * 扩展了UnicastRemoteObject类,并实现远程接口 HelloInterface */ public class Hello extends UnicastRemoteObject implements HelloInterface private String message; /* * 必须定义构造方法,即使是默认构造方法,也必须把它明确地写出来,因为它必须抛出出RemoteException异常 */ public Hello(String msg) throws RemoteException message = msg; /* * 远程接口方法的实现 */ public String say() throws RemoteException System.out.println(Called by HelloClient); return message; package com.unmi;import java.rmi.Naming; public class HelloClient /* * 查找远程对象并调用远程方法 */ public static void main(String argv) try HelloInterface hello = (HelloInterface) Naming.lookup(Hello); /如果要从另一台启动了RMI注册服务的机器上查找hello实例 /HelloInterface hello = (HelloInterface)Naming.lookup(/05:1099/Hello); /调用远程方法 System.out.println(hello.say(); catch (Exception e) System.out.println(HelloClient exception: + e); package com.unmi;import java.rmi.Naming; import java.rmi.registry.LocateRegistry; public class HelloServer /* * 启动 RMI 注册服务并进行对象注册 */ public static void main(String argv) try /启动RMI注册服务,指定端口为1099(1099为默认端口) /也可以通过命令 java_home/bin/rmiregistry 1099启动 /这里用这种方式避免了再打开一个DOS窗口 /而且用命令rmiregistry启动注册服务还必须事先用RMIC生成一个stub类为它所用 LocateRegistry.createRegistry(1099); /创建远程对象的一个或多个实例,下面是hello对象 /可以用不同名字注册不同的实例 HelloInterface hello = new Hello(Hello, world!); /把hello注册到RMI注册服务器上,命名为Hello Naming.rebind(Hello, hello); /如果要把hello实例注册到另一台启动了RMI注册服务的机器上 /Naming.rebind(/05:1099/Hello,hello); System.out.println(Hello Server is ready.); catch (Exception e) System.out.println(Hello Server failed: + e); JNDI(Java Naming and Directory Interface):提供分布式命名和目录服务。 代码介绍:import java.util.Hashtable;import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.naming.ldap.LdapName; class LookupLdapName public static void main(String args) / Set up the environment for creating the initial context Hashtable env = new Hashtable(11); env .put(Context.INITIAL_CONTEXT_FACTORY, com.sun.jndi.ldap.LdapCtxFactory); env.put(Context.PROVIDER_URL, ldap:/localhost:389/); try / Create the initial context Context ctx = new InitialContext(env); / A string representation of an LDAP name LdapName dn = new LdapName(ou=People,o=JNDITutorial); / Perform the lookup using the dn Object obj = ctx.lookup(dn); System.out.println(obj); / Close the context when were done ctx.close(); catch (NamingException e) System.out.println(Lookup failed: + e); JMS(Java Messaging Service):Java消息服务,提供层与组件之间的消息传递 。代码介绍:private void sendMessage(String message) throws Exceptiontry MessageSender sender=new MessageSender(); sender.sendMessage(message); catch(Exception ex) throw ex;JTS/JTA(Java Transaction Service/Java Transaction API):java事务处理服务和java事务处理API,提供事务处理/监控服务 。代码介绍:import javax.transaction.*;import javax.naming.*;/ .InitialContext ctx = new InitialContext();Object txObj = ctx.lookup(;java:comp/UserTransaction;);UserTransaction utx = (UserTransaction) txObj;JavaMail :JavaMail是用于存取邮件服务器的API,它提供了一套邮件服务器的抽象类。不仅支持SMTP服务器,也支持IMAP服务器。代码描述:MimeMessage msg=new MimeMessage(mailSession); msg.setContent(content,text/html); msg.setText(“hello world”);JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象关系表的映射关系,并将运行期的实体对象持久化到数据库中。代码介绍:package test.entityjpa; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.Id; import javax.persistence.Table; Entity Table(name = JESON_TEST) public class JesonTest implements java.io.Serializable / Fields private Integer userid; private String name; private String password; / Constructors /* default constructor */ public JesonTest() /* minimal constructor */ public JesonTest(Integer userid) this.userid = userid; /* full constructor */ public JesonTest(Integer userid, String name, String password) this.userid = userid; = name; this.password = password; / Property accessors Id Column(name = USERID, unique = true, nullable = false, insertable = true, updatable = true, precision = 20, scale = 0) public Integer getUserid() return this.userid; public void setUserid(Integer userid) this.userid = userid; Column(name = NAME, unique = false, nullable = true, insertable = true, updatable = true) public String getName() return ; public void setName(String name) = name; Column(name = PASSWORD, unique = false, nullable = true, insertable = true, updatable = true, length = 10) public String getPassword() return this.password; public void setPassword(String password) this.password = password; 6. 什么是MVC,其结构图?答:MVC(Model/View/Controller)模式是国外用得比较多的一种设计模式。MVC包括三类对象。Model是应用对象,View是它在屏幕上的表示,Controller定义用户界面对用户输入的响应方式。 模型-视图-控制器(MVC)是80年代Smalltalk-80出现的一种软件设计模式,现在已经被广泛的使用。 1、模型(Model) 模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑. 2、视图(View) 视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。 3、控制器(controller) 控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。 MVC 式的出现不仅实现了功能模块和显示模块的分离,同时它还提高了应用系统的可维护性、可扩展性、可移植性和组件的可复用性7. MVC设计模式的有什么优缺点?答:MVC设计开发模式,它实现了显示模块与功能模块的分离,提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。虽然MVC具有很多优点,但也存在着不足,具体有以下几点:1、 增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。 2、视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。 3、视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。 4、目前,一般高级的界面工具或构造器不支持模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成MVC使用的困难。8. 查找Struts、Spring和Hibernate相关资料,总结它们的概念,并用结构图说明,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论