


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1. 写出从数据库表 Custom中查询No Name Num1 Num岁将Name以姓名显 示、计算出的和以总和显示的 SQL SELECT No , Name AS '姓名,Num1, Num2,(Num1+Num)2 AS 总和'FROM Custom2. 何为“事务处理”,谈谈你对它的理解。事务处理是指一个单元的工作,这 些工作要么全做,要么全部不做。作为一个逻辑单元,必须具备四个属性:自动 性、一致 性、独立性和持久性。自动性是指事务必须是一个自动的单元工作, 要么执行全部数据的修改, 要么全部数据的修改都不执行。 一致性是指当事务完 成时,必须使所 有数据都具有一致
2、的状态。在关系型数据库中,所有的规则必 须应用到事务的修改上, 以便维护所有数据的完整性。 所有的内部数据结构, 在 事务结束之后,必须保 证正确。独立性是指并行事务的修改必须与其他并行事 务的修改相互独立。 一个事务看到的数据要么是另外一个事务修改这些事务之前 的状态,要么是第二个事务已 经修改完成的数据,但是这个事务不能看到正在 修改的数据。3. 常用的数据结构有哪些?请枚举一些。 (不少于 5 个)链表、堆栈、二叉树、 队列、图、堆,集合。4. 什么是OOP什么是类?请对比类和对象实例之间的关系。OOP是Object_oriented Programming( 面向对象编程 )的缩写。这
3、主要是为了区别于以 前的面向过程的程序设计! 指的是用对象的观点来组织与构建系统, 它综合了功 能抽象和 数据抽象,这样可以减少数据之间的耦合性和代码的出错几率。使用 面向对象编程技术可以使得软件开发者按照现实世界里人们思考问题的模式编 写代码, 可以让软 件开发者更好地利用代码直接表达现实中存在的对象 , 将问题 空间直接映射到解空间 !类:即 class 在面向对象的程序设计中,专门用“类” 来表示用户定义的抽象数据类型( user_defined abstract type )。它将具有相 同状态、操作和访问机制的多个对象进行了抽象。 类具有继承、 数据隐藏和多态 三种主要特性。利用类的
4、这三种特性可以更好地表示现实世 界中事物。类是同 一类对象实例的共性的抽象, 对象是类的实例化。 对象通常作为计算机模拟思维, 表示真实世界的抽象,一个对象就像一个软件模块,可以为用户 提供一系列的 服务可以改变对象的状态、 测试、 传递消息等。 类定义了对象的实现细节或数 据结构。类是静态的,对象是动态的,对象可以看作是运行中的类。类 负责产 生对象,可以将类当成生产对象的工厂( Object factory ).5. 有一组数字( 3, 10, 6, 8, 98, 22),请编程排序(升降序皆可),语言不 限,算法不限,但须注明是何种算法。 / 下面使用简单的冒泡法进行排序! #inclu
5、de “iostream.h ” template class CBubbleprivate: type *pArray; int size;public:CBubble(type a,int sizeArray);void sort();void display();template CBubble:CBubble(type a,int sizeArray) pArray=a; size=sizeArray/sizeof(type); templatevoid CBubble:sort() type temp; for(int i=0;ipArrayj+1)/ 升序temp=pArrayj+
6、1;pArrayj+1=pArray|j;pArray|j=temp; templatevoid CBubble:display()for(int i=0;i<size;i+)cout< <parrayi<<endl; void main(void)int a=3,10,6,8,98,22;CBubble intData(a,sizeof(a);cout<<"The original dataare :"<<endl;intdata.display();intdata.sort();cout<<"a
7、ftersorting="" ,the="" data="" are:"<<endl;intdata.display();SQL / 书 / 书 connection connconn.setAuto(false)/ 表示手动提交 mit/ 提交 conn.rollback();/ 事务回滚- 内联接 use pubsselect a.au_fname, a.au_lname, p.pub_name from authorsa inner join publishers p on a.city = p.city
8、order by p.pub_name asc,a. au_lname asc, a.au_fname asc- 左外联接 use pubs select a.au_fname, a.au_lname, p.pub_name fromauthors a left join publishers pon a.city = p.city order by p.pub_name asc, a.au_lname asc, a.au_fnameasc- 使用子查询 USE pubs GO SELECT distinct pub_name FROM publishers WHERE pub_id IN (
9、SELECT pub_idFROM titlesWHERE type = 'business') GO-如果平均价格少于$30, WHILE循环就将价格加倍,然后选择最高价。-如果最高价少于或等于$50,WHILE循环重新启动并再次将价格加倍。- 该循环不断地将价格加倍直到最高价格超过$50 USE pubs GOWHILE (SELECT AVG(price) FROM titles) < $30BEGINUPDATE titlesSET price = price * 2SELECT MAX(price) FROM titlesIF (SELECT MAX(price
10、) FROM titles) > $50BREAKELSECONTINUEEND如果平均价格少于$30,WHILE循环就将价格加倍,然后选择最高价。-如果最高价少于或等于$50,WHILE循环重新启动并再次将价格加倍。-该循环不断地将价格加倍直到最高价格超过$50USE pubsGOWHILE (SELECT AVG(price) FROM titles) < $30BEGINUPDATE titlesSET price = price * 2SELECT MAX(price) FROM titlesIF (SELECT MAX(price) FROM titles) > $
11、50BREAKELSECONTINUEENDCREATE PROCEDURE au_infolastname varchar(40),firstname varchar(20)ASSELECT au_lname, au_fname, title, pub_nameFROM authors a INNER JOIN titleauthor taON a.au_id = ta.au_id INNER JOIN titles tON t.title_id = ta.title_id INNER JOIN publishers pON t.pub_id = p.pub_idWHERE au_fname
12、 = firstnameAND au_lname = lastnameGOEXECUTE au_i nfo Dull ' , Ann'或者EXECUTE au_i nfo last name = Dull ' , first name = Ann'创建存储过程 CREATE PROCEDURE titles_sum TITLE varchar(40),SUM money OUTPUT ASSELECT SUM = SUM(price)FROM titlesWHERE title LIKE TITLEGODECLARE TOTALCOST moneyEXECUTE
13、 titles_sum The%' , TOTALCOST OUTPUT select TOTALCOSTgoCREATE PROCEDURE Oakland_authorsASSELECT au_fname, au_lname, address, city, zipFROM authorsWHERE city =Oakland'and state = CA'ORDER BY au_lname, au_fnameGO-sp_helptext Oakland_authorsALTER PROCEDURE Oakland_authorsASSELECT au_fname,
14、au_lname, address, city, zipFROM authorsWHERE state = CA'ORDER BY au_lname, au_fnameGO-sp_helptext Oakland_authors-提交事务后,所有书籍支付的版税增加10%。begin transaction MyTransactionupdate royschedset royalty = royalty * 1.10 commit transaction MyTransaction-rollback transaction MyTransaction select royalty fr
15、om roysched-select trancount-1.创建试验实验表create table temptrigger( id_temp varchar(2) not null primary key, temp_name varchar(10) null, temp_age int null)goinsert temptrigger values( 01', 张三 , 10')insert temptrigger values( 02', 李四, 11')insert temptrigger values( 03', 王五, 12')in
16、sert tempt rigger values( 04', 赵六, 11')select * from temptrigger go-2.创建 insert , update 触发器 create trigger temptrigger_modify on temptrigger for insert,updateasbeginif (select temp_age from inserted) > 15 beginrollback transactionprint 年龄不能超过 15 岁!'endend-in sert temptrigger values(
17、-insert temptrigger values(in sert temptrigger values('04','大朋,17')'05', 大朋,17') 05' , 大朋 , 14') 01 ' 01'-update temptrigger set temp_age= 18' where id_temp =-update temptrigger set temp_age= 9' where id_temp =-3.仓U建 delete 触发器drop trigger temptrig
18、ger_delete create trigger temptrigger_delete on temptrigger for delete asbeginprint rowcountif rowcount > 1beginrollback transactionprint 一次删除记录不能多于 1 条 endend-delete from temptriggerdelete from temptrigger where id_te mp= 01'-创建聚集索弓丨 create clustered index clindx_titleid onroysched(title_id)
19、 sp_help roysched-创建非聚集索弓丨 create non clustered in dex un cli ndx_titleid onroysched(title_id) sp_help roysched查看索弓丨统计 dbcc show_statistics(roysched,titleidind)更新索弓丨统计 update statistics authors重建索弓丨 dbcc dbreindex('roysched ' ,unclindx_titleid)删除索弓丨 drop index roysched.unclindx_titleid-sp_he
20、lp roysched1 -创建ssn(社会保险号)的基于varchar的自定义数据类型。-用于存储11位社会保险号(999-99-999 )的列。该列不能-为 null。use pubs exec sp_addtype ssn ,'varchar(11) ' , ' NOTNULL-查看创建的数据类型-sp_help ssn-使用创建的数据类型 create table mytable( myid varchar(2) primary key,myssn ssn)4-删除创建的数据类型-drop table mytable - exec sp_droptype ssn
21、 ?批是包含一个或多个 Transact-SQL 语句的组,从应用程序一次性地发送到 Microsoft SQLServer执行。批作为一个整体执行,以 GO命令结束。批处理是 客户端作为一个单元发出的一个或多个 SQL 语句的集合。每个批处理编译为一 个执行计划。触发器?触发器是在对表进行插入、更新或删除操作时自动执行的存储过程 ?触发 器通常用于强制业务规则 ?触发器可以确保数据的完整性和一致性 事务是用户定义的一个操作序列,这些操作要么全做要么全不做,是一个不可分 割的工作单位 (构成单一逻辑工作单元的操作集合 )如果某一事务成功,则在该事 务中进行的所有数据更改均会提交,成为数据库中的
22、永久组成部分。如果事务遇到错误且必须取消或回滚,则所有数据更改均被清除 ?锁是在多用户环境中对数据访问的限制封锁就是事务T 在对某个数据对象(如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务 T 就 对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新 此数据对象。(锁蕴含的基本概念是用户需要对表的排它访问)?从程序员的角度看:分为乐观锁和悲观锁。乐观锁:完全依靠数据库来管理锁的工作。悲观 锁:程序员自己管理数据或对象上的锁处理。子查询:一个 SELECT 语句嵌套在另一个 SELECT 语句中。 它是某个表中一列或若干列值的集合和相应的指向 表中物理标识这些值
23、的数据页的逻辑指针清单 ,然后根据指定的排序次序排列这 些指针强制实施数据的唯一性。 提高表之间联接的速度。缺点存储索弓要占用磁盘空间。数据修改需要更长的时间,因为索 弓也要更新。?视图?是一种虚拟表,通常是作为来自一个或多个表的行或列的子集创建的。 ?视图本质上讲,就是保存在数据库中的 select 查询?视图并不是数据库中存储的 数据值的集合。?对最终用户的好处-结果更容易理解- 获得数据更容易?对开发人员的好处-限制数据检索更容易-维护应用程序更方便存储过程?使用一个名称存储的预编译T-SQL语句和流程控制语句的集合?由数 据库开发人员或数据库管理员编写 ?用来执行管理任务或应用复杂的业
24、务规则 优点?执行速度更快 ?首次运行时,进 行优化和编译得到执行计划并将该计划存储在系统表中,以后直接运行。?实现多个程序共享应用程序逻辑 ?组件式编程 ?能够屏蔽数据库的结构, 实现更高的安 全性?减少网络流通量 数据库设计和建模必要性 ?好的数据库结构有利于: -节省数据的存储空间 -能够 保证数据的完整性 -方便进行数据库应用系统的开发 ?设计不好的数据库结构将 导致-数据冗余、存储空间浪费 -内存空间浪费不管数据库的大小和复杂程度如何, 可以用下列基本步骤来设计数据库:-收集 信息-标识对象-设计数据模型-标识每个对象存储的信息类型-标识对象之间的关系 ?数据模型是一种标识实体类型及
25、其实体间联系的模型。典型的数据模型由网状 模型、层次模型和关系模型。 什么是规范化从关系数据库的表中, 除去冗余数据 的过程称为规范化。于其它数据的数据三级范式第一范式的定义: 如果一个表中没有重复组(即行与列的交叉点上只 有一个值,而不是一组值),则这个表属于第一范式(常记成1NF o简而言之:” 每一字段只存储一个值”。 例如: 职工号,姓名,电话号码组成一个表(一个人 可能有一个办公室电话 和一个家里电话号码) 第二范式的定义: 如果一个表属 于1NF,任何属性只依赖于关键字,则这个表属于第二范式(常记成2NF )。简而言之:必须先符合1NF的条件,且每一行都能被唯一的识别。将1NF转换
26、成2NF的方法是添加主键。学号,课程名,成绩第三范式的定义:如果一个表属于2NF, 且不包含传递依赖性,则这个表是第三范式(常记成 3NF)o满足3NF的表中不 包含传递依赖。简而言之:没有一个非关键属性依赖于另一个非关键属性。 学号, 课程号,成绩,学分学号,姓名,所在系,系名 称,系地址 什么是类与对象?所谓对象就是真实世界中的实体, 对象与实体是一一对应的, 也就是说现实世界 中每一个实体都是一个对象,它是一种具体的概念。 类是具备某些共同特征的实体的集合, 它是一种抽象的概念, 用程序设计的语言 来说,类是一种抽象的数据类型,它是对所具有相同特征实体的抽象。 属性与方法? 不同对象具有
27、相同特点, 就可能抽象为一定的类, 那么这些特点基本上可以分为 两类,一类是描述对象静态状态的,就是对象的属性,在程序设计中,可以称之 为变 量;另一类是描述对象的动作,就是对象的方法,在程序设计中我们称之 为函数。属性和方法是一个对象所具备的两大基本要素,也是我们后面编程工作 的核心。什么是封装?只要有足够的方法, 就没必要直接去操作对象属性, 只要调用这些方法就可以实 现要完成的任务, 这种现象称为封装, 它通过对象方法对其属性的操作把对象属 性封装在一个对象内部, 对象与外界打交道全部通过其自身的方法来实现, 有效 的把对象属性隐藏在对象内部。编写 java 文件的注意事项?在记事本中编
28、写 java 文件,在保存时一定要把文件名和扩展名用双引号括起来, 否则将默认保存为文本文件, 如果要保存的 java 文件名为 Program1.java, 则在 保存时在文件名文本框中一定要输入” Program1.java ”。如何编译 java 程序?单击开始|运行命令,在命令行上输入cmd按回车键(在window98中输入 command 按回车键),即可打开一个命令窗口,将目录转换到编写 java 源程序 所在的目录,输入 javac filename.java如何执行 java 程序?同样在命令窗口中输入 java filename ,基本数据类型?Java 的数据类型可以划分为
29、 4大类:整数,浮点数,字符型,布尔型。其中整 数可以划分为: byte,short,int,long. 浮点数可以划分为 float,double.</endl;intdata.display();intdata.sort();cout<<"after></s ize;i+)cout<>常见 struts 面试题(2009-02-17 09:10:33)标签:杂谈分类:饭碗1. Struts 的工作原理在 Struts 中,用户的请求一般以 *.do 作为请求服务名, 所有的 *.do 请求均被指 向 ActionSevlet , Acti
30、onSevlet 根据 Struts-config.xml 中的配置信息, 将用 户请求封装成一个指定名称的 FormBean并将此FormBean传至指定名称的 ActionBean ,由 ActionBean 完成相应的业务操作, 如文件操作,数据库操作等。 每一个 *.do 均有对应的 FormBean 名称和 ActionBean 名称,这些在 Struts-config.xml 中配置。2. Struts 优点与缺点Struts 是开源软件,使开发者能更深入的了解其内部实现机制。Struts 优点:业界”标准”(很多成功案例),学习资源丰富。Struts 的优点主要集中体现在两个方面
31、: Taglib 和页面导航。a、利用Struts提供的taglib可以大大节约开发时间。b、维护扩展比较方便。通过一个配置文件,即可把握整个系统各部分之间的联 系,这对于后期的维护有着莫大的好处。c、表现与逻辑分离d、表单验证解决了请求数据的验证问题,增强了系统健壮性。e、便于团队开发Struts缺点:a、大量的使用标签,对于初学者难度较大。b、 ActionForms 使用不便、无法进行单元测试 (StrutsTestCase 只能用于集成)3. Struts 提供了几个标签库?都是什么标签库?Struts 提供了五个标签库,即:HTML、 Bean、 Logic、 Template 和
32、Nested。HTML标签 用来创建能够和Struts 框架和其他相应的HTML标签交互的HTML 输入表单Bean 标签 在访问 JavaBeans 及其属性,以及定义一个新的 bean 时使用Logic 标签 管理条件产生的输出和对象集产生的循环Template 标签 随着 Tiles 框架包的出现,此标记已开始减少使用Nested 标签 增强对其他的 Struts 标签的嵌套使用的能力< Html:form>, < html:submit>, < Html:button>, , 参考: struts Logic标签说明4. Tiles 框架是什么?Ti
33、les框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离5. 谈谈 HashMap和 Hashtable 的区别。答:HashMap是轻量级的(线程不安全的,效率高的)集合, Hashtable是重量 级的(线程安全的,效率低的)集合。都属于Map接口的类,实现了将惟一键映射到特定的值上。HashMap类没有分类或者排序。它允许一个 n ull键和多个n ull值。Hashtable 类似于HashMap但是不允许null 键和null 值。它也比HashMap 慢,因为它是同步的。6. 什么是中间件? 中间件就是程序中可织入的,可重用的,与业务逻辑无关的各种组件。中间件(mi
34、ddleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义, 中间件处于操作系统软件与用户的应用软件的中间。 中间件在操作系统、 网络和数 据库之上,应用软件的下层, 总的作用是为处于自己上层的应用软件提供运行与开发的环境, 帮助用户灵活、高效地开发和集成复杂的应用软件。在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一 种独立的系统软件或服务程序, 分布式应用软件借助这种软件在不同的技术之间共享资 源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。 分类:数据访问中间件,远程调用中间件,消息中间件,交易中间件,对象中间 件。举例:1, RMI( R
35、emote Method Invocations,远程调用)第 3 页 共 33 页2, Load Balancing( 负载均衡,将访问负荷分散到各个服务器中 )3, Transparent Fail-over(透明的故障切换 )4,Clustering( 集群 , 用多个小的服务器代替大型机)5,Back-end-Integration(后端集成, 用现有的、 新开发的系统如何去集成遗留的系统)6,Transaction 事务(全局 / 局部)全局事务(分布式事务)局部事务(在同一 数据库联接内的事务)7,Dynamic Redeployment( 动态重新部署 , 在不停止原系统的情况下
36、,部署新的 系统)8, System Management係统管理)9, Threading( 多线程处理 )10, Message-oriented Middleware 面向消息的中间件(异步的调用编程)11, Component Life Cycle( 组件的生命周期管理 )12, Resource pooling (资源池)13, Security (安全)14, Cachin g (缓存)7. 你对MVC的理解,MV(有什么优缺点?结合Struts,说明在一个Web应用如何 去使用? 答:MVC设计模式(应用观察者模式的框架模式)M: Model(Business process l
37、ayer) ,模型,操作数据的业务处理层 , 并独立于 表现层(Independent of presentation) 。V: View(Presentation layer) ,视图,通过客户端数据类型显示数据 , 并回显模 型层的执 行结果。C: Controller(Control layer) ,控制器,也就是视图层和模型层桥梁,控制数 据的流向,接受视图层发出的事件,并重绘视图MVC匡架的一种实现模型 模型二 (Servlet-centric):JSP+Servlet+JavaBean,以控制为核心,JSP只负责显示和收集数据, Sevlet , 连接视图和模型,将视图层数据,发送
38、给模型层,JavaBea n,分为业务类和数据实体,业 务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种 MVC 勺实 现模式。StrutsMVC 框架(Web application frameworks)Struts是使用MVC勺实现模式二来实现的,也就是以控制器为核心。Struts提供了一些组件使用MVC开发应用程序:Model: Struts 没有提供model类。这个商业逻辑必须由 Web应用程序的开发 者以JavaBean或EJB的形式提供第 1 页 共 33 页View:Struts 提供了 action form 创建 form bean, 用于在 cont
39、roller 和 view 间传输数据。此外,Struts提供了自定义JSP标签库,辅助开发者用JSP创建交互式的 以表单为基 础的应用程序, 应用程序资源文件保留了一些文本常量和错误消息, 可转变为其 它语言, 可用于JSP中。Controller :Struts 提供了一个核心的控制器 ActionServlet ,通过这个核心的 控制器来调用其他用户注册了的自定义的控制器 Action ,自定义 Action 需要符合 Struts 的自定义 Action 规范,还需要在 struts-config.xml 的特定配置文件中进行配置,接 收JSP输入字段形成 Action form ,然
40、后调用一个 Action 控制器。 Action 控制器中提供了 model 的逻 辑接口。8. 类的核心特性有哪些? 类具有封装性、继承性和多态性。 封装性:类的封装性为类的成员提供公有、 缺省、保护和私有等多级访问权限, 目的是隐 藏类 中的私有变量和类中方法的实现细节。继承性: 类的继承性提供从已存在的类创建新类的机制,继承( inheritance )使一个新 类自 动拥有被继承类(父类)的全部成员。多态性: 类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。9. 、请说出几个常用的异常类答: NullpointException(空指针异常)ClassNotFou
41、ndException (类找不到异常) ClassCastException (类型转换异常) IllegalArgumentException (非法参数异常) ArithmeticException (算术异常) NumberFormatException (数据格式异常) IndexOutOfBoundsException (数组下标越界异常) IllegalStateException (非法语句异常)Hibernate 工作原理及为什么要用? 原理:1. 读取并解析配置文件2. 读取并解析映射信息,创建 SessionFactory3. 打开 Sesssion4. 创建事务 Tra
42、nsation5. 持久化操作6. 提交事务7. 关闭 Session8. 关闭 SesstionFactory为什么要用:1. 对JDBC访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代 码。2. Hibernate是一个基于JDBC的主流持久化框架,是一个优秀的 ORh实现。他 很大程度的简化DAO层的编码工作3. hibernate 使用 Java 反射机制,而不是字节码增强程序来实现透明性。4. hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。 它支持各种关系数据库,从一对一到多对多的各种复杂关系。2 Hibernate 是如何延迟加载 ?1.
43、Hibernate2 延迟加载实现: a) 实体对象 b) 集合( Collection )2. Hibernate3 提供了属性的延迟加载功能当 Hibernate 在查询数据的时候, 数据并没有存在与内存中, 当程序真正对数据 的操作时, 对象才存在与内存中, 就实现了延迟加载, 他节省了服务器的内存开 销,从而提高了服务器的性能。3Hibernate 中怎样实现类之间的关系 ?(如:一对多、多对多的关系 ) 类与类之间的关系主要体现在表与表之间的关系进行操作, 它们都市对对象进行 操作,我们程序中把所有的表与类都映射在一起,它们通过配置文件中的 many-to-one 、one-to-m
44、any 、many-to-many、4 说下 Hibernate 的缓存机制1. 内部缓存存在 Hibernate 中又叫一级缓存,属于应用事物级缓存2. 二级缓存:a) 应用及缓存b) 分布式缓存条件:数据不会被第三方修改、数据大小在可接受范围、数据更新频率低、同一 数据被系统频繁使用、非 关键数据c) 第三方缓存的实现5 Hibernate 的查询方式Sql 、 Criteria,object comptositionHql:1 、 属性查询2、参数查询、命名参数查询3、关联查询4、分页查询5、统计函数6 如何优化 Hibernate ?1. 使用双向一对多关联,不使用单向一对多2. 灵活
45、使用单向一对多关联3. 不用一对一,用多对一取代4. 配置对象缓存,不使用集合缓存5. 一对多集合使用Bag,多对多集合使用Set6. 继承类使用显式多态7. 表字段要少,表关联不要怕多,有二级缓存撑腰7 Struts 工作机制?为什么要使用 Struts ?工作机制:Struts 的工作流程 :在web应用启动时就会加载初始化 ActionServlet,ActionServlet从struts-config.xml 文件中读取配置信息 , 把它们存放到各种配置对象 当 ActionServlet 接收到一个客户请求时 , 将执行如下流程 .-(1) 检索和用户请求匹配的 ActionMap
46、ping 实例 , 如果不存在 , 就返回请求路径 无效信息 ;-(2) 如果 ActionForm 实例不存在 , 就创建一个 ActionForm 对象 , 把客户提交的表 单数据保存到 ActionForm 对象中 ;-(3) 根据配置信息决定是否需要表单验证 . 如果需要验证 , 就调用 ActionForm 的 validate() 方法 ;-(4) 如果 ActionForm 的 validate() 方法返回 null 或返回一个不包含ActionMessage 的 ActuibErrors 对象 , 就表示表单验证成功 ;-(5)ActionServlet 根据 ActionM
47、apping 所包含的映射信息决定将请求转发给哪 个 Action, 如果相应的 Action 实例不存在 , 就先创建这个实例 , 然后调用 Action 的 execute() 方法 ;-(6)Action 的 execute。方法返回一个 ActionForward 对象,ActionServlet在把客户请求转发给Actio nF orward对象指向的JSP组件;-(7)ActionForward 对象指向JSP组件生成动态网页,返回给客户;为什么要用:JSP、Servlet、JavaBean技术的出现给我们构建强大的企业应用系统提供了可 能。但用这些技术构建的系统非常的繁乱,所以在
48、此之上,我们需要一个规则、 一个把这些技术组织起来的规则,这就是框架, Struts 便应运而生。基于 Struts 开发的应用由 3 类组件构成:控制器组件、模型组件、视图组件8 Struts 的 validate 框架是如何验证的?在struts 配置文件中配置具体的错误提示,再在FormBean中的validate。 方法具体调用。9 说下 Struts 的设计模式MVC莫式:web应用程序启动时就会加载并初始化ActionServler 。用户提交表单时,一个配置好的 ActionForm 对象被创建,并被填入表单相应的数 据, ActionServler 根据 Struts-conf
49、ig.xml 文件配置好的设置决定是否需要表单验 证,如果需要就调用 ActionForm 的 Validate ()验证后选择将请求发送到哪个 Action ,如果 Action 不存在, ActionServlet 会先创建这个对象,然后调用 Action的execute ()方法。Execute ()从ActionForm 对象中获取数据,完成 业务逻辑,返回一个 ActionForward 对 象, ActionServlet 再把客户请求转发 给 ActionForward 对象指定的 jsp 组件, ActionForward 对象指定的 jsp 生成动 态的网页,返回给客户。10
50、 spring 工作机制及为什么要用 ?1. spring mvc 所有的请求都提交给 DispatcherServlet, 它会委托应用系统的其 他莫块负责对请求进行真正的处理工作。2. DispatcherServlet查询一个或多个 HandlerMapping, 找到处理请求的Controller.3. DispatcherServlet请求提交到目标 Controller4. Controller进行业务逻辑处理后,会返回一个 ModelAndView5. Dispathcher 查询一个或多个 ViewResolver 视图解析器 , 找到 ModelAndView 对象指定的视图
51、对象6. 视图对象负责渲染返回给客户端。为什么用:AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入 到应用程序代码中。使用 AOP 后,公共服务 (比如日志、持久性、事务等)就 可以分解成方面并应用到域对象上,同时不会增加域对象的对象莫型的复杂性。 IOC 允许创建一个可以构造对象的应用环境, 然后向这些对象传递它们的协作对 象。正如单词 倒置 所表明的, IOC 就像反 过来的 JNDI 。没有使用一堆抽象工 厂、服务定位器、 单元素( singleton )和直接构造 ( straight construction ), 每一个对象都是用其协作对象构造的。因此是由容
52、器管理协作对象( collaborator )。Spring即使一个AOP匡架,也是一 IOC容器。Spring最好的地方是它有助于 您替换对象。有了 Spring ,只要用 JavaBean 属性和配置文件加入依赖性(协 作对象)。然后可以很容易地在需要时替换具有类似接口的协作对象。 Spring 框架是一个分层架构,由 7 个定义良好的莫块组成。 Spring 莫块构建 在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所 示。组成 Spring 框架的每个莫块 (或组件) 都可以单独存在, 或者与其他一个或多 个莫块联合实现。每个莫块的功能如下: 核心容器:核心
53、容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。 Spring 上下文: Spring 上下文是一个配置文件,向 Spring 框架提供上下 文信息。Spring上下文包括企业服务,例如 JNDI、EJB电子邮件、国际化、 校验和调度功能。 Spring AOP通过配置管理特性,Spring AOP模块直接将面向方面的编程功 能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对 象支持AOP。Sprin
54、g AOP模块为基于Spring的应用程序中的对象提供了事务 管理服务。通过使用Spring AOP不用依赖EJB组件,就可以将声明性事务管 理集成到应用程序中。 Spring DAO JDBCDAO抽象层提供了有意义的异常层次结构,可用该结构来 管理异常处理和不同数据库供应商抛出的错误消息。 异常层次结构简化了错误处 理,并且极大地降低了需要编写 的异常代码数量(例如打开和关闭连接)oSpring DAO的面向JDBC的异常遵从通用的DAO异常层次结构。 Spring ORM Spring框架插入了若干个ORM框架,从而提供了 ORM的对象 关系工具,其中包括 JDO、Hibernate 和
55、 iBatis SQL Map 。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。 Spring Web模块:Web上下文模块建立在应用程序上下文模块之上,为基于Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 Spring MVC框架:MVC框架是一个全功能的构建 Web应用程序的MVC实现。 通过策略接口,MVC框架变成为高度可配置的,MVC容纳了大量视图技术,其中 包括 JSP、Velocity 、Tiles 、iText 和 POI。Spring 框
56、架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管 理的环境。 Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务 和数据访问对象。毫无疑问,这样的对象可以在不同J2EE环境(Web或EJB)、 独立应用程序、测试环境之间重用。IOC 和 AOP控制反转模式(也称作依赖性介入)的基本概念是:不创建对象,但是描述创建 它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组 件需要哪一项服务。容器(在 Spring 框架中是 IOC 容器)负责将这些联系在 一起。在典型的 IOC 场景中,容器创建了所有对象,并设置必要的属性将它们连接在 一起,
57、决定什么时间调用方法。下表列出了 IOC 的一个实现模式。Spring 框架的 IOC 容器采用类型 2 和类型 3 实现。面向方面的编程面向方面的编程,即AOP,是一种编程技术,它允许程序员对横切关注点或横切 典型的职责分界线的行为(例如日志和事务管理)进行模块化。AOP的核心构造 是方面,它将那些影响多个类的行为封装到可重用的模块中。AOP和IOC是补充性的技术,它们都运用模块化方式解决企业应用程序开发中的复杂问题。 在典型的面向对象开发方式中, 可能要将日志记录语句放在所有方 法和 Java 类中才能实现日志功能。在 AOP 方式中,可以反过来将日志服务模 块化,并以声明的方式将它们应用到需要日志的组件上。 当然,优势就是 Java 类 不需要知道日志服务的存在,也不需要考虑相关的代码。所以,用Spring AOP编 写的应用程序代码是松散耦合的。AOP的功能完全集成到了 Spring事务管理、日志和其他各种特性的上下文中。IOC 容器Spring 设计的核心是 org.springframework.beans 包,它的设计目标是与 JavaBean 组件一起使用。这个包通常不是由用户直接使用,而是由服务器将其 用作其他多数功能的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州水利水电职业技术学院《中医护理技术》2023-2024学年第二学期期末试卷
- 重庆五一职业技术学院《交通运输安全2》2023-2024学年第二学期期末试卷
- 上海中侨职业技术大学《建筑营造》2023-2024学年第二学期期末试卷
- 重庆建筑工程职业学院《跨媒介创意2》2023-2024学年第二学期期末试卷
- 北京工商大学嘉华学院《管理学原理B1》2023-2024学年第二学期期末试卷
- 新疆现代职业技术学院《教育学研究新进展》2023-2024学年第二学期期末试卷
- 大连海洋大学《插画基础》2023-2024学年第二学期期末试卷
- 上海工商职业技术学院《陶瓷产品设计》2023-2024学年第二学期期末试卷
- 湖南交通工程学院《数字电路与数字逻辑》2023-2024学年第二学期期末试卷
- 新疆司法警官职业学院《通讯电子线路》2023-2024学年第二学期期末试卷
- 2025-2030中国财务公司行业深度分析及发展前景与发展战略研究报告
- 2025年人教版小学五年级下册奥林匹克数学竞赛测试题(附参考答案)
- 不分手协议书合同书
- 室内空间设计方案汇报
- 人因工程学在潜艇指挥系统设计中的应用研究
- 新生儿败血症诊断与治疗专家共识(2024)解读课件
- 调饮技术大赛考试题库400题(含答案)
- 2025年山东青岛东鼎产业发展集团有限公司招聘笔试参考题库含答案解析
- 宠物托运自负协议书范本
- 软件开发中的质量保障及改进措施
- 面向区块链的数据分析系统的设计与实现
评论
0/150
提交评论