




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、struts1、MVC(Struts的MVC实现) Struts的目标是希望分离Web程序的表示层、控制层和业务逻辑层。 Struts提供了自己的控制器组件,并融合许多先进的技术来提供后台模型与前端视图。 对后台来说,Struts可以与JDBC技术和EJB技术集成,或者与一些优秀的第三方软件包交互,如Hibernate;在视图方面,Struts使用了JSP技术,并可将标记库技术、JSP技术、Velocity模板、XSLT技术等同时用于表示层。2、Struts的核心包Action、actionForm、actionMapping、actionServlet、actionForward.3、 Action 定义多个Action类,用于处理客户端请求。定义的Action组件类为org.apache.struts.action.Action子类类型, 控制器调用该类的execute()方法以处理不同的页面请求 。org.apache.struts.action.Action类是Struts的心脏,也是客户请求和业务操作间的桥梁。每个Action类通常设计为代替客户完成某种操作。Struts框架只会为每个Action类创建一个Action实例。所有客户请求共享同一个Action实例,并且所有请求线程可以同时执行它的execute()方法。在多个线程同时使用Action对象的时候,要注意数据的线程安全。4、 ActionMappingActionMapping是用来封装struts-config.xml文件中标记的配置信息 。5、 ActionForm定义ActionForm组件类需要继承ActionForm 父类使用请求表单参数自动填充该ActionForm对象,并在不同的页面间传递这些数据。 需在struts-config.xml中配置元素,每一个FormBean要对应一个子元素。validate()方法validate方法的作用是验证客户输入的数据是否符合条件 。reset()方法reset方法中可以对属性做重置,可以在这个方法中恢复各个属性的默认值。 6、 Struts配置文件Struts配置文件struts-config.xml可以说是整个Struts应用程序的枢纽。Struts应用的各个组件及其关系均在该文件中声明。该文件主要包含、等元素,用以对ActionForm、Action等对象进行声明。7、 标签库Struts框架提供了6个核心的标记库,供应用程序使用。每个标记库各有不同的用途,可以单独使用,也可以互相搭配使用。Struts提供的自定义标记库主要分成以下几类:l HTML标记:用来生成HTML标记,在表单中显示数据,使用会话ID对URL进行编程;l Bean标记:用来在JSP页中管理Bean;l Logic标记:用来在JSP中控制流程;l Nested标记:继承于基本的Struts标记,在不改变原标记逻辑的情况下能以一种嵌套的方式是它们相互关联;l Template标记:使用动态模板构造普通格式的页;l Tiles标记:利用JSP的“include”特性把不同组件组装成表示层页面,每一个这样的组件(Tile)可以在整个应用程序中复用。8、 属性文件 当对一个应用程序进行国际化处理时,所要用的各种语言版本的“标签”信息应该存放在不同的属性文件中,每一个这样的文件对应一种语言的版本。所有属性文件合在一起被称为资源包(Resource Bundle)。属性文件的命名格式: 1、文件名前缀.properties 2、文件名前缀_语言种类.properties9、 Struts的运行流程10、 Validate方法验证的实现已配置的方式来验证表单数据。不需要编写代码 。 提高了数据验证的灵活性和可重用性。并且它克服了使用编程方式进行参数验证的局限性。 Validator框架中使用的核心组件包有两个,分别是: 1、jakarta-oro.jar 该包提供了一些处理文本的功能类 2、commons-validator.jar 该包提供了验证框架的核心类,包含了通用的验证方法和验证规则。默认情况下Validator验证框架自带了一个validator-rules.xml配置文件,文件中定义了一组通用的验证规则 。validation.xml配置文件是需要开发人员编写的。在validation.xml配置文件中,定义了对客户输入参数的验证方式。11、 国际化的支持国际化(Internationalization)又称为I18N 。一个支持国际化的应用程序应该具有以下特征: 、不需要改变代码就可以实现支持添加的语言。 、文本元素、消息元素以及图像都要从代码中脱离出来,存储在代码外部。、文化相关的数据,如:时间、货币。都应该根据用户所在的地理位置及语言环境进行格式化。、支持非标准的字符集。、能够快速适应新的语言或地区。本地化(Localization)通过添加特定组件和翻译来使软件适用于特定的场所和语言的过程。Localization可以缩写为L10N。Struts框架对国际化的支持其实是依赖于 Java语言本身对国际化的支持。在Java 中可以通过使用3个关键的类来实现对国际化的支持 。 java.util.Locale, java.util.ResourceBundlejava.text.MessageFormatStruts已经将国际化的实现封装在框架中。在Struts框架中实现国际化,需要做以下工作:针对不同的语言编写资源文件。使用资源文件夹。二、hibernate1、数据访问层数据访问模式 业务逻辑和数据访问耦合 ORM模式:在单个组件中负责所有实体域对象的持久化,封装数据访问细节。 主动域对象模式:由实体域对象本身负责管理自己的持久化 JDO模式: SUN公司制定的描述对象持久化语义的标准API CMP模式:由容器负责管理持久化2、 ORM对象关系映射(Object/Relational Mapping) ORM模式:在单个组件中负责所有实体域对象的持久化,封装数据访问细节。 ORM解决的主要问题就是对象-关系的映射。域模型和关系模型都分别建立在概念模型的基础上。域模型是面向对象的,而关系数据模型是面向关系的.一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录。域模型与关系模型之间存在许多不匹配之处。3、 Hibernate的概念 Hibernate是ORM的解决方案,简单地说就是将Java对象与对象关系映射至关系型数据库中的表格与表格之间的关系,Hibernate提供了这个过程中自动对应转换的方案。Hibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。在基于MVC设计模式的Java Web应用中,Hibernate可以作为应用的数据访问层。4、 级联关系数据对象之间关联关系有一对一、一对多、及多对多关联关系。5、 会话工厂Session是应用程序与数据库之间的一个会话。SessionFactory接口是产生Session实例的工厂。6、 事务(P202) 事务(Transaction)是工作中的基本逻辑单位,可以用于确保数据库能够被正确修改,避免数据只修改了一部分而导致数据不完整,或者在修改时受到用户干扰。数据库向用户提供保存当前程序状态的方法,叫事务提交(commit)。当事务执行过程中,是数据库忽略当前的状态并回到前面保存的状态的方法叫事务回滚(rollback)。事务的特性:l 原子性l 一致性l 隔离性l 持久性事务隔离意味着对于某一个正在运行的事务来说,好像系统中只有这一个事务,其他并发的事务都不存在一样。在大部分情况下,很少使用完全隔离的事务。但不完全隔离的事务会带来一些问题:l 更新丢失(Lost Update)l 脏数据(Dirty Read)l 不可重读(Unrepeatable Read)l 幻读(Phantom Read)l 读操作未提交(Read Uncommitted)l 读操作已提交(Read Committed)l 可重读(Repeatable Read)l 可串行化(Serializable)7、 Session接口,提供的方法(P171)Session是应用程序与数据库之间的一个会话,是Hibernate运作的中心,持久层操作的基础,相当于JDBC中的Connection。对象的生命周期、事务的管理、数据库的存取都与Session息息相关。一个持久化类(PO)从定义上与普通的JavaBean类没有任何区别,但是它与Session关联起来后,就具有了持久化的能力。当然,这种持久化操作是受Session控制的,即通过Session对象装载、保存、创建或查询持久化对象(PO)。Session类有save()、delete()、update()、load()等方法,来分别完成对持久化对象的保存、删除、修改、加载等操作。Session类的方法的用途:l 取得持久化对象:get()和load()等方法。l 持久化对象的保存、更新和删除:save()、update()、saveOrUpdate()和delete()等方法。l createQuery()方法:用来从Session生成Query对象。l beginTransaction()方法:用来从Session生成Transaction对象。l 管理Session的方法:isOpen()、flush()、clear()、evict()、close()等方法,其中isOpen()方法用来检查Session是否仍然打开;flush()方法用来清理Session缓存,并把缓存中SQL语句发送出去;clear()方法用来清除Session中的所有缓存对象;evict()方法用于清除Session缓存中的某个对象;close()方法用来关闭Session。8、 持久化对象在Hibernate的应用中,一个数据表对应一个持久化对象(PO,Persistent Object)。PO实际上就是一个普通JavaBean,只不过定义时需要遵循一定的规则。定义PO要遵循四个规则:1) 未持久化字段声明访问器(accessors)和是否可变的标志(mutators)2) 实现一个默认的(即无参数的)构造方法(constructor)3) 提供一个标识符属性(identifier property)(可选)4) 使用非final的类(可选) 创建持久化类Customer A、持久化类符合JavaBean的规范,包含一些属性,以及与之对应的getXXX()和setXXX()方法。 B、持久化类有一个id属性,用来惟一标识Customer类的每个对象。在面向对象术语中,这个id属性被称为对象标识符(OID,ObjectIdentifier),通常它都用整数表示 C、Hibernate要求持久化类必须提供一个不带参数的默认构造方法 9、 检索策略l 立即检索策略运行Session的find()方法默认的立即检索策略的缺点 1、select语句的数目太多,需要频繁的访问数据库,会影响检索性能。如果需要查询n个Customer对象,那么必须执行n+1次select查询语句。这种检索策略没有利用SQL的连接查询功能,例如以上5条select语句完全可以通过以下1条select语句来完成: select * from CUSTOMERS left outer join ORDERS on CUSTOMERS.ID=ORDERS.CUSTOMER_ID 2、以上select语句使用了SQL的左外连接查询功能,能够在一条select语句中查询出CUSTOMERS表的所有记录,以及匹配的ORDERS表的记录。 3、在应用逻辑只需要访问Customer对象,而不需要访问Order对象的场合,加载Order对象完全是多余的操作,这些多余的Order对象白白浪费了许多内存空间。l 延迟检索策略在一对多关联级别使用延迟检索策略1、对于元素,应该优先考虑使用延迟检索策略:2、此时运行:Customer customer=(Customer)session.get(Customer.class,new Long(1);3、仅立即检索Customer对象,执行以下select语句:select * from CUSTOMERS where ID=1;优点由应用程序决定需要加载哪些对象,可以避免执行多余的select语句,以及避免加载应用程序不需要访问的对象。因此能提高检索性能,并且能节省内存空间。缺点应用程序如果希望访问游离状态的代理类实例,必须保证它在持久化状态时已经被初始化。适用范围一对多或者多对多关联。应用程序不需要立即访问或者根本不会访问的对象。l 迫切左外连接检索策略在多对一关联级别使用迫切左外连接检索策略默认情况下,多对一关联使用迫切左外连接检索策略。如果把Order.hbm.xml文件的元素的outer-join属性设为true,总是使用迫切左外连接检索策略。对于以下程序代码:Order order=(Order)session.get(Order.class,new Long(1);在运行session.get()方法时,Hibernate执行以下select语句:Select * from ORDERS left outer join CUSTOMERS on ORDERS.CUSTOMER_ID=CUSTOMERS.ID where ORDERS.ID=1优点1对应用程序完全透明,不管对象处于持久化状态,还是游离状态,应用程序都可以方便的从一个对象导航到与它关联的对象。 2使用了外连接,select语句数目少。缺点1可能会加载应用程序不需要访问的对象,白白浪费许多内存空间。 2复杂的数据库表连接也会影响检索性能。适用范围1多对一或者一对一关联。2应用程序需要立即访问的对象。3数据库系统具有良好的表连接性能10、 Hibernate的配置文件的属性和包含的内容在Java应用中使用Hibernate的步骤1、创建Hibernate的配置文件2、创建持久化类3、创建对象-关系映射文件4、通过Hibernate API编写访问数据库的代码Hibernate的配置文件(perties)hibernate.dialect=net.sf.hibernate.dialect.MySQLDialecthibernate.connection.driver_class=com.mysql.jdbc.Driverhibernate.connection.url=jdbc:mysql:/localhost:3306/SAMPLEDBhibernate.connection.username=roothibernate.connection.password=1234hibernate.show_sql=true11、 数据查询的方法a. Criteria Query Criteria Query通过面向对象化的设计,将数据查询条件封装为一个对象。 Criteria Query可以看作是传统SQL的对象化表示,如: Criteria criteria = session.createCriteria(TUser.class); criteria.add(Expression.eq(name,Erica);criteria.add(Expression.eq(sex,new Integer(1);实际上是SQL “Select * from t_user wherename=Erica and sex=1”Criteria 本身只是一个查询容器,具体的查询条件需要通过Criteria.add方法添加到Criteria实例中。Expression 对象具体描述了查询条件。Expression.eq对应SQL“field = value”表达式。如Expression.eq(name,Erica)Expression.allEq参数为一个Map对象,其中包含了多个属性值对应关系。相当于多个Expression.eq关系的叠加。Expression.gt对应SQL中的 “field value ” 表达式Expression.ge对应SQL中的 “field = value” 表达式Expression.lt对应SQL中的 “field value” 表达式Expression.le对应SQL中的 “field field”Expression.geProperty用于比较两个属性之间的值,对应SQL中的“field= field”Expression.ltProperty用于比较两个属性之间的值,对应SQL中的“field field”Expression.leProperty用于比较两个属性之间的值,对应SQL中的“field=, =, , !=, like 逻辑操作 and, or, not 字符串连接 | SQL标量( scalar)函数,例如 upper() 和 lower() 没有前缀的 ( )表示分组 in, between, is null order by 子句 查询返回的列表可以按照任何返回的类或者组件的属性排序:from eg.DomesticCat cat order by asc, cat.weight desc, cat.birthdate group by 子句 having子句select cat.color, sum(cat.weight), count(cat) from eg.Cat cat group by cat.color having cat.color10子查询对于支持子查询的数据库, Hibernate支持在查询中嵌套子查询。子查询必须由圆括号包围(常常是在一个SQL统计函数中)。 也允许关联子查询(在外部查询中作为一个别名出现的子查询)。c. SQL查询Hibernate 也提供了对原生SQL以及存储过程(Hibernate3)的支持,是对 Criteria和HQL的补充使用Session.createSQLQuery() :传递给createSQLQuery(1,2,3)的三个参数是: 1.SQL查询语句 2.表的别名 3.查询返回的持久化类 例Query sqlQuery = sess.createSQLQuery(select cat.* from cats cat, cat, Cat.class); sqlQuery.setMaxResults(50);List cats = sqlQuery.list(); 为SQL查询命名可以在映射文档中定义SQL查询的名字,然后就可以像调用一个命名HQL查询一样直接调用命名SQL查询。 SELECT person.NAME AS , person.AGE AS person.age, person.SEX AS person.sex FROM PERSON person WHERE person.NAME LIKE Hiber% List people = sess.getNamedQuery(mySqlQuery) .setMaxResults(50) .list(); 三、Ajax1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司理赔指标管理制度
- 跨境运输督查方案(3篇)
- 公安内部安全试题及答案
- 高新技术产业园区场地厂房租赁协议
- 高端制造企业部分股权收购与转售协议
- 实木门品牌授权代理与培训服务合同
- 产业园区企业参观保密协议书
- 车辆质押贷款风险分担合作协议
- 智能城市PPP项目合作协议范本
- 财务合同部财务审计与风险控制协议
- 2022年徐州市泉山区工会系统招聘考试题库及答案解析
- 屋面彩钢瓦施工技术交底
- 小学三年级部编版下学期语文期末复习题〔有答案〕
- 剪映入门教程PPT
- 人教版八年级人文地理下册知识点整理(2021版)
- 2021-2022学年浙江省杭州市西湖区杭州绿城育华教育集团一年级下学期期末语文试卷
- 超星学习通线上考试操作指南(教师篇)
- 招聘求职简历制作表格模板可编辑下载 精品简历模板 标准表格单页04
- 趣味心理测试题目与评分标准
- 野马归野读书交流会
- 庞中华行书字帖(共36页)
评论
0/150
提交评论