1、就业资料一struts+spring+hibernate+ibatis+webservice+jqueryStruts+Spring+Hibernate+Jquery+Webservice目录1.hibernate 1hibernater概述 1hibernate操作数据库基本步骤 2hibernate查询 4hibernate二级缓存: 62.struts2 7struts2概述 7struts2 执行的流程: 8struts的配置文件解析: 8struts的核心对象和拦截器 9Struts自定义标签 103.spring: 12di以及相关配置 12Aop 13数据库相关,事物管理 144
2、.jquery: 15概述: 15标签选择器 15常用的函数 155.webservice: 17工作原理 17用到的相关技术 17使用xfire实现webservice服务和客户端 171.hibernatehibernater概述 Hibernate是一个数据持久化的框架,封装了jdbc简化了对数据库相关的访问和操作, 通过对象-关系映射(orm)可以使用面向对象的方式非常方便操作关系型数据库.hibernate提供了丰富的查询方式(hql,本地sql,craitail)和多种数据加载方式以及数据缓存机制提高程序的效率,减少系统的开销a) hibernate原理通过java的类和数据库表的
3、映射配置,依赖java的反射机制,xml解析技术,jdbc完成 对象与数据库之间数据的转换操作,以及对象的关系操作,运行机制是 通过发出的数据库操作指令通过配置文件解析 转换成相应的sql语句,完成操作hibernate操作数据库基本步骤1. 读取并解析配置文件 Configuration conf = newConfiguration().configure();2. 读取并解析映射信息,创建SessionFactory SessionFactory sf = conf.buildSessionFactory();3. 打开Session Session session = sf.openS
4、ession();4. 开始一个事务(增删改操作必须,查询操作可选) Transaction tx = session.beginTransaction();5. 数据库操作 session.save(user);/或其它操作6. 提交事务(回滚事务) mit();(tx.rollback();)7. 关闭sessionsession.close();b) Hibernate关联关系映射 BookType.hbm.xml t_id Book.hbm.xml t_id 一对多: t_id Cascade:当设置了cascade属性不为none时,Hibernate 会自动持久化所关联的对象all
5、对所有操作进行级联操作save-update执行保存和更新操作时进行级联操作delete执行删除操作时进行级联操作none对所有操作不进行级联操作Inverse:Inverse(反转)属性指定了关联关系中的方向,inverse=false 的为主动方,由主动方负责维护关联关系,在一对多关联中,将one 方的inverse 设置为true,这将有助性能的改善 Lazy:延迟加载,延迟加载时指在需要数据的时候才加载数据,延迟加载的级别有类级别,set级别和属性级别(hibernate3.0新增加),lazy=false为及时加载,true表示延迟加载 hibernate查询1. 通过id查询单个数
6、据有load 和 get方式Get方法直接查询数据库如果没有则放回nullLoad方法先在session创建代理对象 然后从缓存中查找数据,然后使用的时候从数据库中查询 如果没有数据则返回 nullPointException2. 查询:是一种面向对象的查询语言,其中没有表和字段的概念,只有类、对hql象和属性的概念,hibernate中常用的查询方式1. 查询对象String hql =from Book as b where b.name=java;Query query = session.createQuery(hql);List bookList = query.list();2.
7、查询对象某个属性 String hql =select b.price,b.publish from Book as b where b.name=”sql”;Query query = session.createQuery(hql);List list = query.list();Iterator it = list.iterator();/取数据3. 绑定参数String hql =from Book as b where b.name=?query.setString(0, java); String hql =from Book as b where b.name=:nameque
8、ry.setString(“name”, java); String hql=from Book as b where b.name=:name and b.price between :min and :maxClass Properties() Private String name; Private int min; Private int maxquery.setProperties(q p);4. 聚合函数select count(house) from Book5. 排序 from Book b order by b.price (asc 升序、desc 降序)6. 分组 sele
9、ct count(b.id) from Book b group by b.typeId having sum(b.price) 10007. 子查询 select * from Book as b1 where b1.price ( select avg(b2.price) from Book b2 where b2.typeId = 1) 8. 连接查询Fetch:迫切连接方式/这种查询方式查询得到的每行数据时二个对象Book 和type对象from Book b inner join fetch b.type t/这种查询方式得到的每行数据时一个object类型的数组from Book
10、b inner join b.type t9. 分页query.setFirstResult(pageIndex-1)*pageSize);query.setMaxResults(pageSize);3. Criteria 查询:又称为“对象查询”,它用面向对象的方式将构造查询的过程做了封装1. 查询对象 Criteria criteria = session.createCriteria(Book.class); List result = criteria.list();2. 条件查询3. 条件查询绑定参数: Criteria criteria = session.createCriter
11、ia(Book.class); criteria.add(Restrictions.eq(name, java); List result = criteria.list(); 方法说 明Restrictions.eq()对应SQL的等于(=)Restrictions.allEq()使用Map,使用key/value进行多个相等的值的比对Restrictions.gt()对应SQL的大于 ()Restrictions.ge()对应SQL的大于等于 (=)Restrictions.lt()对应SQL的小于 ()Restrictions.le()对应SQL的小于等于 (=)Restrictions
12、.between()对应SQL的between子句Restrictions.like()对应SQL的like子句Restrictions.in()对应SQL的in子句Restrictions.and()对应SQL的andRestrictions.or()对应SQL的orRestrictions.not()对应SQL的not 4. 使用对象模板查询 Book book = new Book();book.setPrice(200);book.setName(“java”);Criteria criteria = session.createCriteria(Book.class);criteri
13、a.add(Example.create(book);List results = criteria.list();5. 查询排序 criteria.addOrder(Order.desc(price);6. 分页 criteria.setFirstResult(3);criteria.setMaxResults(2);4. 本地查询: Hibernate 对本地SQL查询提供了内置的支持, Session 的createSQLQuery()方法返回SQLQuery 对象, SQLQuery接口继承了Query接口,使用本地查询必须要绑定对象存储查询后的数据结果SQLQuery接口的addEn
14、tity() SQLQuery query = session.createSQLQuery(“select * from Book”); query.addEntity(com.book.bean.Book.Class);5. 命名查询:把数据库操作语句定义在程序的外部配置文件中, 然后在程序中使用这种方式更加的灵活 Query query = session.getNamedQuery(bookQuery );6. 查询方法list()方法和iterate()1.使用list()方法获取查询结果,每次发出一条查询语句,获取全部数据2.使用iterate()方法获取查询结果,先发出一条SQL
15、 语句用来查询满足条件数据的id,然后依次按这些id 查询记录,也就是要执行N+1 条SQL 语句(N 为符合条件的记录数)hibernate二级缓存: 使用缓存主要的目的是提高程序的效率,但是缓存数据存在安全隐患.hibernate默认的二级缓存由ehcache提供(provider),当然也可以使用其他的缓存框架和自定义缓存程序使用ehcache来实现hibernate的缓存 1.导入相关的包 2.配置ehcache缓存框架 3. 配置hibernate org.hibernate.cache.EhCacheProvider true 4.配置哪些查询使用缓存 2.struts2strut
16、s2概述 Struts2是一个mvc模式的实现,模块化程序设计,使项目更加便于管理和分工,简化了客户请求(参数类型的装换和自动封装(通过反射技术),文件的上传,数据的验证,信息的国际化显示)和响应操作,struts2通过dojo封装了(异步访问服务器数据的方法)ajax,通过封装ognl提供ValueStack(值栈)丰富了view层访问数据的方式struts2 执行的流程:struts的配置文件解析:7. web.xml核心控制器,对框架进行初始化,以及处理所有的请求 struts2 org.apache.struts2.dispatcher.ng.filter. StrutsPrepare
17、AndExecuteFilter(Struts 2.0版本的核心控制器为org.apache.struts2.dispatcher.FilterDispatcher) struts2 /* 2.action: 实现Action接口,继承ActionSupport类,普通的Java类 /page/manage.jsp 3.constant元素 配置常量,可以改变Struts 2框架的一些行为 4.pagckage:包的作用:简化维护工作,提高重用性包可以“继承”已定义的包,并可以添加自己包的配置name属性为必需的且唯一,用于指定包的名称extends属性指定要扩展的包namespace属性定义
18、该包中action的命名空间 ,为可选属性 5.全局元素: /page/error.jsp /page/login.jsp struts的核心对象和拦截器(早期MVC框架将一些通用操作写死在核心控制器中,致使框架灵活性不足、可扩展性降低, Struts 2将核心功能放到多个拦截器中实现,拦截器可自由选择和组合,增强了灵活性,有利于系统的解耦): (struts结构剖析图)8. 核心对象:1. ActionMapper (根据请求的URI查找是否存在对应Action调用)2. ActionMapping(保存调用Action的映射信息,如namespace、name等)3. ActionProx
19、y(代理创建对象xwork )4. ActionInvocation(表示Action的执行状态,保存拦截器、Action实例) 5. Interceptor(可以在请求处理之前或者之后执行的Struts 2组件)9. 系统拦截器1. Params拦截器 负责将请求参数设置为Action属性2. servletConfig拦截器 将源于Servlet API的各种对象注入到Action耦合的方式: ServletActionContext.getRequest()解耦的方式: ActionContext.getContext()实现接口:servletRequestAware3. fileUp
20、load拦截器对文件上传提供支持4. exception拦截器捕获异常,并且将异常映射到用户自定义的错误页面5. validation拦截器 调用验证框架进行数据验证 10. 自定义拦截器1. 必须实现Interceptor接口 或继承 AbstractInterceptor2. 实现Interceptor必须重写 init() destroy() 和String intercept(ActionInvocation ai) 方法3. 继承AbstractInterceptor只需要intercept(ActionInvocation ai)方法就可以11. 拦截器栈:多个拦截器组合成一个拦截器栈1. 系统默认的拦截器栈是: defaultStack12. 配置拦截器以及拦截器栈 /i
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1