JavaEE补考
Java补考试卷

分,共10分)1. Java 的各种数据类型占用的内存长度固定,与具体软硬件环境无关。
( V ) 2. 无论Java 源程序包含几个类的定义,若该源程序文件以B.java 命名,编译后生成的都只有一个名为B.class 的字节码文件。
( X ) 3. 静态初始化器是在其所属的类加载内存时由系统自动调用执行的方法。
( V ) 4. 即使一个类中未显式定义构造函数,也会有一个缺省的构造函数,缺省的构造函数是无参函数,函数体为空。
( V ) 5. 在Java 的方法中定义一个常量要用const 关键字。
(V ) 6. abstract 方法所在的类必须是abstract 类。
(V ) 7. 在异常处理中总是将可能产生异常的语句放在try 块中,用catch 子句去处理异常,而且一个try 块之后只能对应一个catch 语句。
(X ) 8. Applet 是一种特殊的Panel ,它是Java Applet 程序的最外层容器。
(X ) 9. Java 语言中的数组元素下标总是从0开始,下标可以是整数或整型表达式。
( V ) 10.一个线程对象的具体操作是由run()方法的内容确定的,但是Thread 类的run()方法是空的,其中没有内容;所以用户程序要么派生一个Thread 的子类并在子类里重新定义run()方法,要么使一个类实现Runnable 接口并书写其中run()方法的方法体。
( V )二.单项选择题(每题2分,共40分)1.编译Java Applet 源程序文件产生的字节码文件的扩展名为( B )。
A 、javaB 、classC 、htmlD 、exe 2.以下哪个不是Java 的原始数据类型( )A 、booleanB 、doubleC 、floatD 、Integer 3.以下哪个方法用于定义线程的执行体? ( ) A 、 start() B 、init() C 、run() D 、synchronized() 4.下面哪个不是Java 中的容器? ( ) A 、 ScrollPane B 、Canvas C 、Applet D 、Dialog 5.下面哪个方法与applet 的显示无关?( ) A 、draw() B 、 update() C 、repaint()D 、paint()6.当Frame 改变大小时,放在其中的按钮大小不变,则使用如下哪种布局方式? ( ) A 、 FlowLayout B 、CardLayout C 、BorderLayout D 、GridLayout 7.以下代码完成画线功能,指出所画线的颜色()1.g.setColor(Color.red.green.cyan.yello); 2.g.drawLine(0,0,100,100);A 、redB 、greenC 、yelloD 、cyan8.在Java 中,一个类可同时定义许多同名的方法,这些方法的形式参数个数、类型或顺序各不相同,传回的值也可以不相同。
JAVAEE试题(含答案)

可编辑---------------------------------------------------------------------- JAVA EE 期末考试复习材料一、选择题:1以下哪个HIbernate 主键生成策略是实现主键按数值顺序递增的?(主键生成策略是实现主键按数值顺序递增的?(A)A)A) A) increment increment B)Identity C)sequence D)native2、在JSP 中,中,Page Page 指令的(指令的(B B )属性用来引入需要的包和类。
A)Exends B)import C)language D)contentType3、从以下哪个选项中可以获得Servlet 的初始参数(的初始参数(C)C)A)Servlet B)ServletContextC)ServletConfig D)GenericServlet4、以下关于HIbernate 说法正确的是(说法正确的是(A)A)A)Hibernate 是ORM 的一种实现方式。
B)Hibernate 不要JDBC 的支持。
C)C)属于控制层属于控制层D)D)对象关系映射,让对象同数据库表产生关系。
对象关系映射,让对象同数据库表产生关系。
5、下面关于OPM 的说法不正确的是(的说法不正确的是(C)C)持久化是将程序中数据在瞬时状态和持久状态间转换的机制。
瞬时状态是指程序数据保存在内存中,程序退出时,数据就不存在了。
把关系数据库中的数据读出来不属于持久化。
程序数据直接保存成文本文件属于持久化。
6、下面关于SessionFactory 的说法正确的是(的说法正确的是(B B )A )SessionFactory 是轻量级的,可以随意创建和销毁。
B)SessionFactory 是重量级的接口,不可以随意创建和销毁。
C)SessionFactory 是重量级的类,不可以随意创建和销毁。
javaee期末复习题

javaee期末复习题JavaEE期末复习题JavaEE是一种用于开发企业级应用程序的Java平台。
它提供了一套完整的工具和技术,用于构建和管理大型、复杂的分布式应用程序。
在学习JavaEE的过程中,我们需要掌握一系列的知识和技能,以便能够熟练地开发和维护JavaEE应用程序。
下面是一些常见的JavaEE期末复习题,希望对大家复习和巩固知识有所帮助。
1. 什么是JavaEE?它与JavaSE有何不同?JavaEE是Java Platform, Enterprise Edition的缩写,是一种用于开发企业级应用程序的Java平台。
与JavaSE相比,JavaEE提供了更多的功能和工具,用于构建和管理大型、复杂的分布式应用程序。
JavaSE主要用于开发桌面应用程序和小型的服务器端应用程序,而JavaEE则更适用于开发大型、复杂的企业应用程序。
2. 请简要描述JavaEE的体系结构。
JavaEE的体系结构由四个层次组成:客户端层、Web层、业务逻辑层和数据访问层。
客户端层是与用户直接交互的界面,可以是Web浏览器、移动设备或者桌面应用程序。
Web层包括Web服务器和Web容器,用于处理客户端的请求和响应。
它负责处理用户的HTTP请求,并将请求转发到业务逻辑层进行处理。
业务逻辑层是应用程序的核心,负责处理业务逻辑和数据处理。
它包括各种组件,如Servlet、EJB和消息驱动Bean等。
数据访问层用于与数据库进行交互,负责处理数据的持久化和访问。
它包括各种技术和框架,如JPA和JDBC等。
3. 什么是Servlet?它的生命周期是怎样的?Servlet是JavaEE中的一种组件,用于处理Web请求和响应。
它可以接收来自客户端的HTTP请求,并生成相应的HTTP响应。
Servlet的生命周期包括以下几个阶段:初始化阶段:当Servlet容器启动时,会创建Servlet实例并调用其init()方法进行初始化。
java补考复习题

java补考复习题Java补考复习题Java是一种广泛使用的编程语言,掌握Java编程技能对于计算机科学专业的学生来说至关重要。
然而,即使是最优秀的学生也可能在考试中遇到挑战,需要进行补考。
为了帮助这些学生复习并提高他们的成绩,本文将提供一些Java补考复习题。
1. 什么是Java?它有什么特点和优势?Java是一种面向对象的编程语言,最早由Sun Microsystems于1995年开发。
它具有以下特点和优势:- 简单易学:Java的语法与C++相似,但去除了一些复杂的特性,使得它更易于学习和使用。
- 跨平台性:Java的代码可以在不同的操作系统上运行,只需在目标系统上安装Java虚拟机(JVM)。
- 面向对象:Java支持面向对象的编程范式,使得代码更易于维护和扩展。
- 安全性:Java提供了安全性机制,如字节码验证和安全沙箱,以防止恶意代码的执行。
- 多线程支持:Java提供了内置的多线程支持,使得开发并发程序更加容易。
2. 什么是Java虚拟机(JVM)?它的作用是什么?Java虚拟机(JVM)是Java程序的运行环境,它将Java字节码转换为机器码并执行。
JVM的作用包括:- 内存管理:JVM负责分配和回收内存,通过垃圾回收器自动释放不再使用的对象。
- 安全管理:JVM提供了安全机制,如字节码验证和安全沙箱,以防止恶意代码的执行。
- 跨平台支持:JVM使得Java代码可以在不同的操作系统上运行,只需在目标系统上安装JVM。
- 性能优化:JVM通过即时编译器(JIT)将热点代码转换为本地机器码,提高程序的执行效率。
3. 什么是面向对象编程(OOP)?Java如何支持面向对象编程?面向对象编程(OOP)是一种编程范式,将程序组织为对象的集合,每个对象都有自己的状态和行为。
Java通过以下方式支持面向对象编程:- 封装:Java使用类和对象来封装数据和方法,隐藏内部实现细节,提供对外的接口。
JAVA EE期末复习参考题

Java EE 复习参考资料一、填空题发布到服务器上的组件除包含自身实现的代码文件外,还要包含一( XML)部署描述文件。
Java EE 技术框架可分为三部分:组件技术、 (服务技术) 、通信技术。
Servlet 最大的用途是通过(动态响应)客户机请求来扩展服务器功能。
表单数据的提交方法有两种, (Post)方法和 Get 方法。
(Filter)拦截请求和响应,以便查看、提取正在客户机和服务器之间交换数据。
(Listener)实现了 Servlet 的事件驱动。
JSP 页面的脚本元素用来嵌入(java)代码。
JSP 动作组件是一些(XML)语法格式的标记,被用来控制 Web 容器的行为。
JSP 供提供九种内置对象, (request)对象代表的是来自客户端的请求。
JSP 标准标记库是一个实现( Web )应用程序中常用功能的定制标记库集。
java.sql.Statement 对象代表一条发送到数据库执行的 SQL 语句。
有(三)种 Statement 对象。
Servlets 可以使用(MIME)类型来向浏览器传送非 HTML 文件。
Enterprise Bean 是在(多)台机器上跨几个地址空间运行的组件。
JavaBean 是(一)台机器上同一个地址空间中运行的组件。
在标记描述 TLD 文件中 Required 定义为(true)代表为必须。
二、单项选择题1、表单数据的提交方法有两种 , (Post)方法使得数据由标准的输入设备读入。
A.GetB. PostC.ReadD.Input2、在表单提交的数据中,如果变量的值有多个,这时应调用 (getParameterValues()) 方法,A. getParameterValues()B. getParameter()C. getParameterNames()D. getAttribute()3、Servlet 的事件驱动由(Listener)实现。
(全国)JavaEE升级考试-第21套卷

JavaEE 升级试卷V2.0第二套卷单选题(15题,每题2分,共30分)1.下列(D )不能作为switch表达式的数据类型。
A.int B.short C.char D.long2.System.out.println("1"+2);打印出的结果是(B )A.3 B.12 C.1+2 D.43.下列表达式正确的是( D )A、 byte=128;B、 Boolean=null;C、 long l=0xfffL;D、 double=0.9239d;4. 已知: int[] a =new int[100]; 请问以下给出的数组元素中会发生ArrayIndexOutOfBoundsException 异常(D)A) a[0] B) a[1] C) a[99] D) a[100]5.下面哪一个是合法的数组声明和构造语句( C )A. int[] ages = [100];B. int ages = new int[100];C. int[] ages = new int[100];D. int() ages = new int(100);6.下列代码的运行结果是( C )public static void main(String args[]){int [] a={1,2,3,4,5};System.out.println(a[3]);}A.3B. 2C. 4D. 17.下列关于ArrayList集合常用操作描述错误的是( C )A.size()方法可以获取集合的长度,返回值为int类型B.get(int index)方法可以获取下标index对应的元素C.delete(int index)方法可以删除下标index对应的元素D.set(int index, object element)方法修改下标index对应的元素为element8.以下代码的打印结果为:Dpublic static void main(String[] args) {ArrayList<String> list = new ArrayList<>();list.add("123");list.add("456");list.add("1");for (int i = 0; i < list.size(); i++) {if (list.get(i).length()>1) {list.remove(i);}}System.out.println(list);}A. [123,456, 1]B. [456,]C. [1]D. [456, 1]9.下面代码运行的结果是( A)ArrayList<String> al = new ArrayList<String>();al.add(123);al.add(“abc”);System.out.println(al);A.编译失败B.[123]C. [123,abc];D. [abc];10.以下哪个是通过下标向String对象获取对应位置字符的方法(D )A. get()B. char()C. getChar()D. charAt()11. Java中,下列()语句不能通过编译(C )A. String s= "join"+ "was"+ "here";B. String s= "join"+3;C. float f=5+5.5;D. int a= 3+5;12.下列代码运行结果是(D )float f1 = 0.8f;float f2 = 0.3f;int i = (int) (f1 + f2);int i2 = Math.round(f1) + Math.round(f2);System.out.println(i);System.out.println(i2);A.都是1 B.1 和 1.1 C.0和1 D.都是1.113.以下关于继承的叙述正确的是( A )A.在Java中类只允许单一继承B.在Java中一个类只能实现一个接口C.在Java中一个类不能同时继承一个类和实现一个接口D.在Java中接口只允许单一继承14.在Java语言中,一个类可同时定义许多同名的方法,这些方法的形参个数、类型或顺序各不相同,返回值也可以不相同。
JavaEE上篇期末考试题及答案

JavaEE上篇期末考试题及答案一、选择题(每题2分,共20分)1. 在JavaEE中,用于表示Web应用程序的目录结构的是:A. EARB. WARC. JARD. RAR答案:B2. Servlet的生命周期开始于:A. 初始化方法B. 销毁方法C. 服务方法D. 重载方法答案:A3. 下列哪个不是JavaEE的组件?A. ServletB. JSPC. EJBD. JDBC答案:D4. 在JavaEE中,用于管理Web应用程序的配置信息的是:A. web.xmlB. application.xmlC. ejb-jar.xmlD. context.xml答案:A5. 以下哪个不是JavaEE的Web服务?A. SOAPB. RESTC. XML-RPCD. CORBA答案:D6. 在JavaEE中,用于处理HTTP请求和响应的接口是:A. HttpServletRequestB. HttpServletResponseC. ServletRequestD. ServletResponse答案:A7. 在JavaEE中,用于定义企业级应用的部署描述符的是:A. application.xmlB. ejb-jar.xmlC. web.xmlD. context.xml答案:A8. 下列哪个不是JavaEE的事务管理特性?A. 容器管理的事务B. Bean管理的事务C. 声明式事务D. 编程式事务答案:B9. 在JavaEE中,用于表示Web服务的接口的是:A. JAX-RSB. JAX-WSC. JAXBD. JAXP答案:B10. 下列哪个不是JavaEE的持久化API?A. JPAB. JDBCC. JDOD. JMS答案:D二、简答题(每题10分,共30分)1. 请简述JavaEE中Servlet的作用和生命周期。
答案:Servlet是JavaEE中用于生成动态Web内容的组件。
它的生命周期从实例化开始,然后是初始化,服务,最后是销毁。
《JAVA基础》课程测试试卷补考试题

《JAVA基础》课程测试考试时间(180分钟)笔试:60分钟机试:120分钟总分(200分)笔试:100分机试:100分第一部分:笔试(60分钟)笔试答卷提交方式:请各位学员将答案写在A4纸上,写上姓名,切记在每个答案前带上题目的序号。
一、简答题(20题,每题5分,共100分)1、请列出5个常见的异常类?2、Java 中的Math. round(-3. 5) 等于多少?3、请说出5个常见的类?说出5个常见的包?4、final 在Java 中有什么作用?5、final、finally、finalize 有什么区别?6、short s = 1 ;s = s + 1 ;有错吗?为什么?short s = 1 ;s += 1 ;有错吗?为什么?7、== 和equals 的区别是什么?8、使用冒泡法将整形数组的进行排序9、String s1=”Hello”; String s2=”hello”; String s3=s1.toLowerCase(); String s4=s2.toLowerCase();下面选项结果为true的是:A.s1==s3B.s2==s3C.s2==s4D.s3==s410、下面的代码输入什么?final String str8 = "b";String str9 = "a" + str8;String str89 = "ab";System.out.println("str9 = str89 : "+ (str9 == str89));11、接口和抽象类有什么区别?12、下面的代码输入什么?Integer i1 = 1 ;Integer i2 = 1 ;Integer i3 = 128 ;Integer i4 = 128 ;System.out.println(i1 == i2);System.out.println(i3 == i4);13、ArrayList跟Vector的区别?14、说下javac 跟java命令的作用?15、说下HashTable HashMap的区别?16、说下数组跟链表的区别?17、代码中有且仅有如下代码String s1 = new String("Hello"); ,这行代码会创建几个字符串对象?18、下面的代码输入什么?String s1 = "abc";String s2 = new String("abc");s2.intern();System.out.println(s1 ==s2);19、java中有几种访问修饰符以及它们区别?20、重写跟重载的区别?第二部分:机试要求:编写一个控制台版本的员工管理系统,使用分层,员工信息有ID、姓名、年龄、性别,并使用集合跟面向对象等知识点实现如下功能,请保持较好的代码规范跟项目结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名:马夺学号;07081513 专业:软件测试一详细描述MVC模式?MVC模式是"Model-View-Controller"的缩写,中文翻译为"模式-视图-控制器"。
MVC应用程序总是由这三个部分组成。
Event(事件)导致Controller改变Model 或View,或者同时改变两者。
只要Controller改变了Models的数据或者属性,所有依赖的View都会自动更新。
类似的,只要Controller改变了View,View 会从潜在的Model中获取数据来刷新自己。
MVC模式最早是smalltalk语言研究团提出的,应用于用户交互应用程序中。
smalltalk语言和java语言有很多相似性,都是面向对象语言,很自然的SUN在petstore(宠物店)事例应用程序中就推荐MVC模式作为开发Web应用的架构模式。
MVC模式是一种架构模式,其实需要其他模式协作完成。
在J2EE模式目录中,通常采用service to worker模式实现,而service to worker模式可由集中控制器模式,派遣器模式和Page Helper 模式组成。
而Struts只实现了MVC的View和Controller两个部分,Model部分需要开发者自己来实现,Struts提供了抽象类Action使开发者能将Model应用于Struts框架中。
MVC模式是一个复杂的架构模式,其实现也显得非常复杂。
但是,我们已经终结出了很多可靠的设计模式,多种设计模式结合在一起,使MVC模式的实现变得相对简单易行。
Views可以看作一棵树,显然可以用Composite Pattern来实现。
Views和Models之间的关系可以用Observer Pattern体现。
Controller控制Views的显示,可以用Strategy Pattern实现。
Model通常是一个调停者,可采用Mediator Pattern来实现。
现在让我们来了解一下MVC三个部分在J2EE架构中处于什么位置,这样有助于我们理解MVC模式的实现。
MVC与J2EE架构的对应关系是:View 处于Web Tier或者说是Client Tier,通常是JSP/Servlet,即页面显示部分。
Controller也处于Web Tier,通常用Servlet来实现,即页面显示的逻辑部分实现。
Model处于Middle Tier,通常用服务端的javaBean或者EJB实现,即业务逻辑部分的实现。
一、MVC设计思想MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
视图(View)代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet。
随着应用的复杂性和规模性,界面的处理也变得具有挑战性。
一个应用可能有很多不同的视图,MVC设计模式对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业务流程的处理。
业务流程的处理交予模型(Model)处理。
比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。
模型(Model):就是业务流程/状态的处理以及业务规则的制定。
业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。
业务模型的设计可以说是MVC最主要的核心。
目前流行的EJB模型就是一个典型的应用例子,它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的组件,但它不能作为应用设计模型的框架。
它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。
对一个开发者来说,就可以专注于业务模型的设计。
MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。
抽象与具体不能隔得太远,也不能太近。
MVC并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重构和提高重用性。
我们可以用对象编程来做比喻,MVC定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。
这点对编程的开发人员非常重要。
业务模型还有一个很重要的模型那就是数据模型J 菽P椭饕甘堤宥韵蟮氖?保存(持续化)。
比如将一张订单保存到数据库,从数据库获取订单。
我们可以将这个模型单独列出,所有有关数据库的操作只限制在该模型中。
控制(Controller)可以理解为从用户接收请求, 将模型与视图匹配在一起,共同完成用户的请求。
划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请求。
控制层并不做任何的数据处理。
例如,用户点击一个连接,控制层接受请求后, 并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。
因此,一个模型可能对应多个视图,一个视图可能对应多个模型。
模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。
如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。
因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。
这实际上是一种模型的变化-传播机制。
模型、视图、控制器三者之间的关系和各自的主要功能,如图1所示。
二、MVC设计模式的实现四、MVC的优点大部分用过程语言比如ASP、PHP开发出来的Web应用,初始的开发模板就是混合层的数据编程。
例如,直接向数据库发送请求并用HTML显示,开发速度往往比较快,但由于数据页面的分离不是很直接,因而很难体现出业务模型的样子或者模型的重用性。
产品设计弹性力度很小,很难满足用户的变化性需求。
MVC要求对应用分层,虽然要花费额外的工作,但产品的结构清晰,产品的应用通过模型可以得到更好地体现。
首先,最重要的是应该有多个视图对应一个模型的能力。
在目前用户需求的快速变化下,可能有多种方式访问应用的要求。
例如,订单模型可能有本系统的订单,也有网上订单,或者其他系统的订单,但对于订单的处理都是一样,也就是说订单的处理是一致的。
按MVC设计模式,一个订单模型以及多个视图即可解决问题。
这样减少了代码的复制,即减少了代码的维护量,一旦模型发生改变,也易于维护。
其次,由于模型返回的数据不带任何显示格式,因而这些模型也可直接应用于接口的使用。
再次,由于一个应用被分离为三层,因此有时改变其中的一层就能满足应用的改变。
一个应用的业务流程或者业务规则的改变只需改动MVC的模型层。
控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起完成不同的请求,因此,控制层可以说是包含了用户请求权限的概念。
最后,它还有利于软件工程化管理。
由于不同的层各司其职,每一层不同的应用具有某些相同的特征,有利于通过工程化、工具化产生管理程序代码。
五、MVC的不足MVC的不足体现在以下几个方面:(1)增加了系统结构和实现的复杂性。
对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。
(2)视图与控制器间的过于紧密的连接。
视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
(3)视图对模型数据的低效率访问。
依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。
对未变化数据的不必要的频繁访问,也将损害操作性能。
(4)目前,一般高级的界面工具或构造器不支持MVC模式。
改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成使用MVC的困难。
提供了一个很好的实现这种经典设计模式的类似环境。
开发者通过在ASPX页面中开发用户接口来实现视图;控制器的功能在逻辑功能代码(.cs)中实现;模型通常对应应用系统的业务部分。
在中实现这种设计而提供的一个多层系统,较经典的ASP结构实现的系统来说有明显的优点。
将用户显示(视图)从动作(控制器)中分离出来,提高了代码的重用性。
将数据(模型)从对其操作的动作(控制器)分离出来可以让你设计一个与后台存储数据无关的系统。
就MVC结构的本质而言,它是一种解决耦合系统问题的方法。
2.1 视图视图是模型的表示,它提供用户交互界面。
使用多个包含单显示页面的用户部件,复杂的Web页面可以展示来自多个数据源的内容,并且网页人员,美工能独自参与这些Web页面的开发和维护。
在下,视图的实现很简单。
可以像开发WINDOWS界面一样直接在集成开发环境下通过拖动控件来完成页面开发本。
本文中介绍每一个页面都采用复合视图的形式即:一个页面由多个子视图(用户部件)组成;子视图可以是最简单HTML 控件、服务器控件或多个控件嵌套构而成的Web自定义控件。
页面都由模板定义,模板定义了页面的布局,用户部件的标签和数目,用户指定一个模板,平台根据这些信息自动创建页面。
针对静态的模板内容,如页面上的站点导航,菜单,友好链接,这些使用缺省的模板内容配置;针对动态的模板内容(主要是业务内容),由于用户的请求不同,只能使用后期绑定,并且针对用户的不同,用户部件的显示内容进行过滤。
使用由用户部件根据模板配置组成的组合页面,它增强了可重用性,并原型化了站点的布局。
视图部分大致处理流程如下:首先,页面模板定义了页面的布局;页面配置文件定义视图标签的具体内容(用户部件);然后,由页面布局策略类初始化并加载页面;每个用户部件根据它自己的配置进行初始化,加载校验器并设置参数,以及事件的委托等;用户提交后,通过了表示层的校验,用户部件把数据自动提交给业务实体即模型。
这一部分主要定义了WEB页面基类PageBase;页面布局策略类PageLayout,完成页面布局,用于加载用户部件到页面;用户部件基类UserControlBase即用户部件框架,用于动态加载检验部件,以及实现用户部件的个性化。
为了实现WEB应用的灵活性,视图部分也用到了许多配置文件例如:置文件有模板配置、页面配置、路径配置、验证配置等。
2.2 控制器为了能够控制和协调每个用户跨越多个请求的处理,控制机制应该以集中的方式进行管理。
因此,为了达到集中管理的目的引入了控制器。
应用程序的控制器集中从客户端接收请求(典型情况下是一个运行浏览器的用户),决定执行什么商业逻辑功能,然后将产生下一步用户界面的责任委派给一个适当的视图组件。
用控制器提供一个控制和处理请求的集中入口点,它负责接收、截取并处理用户请求;并将请求委托给分发者类,根据当前状态和业务操作的结果决定向客户呈现的视图。