马士兵spring视频笔记
- 格式:doc
- 大小:110.05 KB
- 文档页数:13
Spring学习笔记Java相关课程系列笔记之十五笔记内容说明Spring(梁建全老师主讲,占笔记内容100%);目录一、 Spring概述 (1)Spring框架的作用 (1)Spring框架的优点 (1)Spring框架的容器 (1)二、 Spring容器的基本应用 (2)如何将一个Bean组件交给Spring容器 (2)如何获取Spring容器对象和Bean对象 (2)如何控制对象创建的模式 (2)Bean对象创建的时机 (2)为Bean对象执行初始化和销毁方法 (2)案例:Spring框架的使用以及节节整合测试 (3)三、 Spring框架IoC特性 (5)IoC概念 (5)DI概念 (5)案例:测试IoC(set注入) (5)案例:测试IoC(构造注入) (6)案例:不用JDBC访问数据库,而是采用Hibernate访问 (6)四、 Spring中各种类型的数据注入 (7)Bean对象注入 (7)基本数据的注入 (7)集合的注入 (7)案例:各类数据注入 (7)五、 AOP概念 (10)什么是AOP (10)AOP和OOP的区别 (10)AOP相关术语 (10)案例:AOP的使用,模拟某些组件需要记录日志的功能 (11)通知类型 (11)切入点 (12)案例:环绕通知,修改案例使之动态显示所执行的操作 (12)案例:利用AOP实现异常处理,将异常信息写入文件 (13)六、 Log4j日志记录工具 (14)Log4j介绍 (14)Log4j的使用 (14)案例:修改案例,使用Log4j记录日志 (14)七、 Spring注解配置 (16)组件扫描功能 (16)组件扫描的使用方法 (16)注入注解标记使用方法 (17)AOP注解标记使用方法 (17)八、 Spring对数据访问技术的支持 (19)Spring提供了统一的异常处理类型 (19)Spring提供了编写DAO的支持类 (19)Spring提供了声明式事务管理方法 (19)Spring框架如何使用JDBC技术 (19)连接池优点 (22)Spring框架如何使用Hibernate技术 (22)Spring+Hibernate如何使用Session、Query等对象 (25)Spring框架和Struts2整合应用 (25)案例:采用SSH结构重构资费管理模块 (27)九、整合开发包 (31)Struts2创建对象的方式 (31)创建对象的方式 (31)的内部实现 (31)原理图1 (31)原理图2 (32)注意事项 (32)注入规则 (32)十、 Spring的事务管理 (33)声明式事务管理(基于配置方式实现事务控制) (33)编程式事务管理(基于Java编程实现事务控制),不推荐用! (34)Spring中常用的事务类型 (34)十一、 Spring的MVC (35)Spring MVC的体系结构 (35)Spring MVC的工作流程 (35)案例:简易登录(基于XML配置,不推荐使用) (35)案例:修改案例(基于注解配置,推荐使用) (37)十二、其他注意事项 (39)Spring的核心模块 (39)表单中action属性的相对、绝对路径问题 (39)用SSH重构NetCTOSS项目模块的步骤 (39)一、Spring概述我们学习Spring框架的最终目的是用它整合Struts2、Hibernate框架(SSH)。
第九章Java多线程机制进程与线程区别每个进程都有独立的代码和数据空间,进程间的切换会有很大开销。
线程可以看成轻量级的进程同一类线程共享代码和数据空间,每个线程有独立的运行栈个程序计数器,线程切换开销小。
多线程:在操作系统中能同时运行多个任务(程序)。
多线程:在同一个应用程序中有多个顺序流同时执行。
二、说明:Runnable接口ng.Runnable–Java多线程机制的一个重要部分,实际上它只有一个run()方法–Thread类实现了Runnable接口,相对于Thread类,它更适合于多个线程处理同一资源–实现Runnable接口的类的对象可以用来创建线程,这时start方法启动此线程就会在此线程上运行run()方法–在编写复杂程序时相关的类可能已经继承了某个基类,而Java不支持多继承,在这种情况下,便需要通过实现Runnable接口来生成多线程Thread类ng.Thread–在Java程序中创建多线程的方法之一是继承Thread类–封装了Java程序中一个线程对象需要拥有的属性和方法–从Thread类派生一个子类,并创建这个子类的对象,就可以产生一个新的线程。
这个子类应该重写Thread 类的run方法,在run方法中写入需要在新线程中执行的语句段。
这个子类的对象需要调用start方法来启动,新线程将自动进入run方法。
原线程将同时继续往下执行–Thread类直接继承了Object类,并实现了Runnable接口。
它位于ng包中,因而程序开头不用import 任何包就可直接使用例子:Thread\TestThread1.java 开始使用Eclipse2 一般程序先执行子线程,再执行主线程(方法调用)package Thread;public class TestThread1_1 {public static void main(String args[]) {Runner1 r = new Runner1();r.run();for(int i=0; i<100; i++) {System.out.println("Main Thread:------" + i);}}}class Runner1 implements Runnable {public void run() {for(int i=0; i<100; i++) {System.out.println("Runner1 :" + i);}}}3继承Thread类(继承,不常用)package Thread;public class TestThread1_2{public static void main(String arg[]){Runner1_2 r = new Runner1_2();r.start();for (int i = 0 ;i <= 100; i++){System.out.println("Main Thread:!!!!"+i);}}}class Runner1_2 extends Thread{public void run(){for (int i = 0 ;i <= 100; i++){System.out.println("Runner2:!!!!"+i);}}}2010-4-2 21:04:16 – 2010-4-14 16:28:59三、线程状态转换四、线程控制基本方法Sleep/Join/Yield方法Sleep/Join(需要捕获异常)例子1 Thread/TestInterrupt.Java (线程结束的方式)package Thread;import java.util.*;public class TestInterrupt {public static void main(String arg[]){MyThread thread = new MyThread();thread.start();try{Thread.sleep(10000);}//主线程睡眠…catch(InterruptedException e){}thread.interrupt();//中断线程。
马士兵hibernate学习笔记(文字整理版)课程容 (5)1 HelloWorld (5)2 Hibernate原理模拟 - 什么是O/R Mapping以及为什么要有O/R Mapping (5)3 常见的0/R框架(了解) (5)4 hibernate基础配置(重点) (5)5 ID生成策略(重点 AUTO) (5)6 Hibernate核心开发接口介绍(重点) (5)7 对象的三种状态(了解) (5)8 关系映射(重点) (5)9 Hibernate査询(HQL) (5)10 在Struts基础上继续完善BBS200 (5)11 性能优化(重点) (5)12 补充话题 (5)风格 (5)1 先脉络,后细节 (5)2 先操作,后原理 (5)3 重Annotation,轻xml配置文件 (5)资源 (5)1 . (5)2 hibernate zh_CN文档 (5)3 hibernate annotation references (5)环境准备 (5)1 下载hibernate-distribution-3.3.2.GA-dist (5)2 下载hibernate-annotations-3[1].4.0.GA (5)3 注意阅读hibernate compatibility matrix(hibernate download) (5)4 下载slf4jl.5.8 (6)Hibernate HelloWorld (6)1 建立新java 项目,名为hibernate_0100_HelloWorld (6)2 学习建User-library-hibernate,并加入相应的jar包 (6)3 引入mysql的JDBC驱动包 (6)4 在mysql中建立对应的数据库以及表 (6)5 建立hibernate 配置文件hibernate.cfg.xml (6)6 建立Student 类 (6)7 建立Student 映射文件 Student.hbm.xml (6)8 将映射文件加入到hibernate.cfg.xml中 (6)9 写测试类Main,在Main中对Student对象进行直接的存储测试 (6)10 FAQ: (6)11 Note: (6)12 建立能力 (7)建立 Annotation 版本的 HelloWorld (7)1 创建teacher 表,create table teacher (id int primary key, name varhcar(20), title varchar(lO)); (7)2 创建Teacher 类 (7)3 在hibernate lib 中加入annotation的jar包 (7)4 参考Annotaion文档建立对应的注解 (7)5 在hibernate.cfg.xml中建立映射<mapping class:.../〉 . (7)6 参考文裆进行测试(注意文裆中缺少configure()的小bug) (7)7 FAQ: 不给提示 (7)What is and Why 0/R Mapping (7)1 JDBC操作数据库很繁琐 (7)2 Sql语句编写并不是面向对象的 (7)3 可以在对象和关系表之间建立关联来简化编程 (7)4 0/R Mapping 简化编程 (7)5 0/R Mapping跨越数据库平台 (7)6 Hibernate_0200_OR_Mapping_Simulation (7)0/R Mapping Frameworks (7)1 hibernate (7)2 toplink (8)3 jdo (8)4 JPA (8)Hibernate基础配置 (8)1 对应项目:Hibernate_0300_BasicConfiguration (8)2 介绍MSQL的图形化客户端 (8)3 hibernate.cfg.xml: hbni2ddl.auto (8)4 搭建日志环境并配置显示DDL语句 (8)5 搭建jUnit环境 (8)6 hibernate.cfg.xml:show_sql (8)7 hibernate.cfg.xml:format_sql (8)8 表名和类名不同,对表名进行配置 (8)9 字段名和属性相同 (8)10 字段名和属性名不同 (8)11 不需要psersistence的字段(不用列) (8)12 映射日期与时间类型,指定时间精度 (8)13 映射枚举类型( 比较少用) (9)14 字段映射的位置(field或者get方法) (9)15 Lob (9)16 课外:CLOBBLOB类型的数据存取 (9)17 课外:Hibernate自定义数据类型 (9)18 hibernate 类型 (9)ID生成策略 (9)1 对应项目:hibernate_0400_ID (9)2 注意: (9)3 xml生成id (9)4 注解方式:GeneratedValue (9)5 FAQ; (10)6 联合主键 (10)核心幵发接口介绍 (12)1 hibernate_0500_CoreAPI (12)2 Hibernate API文档需要单独下载 (12)3 Configuration (12)4 SessoinFactor (12)5 Session (12)6 SchemaExport (自动建表) (13)7 Query 接口 (13)8 Note: (13)三种对象状态 (14)1 上一个 project (14)2 三种状态的区分关键在于 (14)3 三种状态: (14)4 对这三种状态需要关注的问题是在该状态下如果进行数据库的操作会发生什么结果,比如改变属性的 (14)关系映射(重要) (15)对象之间的关系 (15)1 这里的关系映射指的是对象之间的关系,并不是指数据库的关系,本章解决的问题是当对象之间处于 (15)2 简化问题: (15)3 —对一 (15)4 —对多 (15)5 组件映射 (15)一对一关联 (16)1 一对一单向外键关联 (16)2 一对一双向外键关联 (16)3 一对一单向主键关联(不重要) (17)4 一对一双向主键关联(不重要) (17)5 联合主键 (17)组件映射 (17)1 项目:hibernate_1100_component (17)2 对象关系:一个对象是另外一个对象的一部分 (17)3 数据库表:一表 (17)4 annotation: Embeddable Embbeded (17)5 xml: 使用<component,例如: (18)多对一与一对多 (18)1 多对一单向关联 (18)2 一对多单向关联 (19)3 一对多(多对一)双向关联 (19)多对多 (20)1 单向关联: (20)2 双向关联: (21)关联关系中的CRUD_Cascade_Fetch (21)1 hibernate_1700_one2many_many2one_bi_crud (21)2 设定cascade以设定在持久化时对于关联对象的操作(CUD,R归Fetch管) (21)3 cascade仅仅是帮我们省了编程的麻烦而已,不要把它的作用看的太大 (21)4 铁律:双向关系在程序中要设定双向关联 (22)5 铁律:双向mappedBy (22)6 fetch (22)7 Update时ManyToOne()中的cascade参数关系 (22)8 Delete时ManyToOne()中的cascade关系 (22)9 O/RMapping 编程模型 (23)10 要想删除或者更新先做load,除了精确知道ID之外 (23)11 如果想消除关联关系,先设定关系为null.再删除对应记录,如果不删记录,该记录变成垃圾数据 (23)12 练习:多对多的CRUD (23)关系映射总结 (24)1 什么样的关系,设计什么样的表,进行什么样的映射 (24)2 CRUD,按照自然的理解即可(动手测试) (24)集合映射(不太重要) (24)1 项目名称:hibernate_1800_Collections_Mapping (24)2 Set (24)3 List (与Set差不多多个OrderBy) (24)4 Map (24)继承映射(不太重要) (24)1 三种方式 (24)作业: (24)1 学生课程、分数的设计(重要) (24)2 设计: (25)3 树状结构的设计(至关重要) (25)Hibernate 查询(Query Language) (26)HQL vs EJBQL (26)1 NativeSQL >HQL.> EJBQL(JPQL 1.0) > QBC(Query By Criteria) > QBE(Query By Example)" 262 总结:QL应该和导航关系结合,共同为査询提供服务。
JAVA视频教程尚学堂---手把手教程Call:86-主讲教师马士兵SCM系统--------Java+VC跨平台(电信宽带运营平台-------Java+WEB(J2EE)跨平台远程教学平台----Java+WEB(tomcat)VOD视频监控-----VCERP视频会议---------VC新闻发布系统-----Java+XML(模板)网上商城课堂内容、教学方法、学习方法、预备知识、教学资源JAVA基础贯穿数据结构的知识(时间复杂度、链表)---非常重要语法基础【变量、循环、分支】最核心的东西—原理--学好OO【面向对象是最重要的】有新东西学是好事----个人价值Exception 从Java Web开始,框架巨多无比Array【数组】基础类、常用类I/O StreamCollection/Generic【集合类】Thread【线程】TCP/UDP【网络底层】GUI【Graphic User Interface 图形化用户接口窗口】Meta Data【以后讲,与紧密相关】Regular Expression【正规表达式】JDK初步Java Web编程【主攻一个框架---讲原理,略讲其他框架】针对Web程序J2EE【一套标准,包含Java Web 、JDPC、JSP、SP、JB/开源框架—就分步式来说,目前(2005)无东西与之抗衡】(比较,,)企业级应用J2ME移动设备移动增值SP运营商3G,2.5G,要火爆起来【网络先铺起来,应用才能上来;3G的网络还没有铺开、火爆起来,讲3G的应用超前了】巨无霸式的教学理论举例理论回顾练习讲解【三片面包加两片肉】注重结合工程实践【完全结合】注重传授自学能力【自学的东西相当重要,授人以鱼,不如授人以渔;慢慢学会掌握一定基础后才有,灌输、背,融成血液里的一部分,心中无剑,手中有剑—前提—心中有剑手中也有剑;时间短,强度大,该背就背】个人能力分三个层次知识学习前人的知识---学习能力的一个表现,被动地接受—接受能力{自己学习了知识后考虑如何去应用,去---学习解决问题的方法【类似问题遇到过】灵活运用学到的知识【碰到什么问题采用什么方法】解决问题的思路【最高层次】创造解决问题的方法【思路掌握了,遇到新问题,自己拓展一条思路,解决问题,不可能一口吃成一个胖子,沿着这三个层次一点一点往上升首先打造自己学习知识的能力,先把该掌握的知识掌握了,再谈如何应用---如何教---教大家写项目每一个知识教太深—给项目留得时间特别短---不合适;自学一些东西,慢慢去培养解决问题的思路,试着朝这个方向去培养,工作后慢慢遇到新问题使劲去思考了积累起来逐渐会有这个能力,灵活一点、再灵活一点!基础知识要背—灵活应用的东西不能背,无一定之规,在实践中慢慢锻炼—实践的越多—敲的代码越多(掌握思路后自主敲代码,哪怕敲不出来再看别人的思路—收获远远不一样,学习要自主一点,多思考思路才能开阔—无捷径,努力锻炼自己的就业能力。
马士兵vip课笔记
马士兵VIP课笔记
1. 课程概述
马士兵的VIP课程是一个全面的编程培训项目,涵盖了从基础到高级的各类编程知识和技能。
该课程强调实战编程,注重培养学员的实际项目开发能力。
通过学习此课程,学员可以掌握多种编程语言和技术,为未来的职业发展打下坚实的基础。
2. 课程内容
•基础概念:课程首先介绍了编程的基本概念,如变量、数据类型、控制结构等。
•面向对象编程:深入探讨了面向对象编程的概念,包括类、对象、继承和多态等。
•高级编程技术:涵盖了如泛型、反射、异步编程等高级编程技术。
•框架与库:介绍了多个主流的编程框架和库,如Spring、Django等。
•实战项目:课程以多个实战项目作为结尾,让学员在实际操作中巩固所学知识。
3. 课程特色
•实战导向:课程强调实战编程,注重培养学员解决实际问题的能力。
•内容全面:课程内容涵盖了从基础到高级的各类编程知识和技能,满足不同层次学员的需求。
•互动性强:课程中设置有多个互动环节,鼓励学员与老师和同学进
行交流和讨论。
•社区支持:提供了一个强大的社区支持,学员可以在社区中寻求帮助和分享经验。
4. 总结
马士兵的VIP课程是一个非常全面且实战导向的编程培训项目。
通过学习此课程,学员可以系统地掌握编程知识和技能,为未来的职业发展打下坚实的基础。
如果你是一位编程爱好者或者想要在编程领域有所建树,那么这门课程是你不容错过的选择。
尚学堂科技.马士兵.JAVA.系列视频教程第一部分:J2se学习视频内容包括:尚学堂科技_马士兵_JAVA视频教程_JDK5.0_下载-安装-配置尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第01章_JAVA简介_源代码_及重要说明尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_递归补充尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_基础语法尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第03章_面向对象尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第04章_异常处理尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_ 第05章_数组尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第06章_常用类尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第07章_容器尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第08章_IO尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第09章_线程尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第10章_网络尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第11章_GUI尚学堂科技_马士兵_JAVA 视频教程_J2SE_5.0_专题_日期处理尚学堂科技_马士兵_JAVA视频教程_J2SE_专题_正则表达式反射avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第二部分:j2se练习项目视频内容包括:尚学堂科技_马士兵_在线聊天系统雏形视频教程_java_eclipse尚学堂科技_马士兵_坦克大战视频教程_java_eclipse尚学堂科技_马士兵_坦克大战图片版尚学堂科技_马士兵_JAVA_坦克大战网络版视频教程尚学堂科技_马士兵_snake_贪吃蛇内部视频涉及到项目之1俄罗斯方块.rar: 07.4 MB涉及到项目之2坦克大战视频教程.rar: 019.4 MB涉及到项目之3坦克大战视频教程_java_eclipse.rar: 0395.4 MB涉及到项目之4坦克大战图片版.rar: 0101.2 MB涉及到项目之5坦克大战网络版视频教程.rar: 0248.8 MB涉及到项目之snake_贪吃蛇视频.rar: 095.2 MB涉及到项目之在线聊天系统雏形视频教程_java_eclipse.rar: 0233.9 MB◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第三部分数据库视频Oracle视频内容包括:01——53讲avi格式◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第四部分:JDBC和MySQL视频,内容包括:1_lomboz_eclipse_jdbc2_mysql_avi3_ 连接池的设计思路.avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第五部分:HTML & CSS & JAVASCRIPT 视频:Html & CSS 视频内容简介:01_html 简单介绍和meta标签.avi02_a_路径问题等等.avi03_学习方法_其他常用标签.avi04_1_note.avi04_ 表格和表单_1.avi05_表格和表单_2.avi06_Frame.avi07_Dreamweaver.avi08_CSS_1.avi09_CSS_2_ 选择方式.avi10_CSS_3.avi11_CSS_4.aviJavaScript 视频简介:01_JS 初步及调试.avi02_JS基本语法.avi03_函数_事件处理_1.avi04_事件处理_2.avi05_内置对象_DOM_BOM.avi06_趣味.avi07_实用.avi08_ 表单验证.avi09_表单验证_new.avi10_后台框架.avi11_后台框架_2.avi12_TREE.avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第六部分:Servlet & JSP视频——内容包括:1 tomcat的安装使用,配置2 servlet & jsp 视频1——30节jsp的练习项目内容包括:3 简单bbs项目3 2007美化BBS项目4 网上商城项目视频4 网上商城项目视频讲解视频◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第七部分:J2EE学习视频包括:DRP项目框架视频学习:Struts视频Hibernate视频Spring视频提高部分:uml统一建模语言视频SSH项目视频:oa办公自动化系统视频crm项目视频银行系统视频ejb3.0视频J2ME_3G简介资料面试材料:面试题大汇总+笔记+技巧。
Struts2 学习笔记---wjt276 [二○一○年一月五日完]目录01 Struts2-Action (5)一、Struts作用: (5)二、搭建Struts2的运行环境: (5)三、Namespace (6)四、<package>标签 (6)五、Action (6)六、路径问题的说明 (8)七、Action的动态调用方法 (8)八、Action通配符(wildcard)的配置 (9)九、Action的属性接收参数 (10)1、在Action添加成员属性接受参数 (10)2、域模型(Domain Model) (10)3、ModelDriven接收参数 (11)十、Action属性接收参数中文问题 (12)十一、简单数据验证 (12)十二、访问Web元素 (14)一、方法一:ActionContext方式 (15)二、方式二:Ioc(控制反转)—推荐使用 (15)三、方式三:获取原类型 (16)四、方式四:获取原类型-控制反转 (17)十三、Struts2配置文件模块化包含(include) (17)十四、默认的Action (18)十五、Action总结 (18)02 Struts2-Result (19)一、Result类型 (type) (19)二、全局结果集(Globle Result) (20)三、动态的结果集(dynamic result) (21)四、带参数的结果集 (21)五、Result总结 (22)六、项目经理: (22)03 OGNL表达式语言 (23)04 Struts2-Tags (28)Struts2标签目录 (28)一、property标签 (28)二、set标签 (29)三、bean标签 (29)四、<include>标签-少使用 (29)五、If elseif else (30)六、Iterator标签 (31)七、Theme (31)05设计约定(编码规定) (32)06 项目开发顺序 (32)07 声明式异常处理 (33)08 国际化 (35)一、国际化资源文件 (35)二、Java国际化 (35)Struts学习笔记第3页共39页三、Struts2国际化 (35)1、Action级别 (35)2、Package级别 (36)3、Application级别 (36)四、资源文件中的参数处理 (37)五、国际化-动态语言切换 (37)09 自定义拦截器 (38)10 类型转换 (38)Struts2总结 (39)目录Action⏹简单数据校验Result常用配置文件OGNL & ValueStackTags---------------------Project⏹类型转换、上传与下载、interceptor、防止重复提交 MVC思想深入剖析源码解读其他话题01 Struts2-Action一、Struts作用:将请求与结果分开二、搭建Struts2的运行环境:1、建立Web项目;2、建立Struts2的配置文件(struts.xml);将Struts2的空项目中的配置文件(struts.xml)复制到项目的src目录下。
中文名: 尚学堂科技.马士兵.JAVA视频教程(java培训内部视频)10年2月9日更新(更新Spring3.0)英文名: java video courses发行日期:地区: 大陆对白语言: 普通话简介:下载地址:/forum.php?mod=viewthread&tid=1832&extra=page%3D1====================================================== ============================================================ ===================2007年10月29日更新- 加入> - 视频代码的讲解请大家务必首先阅读《00_Shopping视频说明》,其中讲明了如何来阅读剩下的视频![声明:]这段视频是从尚学堂科技的教学课堂上实战录制,版权归尚学堂科技和马士兵老师共有,任何人不能用此教程牟利,违者必究。
====================================================== ======但是:在不收取其他人费用的前提下,您可以自由的分发此视频教程====================================================== ======[须知:]这些视频是以前公布的多个项目为基础的,在《00_Shopping视频说明》中有所说明,没有基础的同学应该首先阅之前的视频教程。
在此教程中,因为采用共享桌面,所以老师会经常说:“看我的桌面”,希望大家不要觉得惊奇或烦躁。
[其他文件:]在此目录下还有一个目录是[source],里面装有整个教学项目的源代码,建议大家在动手操作的过程中参考。
在此目录下还有一个[camplay.exe]文件,是观看视频所用的播放器,大家可以直接把视频文件(avi文件)直接拖放到上面进行观看。
尚学堂科技.马士兵.JAVA.系列视频教程第一部分:J2se学习视频内容包括:尚学堂科技_马士兵_JAVA视频教程_JDK5.0_下载-安装-配置尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第01章_JAVA简介_源代码_及重要说明尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_递归补充尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_基础语法尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第03章_面向对象尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第04章_异常处理尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_ 第05章_数组尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第06章_常用类尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第07章_容器尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第08章_IO尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第09章_线程尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第10章_网络尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第11章_GUI尚学堂科技_马士兵_JAVA 视频教程_J2SE_5.0_专题_日期处理尚学堂科技_马士兵_JAVA视频教程_J2SE_专题_正则表达式反射avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第二部分:j2se练习项目视频内容包括:尚学堂科技_马士兵_在线聊天系统雏形视频教程_java_eclipse尚学堂科技_马士兵_坦克大战视频教程_java_eclipse尚学堂科技_马士兵_坦克大战图片版尚学堂科技_马士兵_JAVA_坦克大战网络版视频教程尚学堂科技_马士兵_snake_贪吃蛇内部视频涉及到项目之1俄罗斯方块.rar: 07.4 MB涉及到项目之2坦克大战视频教程.rar: 019.4 MB涉及到项目之3坦克大战视频教程_java_eclipse.rar: 0395.4 MB涉及到项目之4坦克大战图片版.rar: 0101.2 MB涉及到项目之5坦克大战网络版视频教程.rar: 0248.8 MB涉及到项目之snake_贪吃蛇视频.rar: 095.2 MB涉及到项目之在线聊天系统雏形视频教程_java_eclipse.rar: 0233.9 MB◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第三部分数据库视频Oracle视频内容包括:01——53讲avi格式◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第四部分:JDBC和MySQL视频,内容包括:1_lomboz_eclipse_jdbc2_mysql_avi3_ 连接池的设计思路.avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第五部分:HTML & CSS & JAVASCRIPT 视频:Html & CSS 视频内容简介:01_html 简单介绍和meta标签.avi02_a_路径问题等等.avi03_学习方法_其他常用标签.avi04_1_note.avi04_ 表格和表单_1.avi05_表格和表单_2.avi06_Frame.avi07_Dreamweaver.avi08_CSS_1.avi09_CSS_2_ 选择方式.avi10_CSS_3.avi11_CSS_4.aviJavaScript 视频简介:01_JS 初步及调试.avi02_JS基本语法.avi03_函数_事件处理_1.avi04_事件处理_2.avi05_内置对象_DOM_BOM.avi06_趣味.avi07_实用.avi08_ 表单验证.avi09_表单验证_new.avi10_后台框架.avi11_后台框架_2.avi12_TREE.avi◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第六部分:Servlet & JSP视频——内容包括:1 tomcat的安装使用,配置2 servlet & jsp 视频1——30节jsp的练习项目内容包括:3 简单bbs项目3 2007美化BBS项目4 网上商城项目视频4 网上商城项目视频讲解视频◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂最好的Java只有尚学堂◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆第七部分:J2EE学习视频包括:DRP项目框架视频学习:Struts视频Hibernate视频Spring视频提高部分:uml统一建模语言视频SSH项目视频:oa办公自动化系统视频crm项目视频银行系统视频ejb3.0视频J2ME_3G简介资料面试材料:面试题大汇总+笔记+技巧。
课程内容1.面向接口(抽象)编程的概念与好处2.IOC/DI的概念与好处a)inversion of controlb)dependency injection3.AOP的概念与好处4.Spring简介5.Spring应用IOC/DI(重要)a)xmlb)annotation6.Spring应用AOP(重要)a)xmlb)annotation7.Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2整合(重要)a)opensessionInviewfilter(记住,解决什么问题,怎么解决)8.Spring JDBC面向接口编程(面向抽象编程)1.场景:用户添加2.Spring_0100_AbstractOrientedProgramminga)不是AOP:Aspect Oriented Programming3.好处:灵活什么是IOC(DI),有什么好处1.把自己new的东西改为由容器提供a)初始化具体值b)装配2.好处:灵活装配Spring简介1.项目名称:Spring_0200_IOC_Introduction2.环境搭建a)只用IOCi.spring.jar , jarkata-commons/commons-loggin.jar3.IOC容器a)实例化具体beanb)动态装配4.AOP支持a)安全检查b)管理transactionSpring IOC配置与应用1.FAQ:不给提示:a)window – preferences – myeclipse – xml – xml catalogb)User Specified Entries – addi.Location: D:\share\0900_Spring\soft\spring-framework-2.5.6\dist\resources\spring-beans-2.5.xsdii.URI:file:///D:/share/0900_Spring/soft/spring-framework-2.5.6/dist/resources/spring-beans-2.5.xsd iii.Key Type: Schema Locationiv.Key: /schema/beans/spring-beans-2.5.xsd2.注入类型a)Spring_0300_IOC_Injection_Typeb)setter(重要)c)构造方法(可以忘记)d)接口注入(可以忘记)3.id vs. namea)Spring_0400_IOC_Id_Nameb)name可以用特殊字符4.简单属性的注入a)Spring_0500_IOC_SimplePropertyb)<property name=… value=….>5.<bean 中的scope属性a)Spring_0600_IOC_Bean_Scopeb)singleton 单例c)proptotype 每次创建新的对象6.集合注入a)Spring_0700_IOC_Collectionsb)很少用,不重要!参考程序7.自动装配a)Spring_0800_IOC_AutoWireb)byNamec)byTyped)如果所有的bean都用同一种,可以使用beans的属性:default-autowire8.生命周期a)Spring_0900_IOC_Life_Cycleb)lazy-init (不重要)c)init-method destroy-methd 不要和prototype一起用(了解)9.Annotation第一步:a)修改xml文件,参考文档<context:annotation-config />10.@Autowireda)默认按类型by typeb)如果想用byName,使用@Qulifierc)写在private field(第三种注入形式)(不建议,破坏封装)d)如果写在set上,@qualifier需要写在参数上11.@Resource(重要)a)加入:j2ee/common-annotations.jarb)默认按名称,名称找不到,按类型c)可以指定特定名称d)推荐使用e)不足:如果没有源码,就无法运用annotation,只能使用xml12.@Component @Service @Controller @Repositorya)初始化的名字默认为类名首字母小写b)可以指定初始化bean的名字13.@Scope14.@PostConstruct = init-method; @PreDestroy = destroy-method; 什么是AOP1.面向切面编程Aspect-Oriented-Programminga)是对面向对象的思维方式的有力补充2.Spring_1400_AOP_Introduction3.好处:可以动态的添加和删除在切面上的逻辑而不影响原来的执行代码a)Filterb)Struts2的interceptor4.概念:a)JoinPoint 释意:切面与原方法交接点即切入点b)PointCut 释意:切入点集合c)Aspect(切面)释意:可理解为代理类前说明d)Advice 释意:可理解为代理方法前说明例如@Beforee)Target 释意:被代理对象被织入对象f)Weave 释意:织入Spring AOP配置与应用1.两种方式:a)使用Annotationb)使用xml2.Annotationa)加上对应的xsd文件spring-aop.xsdb)beans.xml <aop:aspectj-autoproxy />c)此时就可以解析对应的Annotation了d)建立我们的拦截类e)用@Aspect注解这个类f)建立处理方法g)用@Before来注解方法h)写明白切入点(execution …….)i)让spring对我们的拦截器类进行管理@Component3.常见的Annotation:a)@Pointcut 切入点声明以供其他方法使用, 例子如下:@Aspect@Componentpublic class LogInterceptor {@Pointcut("execution(public * com.bjsxt.dao..*.*(..))")public void myMethod(){}@Around("myMethod()")public void before(ProceedingJoinPoint pjp) throws Throwable{System.out.println("method before");pjp.proceed();}@AfterReturning("myMethod()")public void afterReturning() throws Throwable{System.out.println("method afterReturning");}@After("myMethod()")public void afterFinily() throws Throwable{System.out.println("method end");}}b)@Before 发放执行之前织入c)@AfterReturning 方法正常执行完返回之后织入(无异常)d)@AfterThrowing 方法抛出异常后织入e)@After 类似异常的finallyf)@Around 环绕类似filter , 如需继续往下执行则需要像filter中执行FilterChain.doFilter(..)对象一样执行ProceedingJoinPoint.proceed()方可,例子如下:@Around("execution(* com.bjsxt.dao..*.*(..))")public void before(ProceedingJoinPoint pjp) throws Throwable{System.out.println("method start");pjp.proceed();//类似FilterChain.doFilter(..)告诉jvm继续向下执行}4.织入点语法a)void !voidb)参考文档(* ..)如果execution(* com.bjsxt.dao..*.*(..))中声明的方法不是接口实现则无法使用AOP实现动态代理,此时可引入包” cglib-nodep-2.1_3.jar”后有spring自动将普通类在jvm中编译为接口实现类,从而打到可正常使用AOP的目的.5.xml配置AOPa)把interceptor对象初始化b)<aop:configi.<aop:aspect …..1.<aop:pointcut2.<aop:before例子:<bean id="logInterceptor" class="com.bjsxt.aop.LogInterceptor"></bean><aop:config><!-- 配置一个切面 --><aop:aspect id="point" ref="logInterceptor"><!-- 配置切入点,指定切入点表达式 --><!-- 此句也可放到 aop:aspect标签外依然有效--><aop:pointcutexpression="execution(public * com.bjsxt.service..*.*(..))"id="myMethod" /><!-- 应用前置通知 --><aop:before method="before" pointcut-ref="myMethod" /><!-- 应用环绕通知需指定向下进行 --><aop:around method="around" pointcut-ref="myMethod" /><!-- 应用后通知 --><aop:after-returning method="afterReturning"pointcut-ref="myMethod" /><!-- 应用抛出异常后通知 --><aop:after-throwing method="afterThrowing"pointcut-ref="myMethod" /><!-- 应用最终通知 --><aop:after method="afterFinily"pointcut="execution(public * om.bjsxt.service..*.*(..))" /></aop:aspect></aop:config>Spring整合Hibernate1.Spring 指定datasourcea)参考文档,找dbcp.BasicDataSourcei.c3p0ii.dbcpiii.proxoolb)在DAO或者Service中注入dataSourcec)在Spring中可以使用PropertyPlaceHolderConfigure来读取Properties文件的内容2.Spring整合Hibernatea)<bean .. AnnotationSessionFactoryBean>i.<property dataSourceii.<annotatedClassesb)引入hibernate 系列jar包c)User上加Annotationd)UserDAO或者UserServie 注入SessionFactorye)jar包问题一个一个解决3.声明式的事务管理a)事务加在DAO层还是Service层?b)annotationi.加入annotation.xsdii.加入txManager beaniii.<tx:annotation-driven例如: <bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><tx:annotation-driven transaction-manager="transactionManager"/> iv.在需要事务的方法上加:@Transactionalv.需要注意,Hibernate获得session时要使用SessionFactory.getCurrentSession 不能使用OpenSessionc)@Transactional详解i.什么时候rollback1.运行期异常,非运行期异常不会触发rollback2.必须uncheck (没有catch)3.不管什么异常,只要你catch了,spring就会放弃管理4.事务传播特性:propagation_required例如: @Transactional(propagation=Propagation.REQUIRED)等同于(@Transactional)作用,一个方法声明了@Transactional事务后,其内再调用的方法不需要再声明@Transactional.5.read_only例如: @Transactional(propagation=Propagation.REQUIRED,readOnly=true)当方法声明readOnly=true时,该方法及其调用的方法内都不执行insert update等d)xml(推荐,可以同时配置好多方法)i.<bean txmanagerii.<aop:config1.<aop:pointcut2.<aop:advisor pointcut-ref advice-refiii.<tx:advice: id transaction-manager =iv.<property name="packagesToScan"> 可定义扫描目标包下所有实体类例如: <bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.OracleDialect</prop> <prop key="hibernate.show_sql">true</prop></props></property><!--<property name="annotatedClasses"><list><value>com.bjsxt.model.TestUser</value><value>com.bjsxt.model.Log</value></list></property>--><!-- 将参数名称设为packagesToScan 可定义扫描目标包下所有实体类--><property name="packagesToScan"><list><value>com.bjsxt.model</value></list></property></bean><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory"><ref bean="sessionFactory" /></property></bean><aop:config><aop:pointcutexpression="execution(public * com.bjsxt.service..*.*(..))"id="myServiceMethod" /><aop:advisor pointcut-ref="myServiceMethod" advice-ref="txAdvice"/> </aop:config><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="save*" propagation="REQUIRED" /><tx:method name="add*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="del*" propagation="REQUIRED" /><tx:method name="cancel*" propagation="REQUIRED" /><tx:method name="*" read-only="true" /></tx:attributes></tx:advice>e)HibernateTemplate、HibernateCallback、HibernateDaoSupport(不重要)介绍i.设计模式:Template Method(模板方法)ii.Callback:回调/钩子函数iii.第一种:(建议)1.在spring中初始化HibernateTemplate,注入sessionFactory<bean id="hibernateTemplate"class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory" ref="sessionFactory" /></bean>2.DAO里注入HibernateTemplateprivate HibernateTemplate hibernateTemplate;@Resourcepublic void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate;}3.save写getHibernateTemplate.save();public void save(TestUser testUser) {hibernateTemplate.save(testUser);}iv.第二种:1.从HibernateDaoSupport继承(此方法不好用可忽略)2.必须写在xml文件中,无法使用Annotation,因为set方法在父类中,而且是final的例如:首先,新建SuperDAOImpl类(使用Annotation注入--@Component):@Componentpublic class SuperDAOImpl {private HibernateTemplate hibernateTemplate; //此处定义由spring注入管理public HibernateTemplate getHibernateTemplate() {return hibernateTemplate;}@Resourcepublic void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate;}}此时,xml中必须要有:<bean id="hibernateTemplate"class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory" ref="sessionFactory" /></bean>或者,SuperDAOImpl类写成下面代码:@Componentpublic class SuperDAOImpl extends HibernateDaoSupport {@Resource(name="sessionFactory")public void setSuperHibernateTemplate(SessionFactory sessionFactory) { super.setSessionFactory(sessionFactory);}}对应的xml中则可省略<bean id="hibernateTemplate"………部分只要包含<bean id="sessionFactory"……..部分即可最后,其他类继承SuperDaoImpl类后便可直接使用HibernateTemplate@Component("u")public class UserDAOImpl extends SuperDAOImpl implements UserDAO {public void save(TestUser testUser) {this.getHibernateTemplate().save(testUser);}}f)spring整合hibernate的时候使用packagesToScan属性,可以让spring自动扫描对应包下面的实体类Struts2.1.6 + Spring2.5.6 + Hibernate3.3.2a)将这些所有的jar包保存到一个位置,使用的时候直接copy3.步骤a)加入jar包b)首先整合Spring + Hibernatei.建立对应的package1.dao / dao.impl / model / service / service.impl/ testii.建立对应的接口与类框架1.S2SH_01iii.建立spring的配置文件(建议自己保留一份经常使用的配置文件,以后用到的时候直接copy改)iv.建立数据库v.加入Hibernate注解1.在实体类上加相应注解@Entity @Id等在字段属性的get方法上加--@Column(name = "表字段名")2.在beans配置文件配置对应的实体类,使之受管vi.写dao service的实现vii.加入Spring注解1.在对应Service及DAO实现中加入@Component,让spring对其初始化2.在Service上加入@Transactional或者使用xml方式(此处建议后者,因为更简单)3.在DAO中注入sessionFactory4.在Service中注入DAO5.写DAO与Service的实现viii.写测试c)整合Struts2i.结合点:Struts2的Action由Spring产生ii.步骤:1.修改web.xml加入struts的filter如下:<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping>2.再加入spring的listener,这样的话,webapp一旦启动,spring容器就初始化了如下:<!-- 指定由spring初始化加载xml配置文件spring与struts结合必备--><listener><listener-class>org.springframework.web.context.ContextLoaderListener<!-- 默认寻找xml路径:WEB-INF/applicationContext.xml --> </listener-class></listener><!--整个应用的参数服务启动时读取.可指定spring初始化文件路径位置--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:spring/*applicationContext.xml</param-value></context-param>3.规划struts的action和jsp展现4.加入struts.xmla)修改配置,由spring替代struts产生Action对象5.修改action配置a)把类名改为bean对象的名称,这个时候就可以使用首字母小写了b)@Scope(―prototype‖)不要忘记iii.struts的读常量:1.struts-default.xml2.struts-plugin.xml3.struts.xml4.struts.properties5.web.xmliv.中文问题:1.Struts2.1.8已经修正,只需要改i18n.encoding = gbk2.使用spring的characterencoding例:<!-- 过滤器相关配置======== 字符编码过滤======== --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter>3.需要严格注意filter的顺序4.需要加到Struts2的filter前面zyInitializationException1.OpenSessionInViewFilter2.需要严格顺序问题3.需要加到struts2的filter前面附:1.@Autowired 与@Resource 都可以用来装配bean. 都可以写在属性定义上,或写在set方法上@Autowired (srping提供的) 默认按类型装配@Resource ( j2ee提供的) 默认按名称装配,当找不到(不写name属性)名称匹配的bean再按类型装配. 可以通过@Resource(name="beanName") 指定被注入的bean的名称, 要是指定了name属性, 就用字段名去做name属性值,一般不用写name属性.@Resource(name="beanName")指定了name属性,按名称注入但没找到bean, 就不会再按类型装配了.@Autowired 与@Resource可作用在属性定义上, 就不用写set方法了(此方法不提倡);2.a.Action类前加@Component,则Action可由spring来管理,例子如下:Action中写:@Component("u") //spring管理注解@Scope("prototype") //多态public class UserAction extends ActionSupport implements ModelDriven{//内部属性需要有get/set方法且需要set方法前加@Resource或@Autowired }Struts2配置文件中写<action name="u" class="u">Jsp中<form method="post" action="u.do" >b.Action中也可不加@Component,Action由struts2-spring-plugin管理。