当前位置:文档之家› spring、spring-mvc学习总结

spring、spring-mvc学习总结

spring、spring-mvc学习总结
spring、spring-mvc学习总结

Spring资料总结

目录--------------------

1.什么是spring

2.Spring有什么特点?

3.Spring的有哪些模块?各个模块的作用?

4.控制反转(IOC)和依赖注入(DI)的区别?

5.BeanFacotry对象的作用(IOC容器的作用)?

6.使用FileSystemXmlApplicationContext,ClassPathXmlApplicationContext加载ApplicationContext.xml文件代码?

7.BeanFactory跟ApplicationContext区别?

8.依赖注入的四种方式(set,构造器,接口,注解)?

9.Bean组件的作用域范围(singleton,prototype,request,session,globalsession)?

10.Bean组件装配方式(byName,bType,constructor,default)?

11.Bean组件的生命周期?

12.在Web环境中怎么加载applicationContext.xml文件(Servlet监听器)?在web如何获取应用上下文WebApplicationContext?

13.Spring对DAO模块支持?有什么优点?

14.Spring的DAO模板增删查改数据代码?

15.Spring对ORM模块的支持?有什么优点?

16.Spring整合Hibernate模块的增删查改数据代码?

17.Spring整合Ibatis模块的增删查改数据代码?

18.Spring整合Mybatis模块的增删查改数据代码?

19.Spring的全局事务(JTA)和局部事务(JDBC)的区别?

20.Spring事务实现的方式有哪些,优缺点?

21.编程式事务的特点?声明式事务的特点?

22.事务7大传播属性?指定事务策略的格式代码?

23.在Spring中事务管理器的实现方式有哪些?

24.在Spring中事务管理器的实现方式有哪些?

25.AOP的概念(切面,连接点,通知[顾问],切入点,[引入,关注点],目标对象,代理对象,织入目标)

26.AOP在Spring中的作用?

27.AOP中的通知有哪些?各有什么特点(前置型,后置型,环绕型,最终型,异常);

28.AOP的特点和优缺点?

29.AOP三种代理方式(动态代理,CGLIB代理,代理工厂bean)

30.Execution配置的通用切入点的示例?

31.在项目组,你们是如何使用AOP的?

32.说说你对IOC的理解

33.如何在Spring中使用JNDI的数据源?

34.Spring如何整合Struts1.x?

35.Spring如何整合Struts2.x?

36.Spring如何整合Hibernate?

37.Spring如何整合IBatis?

38.Spring如何整合MyBatis?

39.Spring的JDBC跟传统的JDBC的区别?

41.Spring有哪些核心类?

42.SpringMVC的工作机制?

43.Hibernate中update和saveOrUpdate的区别?

44.SpringMVC有哪些核心类,作用?

45.SpringMVC数据如何校验,错误信息在页面如何呈现?

46.SpringMVC注解标签有哪些?

47.SpringMVC的特点(优点)?

48.SpringMVC有哪些控制器组件?

49.SpringMVC如何处理上传文件?如何使用ajax异步请求?

50.Spring在视图中的标签有哪些?

51.SpringAOP的注解标签有哪些?

52.Spring如何配置连接池?

53.连接池DBCP,C3P0,PROXOOL三个的区别

---------------------------

1.什么是Spring?

答:

Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP aspect oriene program)的容器框架.

它的主要目的是简化企业开发;

Spring的设计思想是,单例模式和工厂模式;

2.Spring有什么特点?

答:

轻量级,低侵入的设计

Spring的DI机制降低了业务对象替换的复杂性

Spring不依赖于web容器,独立于各种应用服务器,Write Once,Run Anywhere(一次编译到处运行)

高度开放性:Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部,它的架构仍然是内在稳定的

3.Spring的有哪些模块?各个模块的作用?

答:

Spring Core:

Spring的基石,提供了Spring的最主要的核心机制:控制反转和依赖注入

Spring Context:

提供了Spring的上下文信息,如:国际化,验证等

Spring Web支持:

简化了处理多部分请求

Spring MVC框架支持:

一个全功能的构建Web应用程序的MVC实现,MVC容纳了大量视图技术,其中包括JSP、Velocity等。

Spring Dao支持:

Spring的Dao支持大大的简化了JDBC操作数据库所带来的繁琐

Spring ORM支持:

Spring框架集成了若干ORM框架,从而提供了ORM的对象关系工具,

其中包括JDO、Hibernate、iBatis(mybatis)和TopLink。

所有这些都遵从Spring的通用事务和DAO异常层结构。

Spring AOP:面向切面编程,提供了事务,日志,权限,安全等处理机制

更详细说法:

Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,如图 1 所示。

组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:

核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。

Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。

Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。

Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 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 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同J2EE 环境(Web 或 EJB)、独立应用程序、测试环境之间重用。

4.控制反转(IOC)和依赖注入(DI)的区别?

答:

1)控制反转(IoC/Inverse Of Control):调用者不再创建被调用者的实例,由spring框架实现(容器创建)

所以称为控制反转。

2)依赖注入(DI/Dependence injection) :容器创建好实例后再注入调用者称为依赖注入。

依赖注入的优点:

代码将更加清晰,Spring管理bean的灵巧性, bean与bean之间的依赖关系放在配置文件里组织,

不再担心对象之间的依赖关系之后,实现更高层次的松耦合将易如反掌

5.BeanFacotry对象的作用(IOC容器的作用)?

答:

在Spring中,BeanFactory是IOC容器的核心接口。它的职责包括:实例化、定位、

配置应用程序中的对象及建立这些对象间的依赖。

6.使用FileSystemXmlApplicationContext,ClassPathXmlApplicationContext加载ApplicationContext.xml文件代码?

答:

通过ApplicationContext加载(ClassPathXmlApplicationContext或者FileSystemXmlApplicationContext)

ApplicationContext appContext = new ClassPathXmlApplicationContext(new String[] {"./beans.xml"});

BeanFactory beanFactory = (BeanFactory) appContext;

ClassPathResource res = new ClassPathResource("./beans.xml");

XmlBeanFactory beanFactory = new XmlBeanFactory(res);

或者ApplicationContext ctx=new FileSystemXmlApplicationContext("src/bean.xml");

7.BeanFactory跟ApplicationContext区别?

答:

ApplicationContext是BeanFactory的子类,ApplicationContext在BeanFactory的基础上增加了国际化,事务等功能

8.依赖注入的四种方式(set,构造器,接口,注解)?

答:

构造器注入:

基于构造器的DI通过调用带参数的构造器来实现,每个参数代表着一个依赖。构造器参数解析根据参数类型进行匹配,如果bean的构造器参数类型定义非常明确,那么在bean被实例化的时候,bean定义中构造器参数的定义顺序就是这些参数的顺序,依次进行匹配,

Setter注入:

通过调用无参构造器或无参static工厂方法实例化bean之后,调用该bean 的setter方法。

0接口注入:

我们有一个ClassA类,它的身体内部有一个InterfaceB的属性接口。当ClassA类实例化后,希望查找InterfaceB接口的依赖关系,并初始化InterfaceB目标对象,注入接口实现类的实例。(我们常常借助接口来将调用者与实现者分离,降低类之间的耦合性,提高代码的可读性与操作性。)

9.Bean组件的作用域范围(singleton,prototype,request,session,globalsession)?

答:

Singleton:

单例,一个bean对应一个实例

Prototype:

圆形,一个bean对应多个实例

request:

在一次HTTP请求中,一个bean定义对应一个实例

session:

在一次HTTP Session请求中,一个bean定义对应一个实例

global session:

在一个全局的HTTP Session中,一个bean定义对应一个实例

10.Bean组件装配方式(byName,bType,constructor,default)?

答:y

byName(用于set注入)

根据属性名自动装配。此选项将检查容器并根据名字查找与属性完全一致的bean,并将其与属性自动装配

byType

如果容器中存在一个与指定属性类型相同的bean,那么将与该属性自动装配。如果存在多个该类型的bean,

那么将会抛出异常,并指出不能使用byType方式进行自动装配。若没有找到相匹配的bean,则什么事都不发生,

属性也不会被设置。如果你不希望这样,那么可以通过设置dependency-check="objects"让Spring抛出异常。

constructor

与byType的方式类似,不同之处在于它应用于构造器参数。如果在容器中没有找到与构造器参数类型一致的bean,

那么将会抛出异常。

11.Bean组件的生命周期?

答:

1 bean的定义创建实例在配置文件定义bean标签

xml 或者注解方式

2 bean的初始化

指定初始化方法的两种方式:在配置文件中定义init-

moehtod属性来完成或者实现initializingBean接口,重写afterPropertiesSet方法

3 bean的调用

4 bean的销毁

指定销毁方法的两种方式

在配置文件中定义destroy-method属性来完成或者实现disposbleBean接口,重写destroy方法。

12.在Web环境中怎么加载applicationContext.xml文件(Servlet监听器)?在web如何获取应用上下文

WebApplicationContext?

答:

在web.xml中:

contextConfigLocation

classpath:applicationContext.xml

在web.xml中

org.springframework.web.context.ContextLoaderListener

获取上下文:

在Web.xml中配置上下文载入器

指定上下文载入器的配置文件

获得应用上下文

调用:WebApplicationContextUtils.getWebApplicationContext(servletContext);

13.Spring对DAO模块支持?有什么优点?

答:

提供了模版类,比如jdbcTemplate,HibernateTemplate

减少开发代码量提高工作效率,降低系统资源消耗提高系统性能,业务逻辑层与持久层(数据层)的分离,

使数据与操作更为清晰。数据访问独立到了一层,修改具体实现类,不影响系统的架构运行

14.Spring的DAO模板增删查改数据代码?

答:

public void add(Person person) throws Exception {

String sql = "insert into person(name,age) value(?,?)";

Object obj[] =

new Object[] { person.getName(),person.getAge() };

template.update(sql, obj);

}

public void delete(int id) throws Exception {

String sql = "delete from person where id=?";

Object obj[] = new Object[] { id };

template.update(sql, obj);

}

public void update(Person person) throws Exception {

String sql = "update person set name=?,age=? where id=?";

Object obj[]=new Object[] { person.getName(), person.getAge(),

person.getId()};

template.update(sql, obj);

}

public List findAll() throws Exception {

String sql = "select * from person";

return template.query(sql, new PersonRowMapper());

}

public Person findById(int id)throws Exception{

String sql = "select * from person where id=?";

Object obj[]=new Object[]{id};

return(Person)template.query(sql,obj,

new BeanPropertyRowMapper().newInstance(Person.class));

}

class PersonRowMapper implements RowMapper{

@Override

public Object mapRow(ResultSet rs, int i) throws SQLException {

Person person = new Person();

person.setId(rs.getInt("id"));

person.setAge(rs.getInt("age"));

person.setName(rs.getString("name"));

return person;

}

}

15.Spring对ORM模块的支持?有什么优点?

答:

提供了一些集成的框架,比如Hibernate,iBaties这些框架,还提供了一些dao的实现类,比如Hibernatetemplate等等

①便于测试

②通用数据访问异常封装。

③通用的资源管理。

④完整的事务管理

16.Spring整合Hibernate模块的增删查改数据代码?

答:

public Student saveStudent(Student student)

throws DataAccessException,Exception {

getHibernateTemplate().saveOrUpdate(student);

return student;

}

public void deleteStudent(Student student)throws DataAccessException, Exception{ getHibernateTemplate().delete(student);

}

public void updateStudent(Student student)throws DataAccessException,Exception { getHibernateTemplate().update(student);

}

public List findStudent(Long sid)throws DataAccessException,Exception{ List stuList = getHibernateTemplate().find(

"from Student where sid = ?", 100L);

return stuList;

}

Public List findAll(){

List stuList = getHibernateTemplate().find( "from Student");

return stuList;

}

17.Spring整合Ibatis模块的增删查改数据代码?

答:

Ibatis的配置文件:

insert into person(name,age)value(#name#,#age#)

delete from person where id=#id#

update person set name=#name#,age=#age# where id=#id#

SqlMapClientTemplate template;

public void setSqlMapClient(SqlMapClient sqlMapClient) {

template =new SqlMapClientTemplate(sqlMapClient);

}

public void add(Person person) throws Exception {

template.insert("insert","person");

}

public void delete(int id) throws Exception {

template.delete("delete", id);

}

public void update(Person person) throws Exception {

template.update("update","person");

}

public List findAll() throws Exception {

return template.queryForList("findAll");

}

public Person findByid(int id) throws Exception {

return (Person)template.queryForList("findByid");

}

public List findByname() throws Exception {

Map map=new HashMap();

map.put("name", "b%");

map.put("age", 20);

return(List)

template.queryForObject("findByname",map);

}

18.Spring整合Mybatis模块的增删查改数据代码?

答:

insert into 表名(表字段) values(#{传入的字段名})

flushCache="true" statementType="PREPARED" timeout="20000">

Update smp_bed set dorm_no=#{dormNo}, bed_no=#{bedNo}, status=#{status}, bed_desc=#{bedDesc}

where sid = #{sid}

statementType="PREPARED" timeout="20000">

delete from 表名where id = ?

19.Spring的全局事务(JTA)和局部事务(JDBC)的区别?

答:

1 局部事务局限于一个数据库连接内;

2 全局事务可以跨越多个数据库连接;

区别:

全局事务也叫本地事务,他由应用服务器管理;局部事务是和资源相关的,比如一个和JDBC连接关联的事务。

局部事务控制的局限性在一个数据库连接内,但是其使用简单。

全局事务的功能强大,事务可以跨越多个数据库或多个DAO,使用也比较复杂。

20.Spring事务实现的方式有哪些,优缺点?

答:

实现事物的方式:

在XML中进行事物配置.TrancationManager

代理实现事物.

使用拦截器

使用tx标签配置的拦截器(这个也是声明式事务)

使用注解,需要事务的类加上@Transactional注解

21.编程式事务的特点?声明式事务的特点?

答:

从实现的角度划分

Spring把事务分为两种一种是:编程式事务,一种是声明式事务。

1.编程式事务是侵入式事务比较灵活,编程式事务则要操作逻辑代码。存在重复的代码比较多,相对繁琐,

而且不利于系统的扩展;

2. 声明式事务是非侵入式的事务。声明式事务只需在配置文件中配置,而不需要去操作逻辑代码。

当你只有很少的事务操作时,编程式事务管理通常比较合适。

22.事务7大传播属性?指定事务策略的格式代码?

答:

1.PROPAGATION_MANDATORY:要求调用该方法的线程必须处于事务环境中,否则抛出异常。

2.PROPAGATION_NESTED:如果执行该方法的线程已处于事务环境下,依然启动如果执行该方法的线程并未处于事务中,也启动新的事务,然后执行该方法,此时与PROPAGATION_REQUIRED相同。

3.PROPAGATION_NEVER:不允许调用该方法的线程处于事务环境下,如果调用该方法的线程处于事0务环境下,则抛出异常。

4.PEOPAGATION_NOT_SUPPORTED:如果调用该方法的线程处于在事务中,则先暂停当

前事务,然后执行该方法。

5.PEOPAGATION_REQUIRED:要求在事务环境中执行该方法,如果当前执行线程已处于事务中,则直接调用,如果当前执行线程不已处于事务中,则启动新的事务后执行该方法。

6.PEOPAGATION_REQUIRES_NEW:该方法要求有一个在新的事务环境中执行,如果当前执行线程已处于事务中,先暂停当前事务,启动新的事务后执行该方法;如果当前执行线程不已处于事务中,则启动新的事务后执行该方法。

7.PEOPAGATION_SUPPORTS:如果当前执行线程已处于事务中,则使用当前事务,否则不使用事务。

传播行为,隔离层级/只读,+异常/-异常

传播行为,隔离层级/只读,+异常/-异常

23.在Spring中事务管理器的实现方式有哪些?

答:

使用tx标签引入事务管理器。

使用bean标签配置事务管理器:给DataSourceTransactionManager注入dataSource。

24.在Spring中事务管理器的实现方式有哪些?

答:

Set注入:

优点:setter DI在以后的某个时候还可将实例重新配置(或重新注入)(JMX MBean就是一个很好的例子)。

缺点:对于那些没有源代码的第三方类,或者没有提供setter方法的遗留代码,我们不能使用set 注入

构造器注入:

优点:一次性将所有依赖注入的做法意味着,在未完全初始化的状态下,此对象不会返回给客户代码(或被调用),

此外对象也不需要再次被重新配置(或重新注入)。

缺点:大量的构造器参数可能使程序变得笨拙,特别是当某些属性是可选的时候。

25.AOP的概念(切面,连接点,通知[顾问],切入点,[引入,关注点],目标对象,代理对象,织入目标) 答:

切面(Aspect):一个关注点的模块化,这个关注点可能会横切多个对象。

连接点(Joinpoint):在程序执行过程中某个特定的点,比如某方法调用的时候或者处理异常的时候。

(表示一个方法的执行)

通知(Advice):在切面的某个特定的连接点上执行的动作。(

“around”环绕通知、“before”前置通知、“after”后置通知、异常通知、最终通知);

切入点(Pointcut):匹配连接点的断言。通知和一个切入点表达式关联,并在满足这个切入点的连接点上运行

(连接点的集合);

目标对象(Target Object):被一个或者多个切面所通知的对象。

AOP代理(AOP Proxy):AOP框架创建的对象,用来实现切面契约。

(AOP代理可以是JDK动态代理或者CGLIB代理。)

织入(Weaving):把切面连接到其它的应用程序类型或者对象上,并创建一个被通知的对象。

26.AOP在Spring中的作用?

答:

AOP在Spring Framework中的作用:

提供声明式企业服务,特别是为了替代EJB声明式服务。最重要的服务是声明性事务管理。

允许用户实现自定义切面,用AOP来完善OOP的使用。

27.AOP中的通知有哪些?各有什么特点(前置型,后置型,环绕型,最终型,异常);

答:

前置通知(Before advice):在某连接点之前执行的通知,但这个通知不能阻止连接点之前的执行流程

(除非它抛出一个异常)

后置通知(After returning advice):在某连接点正常完成后执行的通知;

例如:一个方法没有抛出任何异常,正常返回。

异常通知(After throwing advice):在方法抛出异常退出时执行的通知。

最终通知(After (finally) advice):当某连接点退出的时候执行的通知(不论是正常返回还是异常退出)。

环绕通知(Around Advice):包围一个连接点的通知,如方法调用。这是最强大的一种通知类型。

环绕通知可以在方法调用前后完成自定义的行为。

它也会选择是否继续执行连接点或直接返回它自己的返回值或抛出异常来结束执行。

28.AOP的特点和优缺点?

答:

AOP的好处:

消除了编码模块之间的依赖,在不改变原代码的情况下,添加一些功能

AOP的特征:各步骤之间的良好隔离性, 源代码的无关性

缺点:

Spring AOP(动态):通过代理程序运行时织入

优点:简单,易用

缺点:性能略低,仅适用于方法调用,必须在Spring容器

29.AOP三种代理方式(动态代理,CGLIB代理,代理工厂bean)

答:

1 jdk动态代理:

Proxy.newProxyInstance(目标类的类加载器,目标类的接口,InvocationHandler实现类) InvocationHandler实现类中的invoke方法可以实现对目标类方法的回调,此时我们就

找到了连接点,

2 cglib 面向具体类

继承MethodInterceptor类编写回调类,通过Enhancer类采用字节码技术对目标类进

行增强,给Enhancer设置目标类,设置回调类,实现回调类中的intercept方法,

实现对目标类方法的回调,此时我们就找到了连接点.

30.Execution配置的通用切入点的示例?

答:

31.在项目组,你们是如何使用AOP的?

答:

事务通知;日记;权限;

32.说说你对IOC的理解

答:

IOC :Inversion(反转)of Control(控制)

概念:调用者不再创建被调用者的实例,由spring框架实现(容器创建)所以称为控制反转。

ioc容器:bean工厂(BeanFactory) 和应用上下文(Application Context)

在Spring中,BeanFactory是IoC容器的核心接口。它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。

BeanFactory

|

|

ApplicationContext(国际化,事件,资源定位)

/ \

/ \

FileSystemXmlApplicationContext ClassPathXmlApplicationContext

1 XmlBeanFacrotry 需要传入Resource

Resource resource=new FileSystemResource("src/beans.xml");

BeanFactory beanFactory =new XmlBeanFactory(resource);

2 文件系统

ApplicationContext beanFactory = new FileSystemXmlApplicationContext(

"src/beans.xml");

3 类路径

BeanFactory beanFactory =new ClassPathXmlApplicationContext("beans.xml")

33.如何在Spring中使用JNDI的数据源?

答:

第一步:在tomcat6.0的conf文件夹下找到context.xml 文件,在中加入

Java代码

auth="Container"

type="javax.sql.DataSource"

password="1234"

username="demo"

driverClassName="oracle.jdbc.OracleDriver"

url="jdbc:oracle:thin:@127.0.0.1:1521:DEMO"

maxActive="100"

maxIdle="30"

maxWait="5000"

/>

第二步:在web.xml中加入

Java代码

jdbc/demo

javax.sql.DataSource

Container

第三步:在spring配置文件中配置dataSource

Java代码

34.Spring如何整合Struts1.x?

答:

1.直接使用WebApplicationContextUtils.getWebApplicationcontext(servlet上下文)

获得spring容器没有使用struts1与spirng的整合特性

2.让struts1的action继承spring 的ActionSupport,

ActionSupport 类提供方法getWebApplicationcontext()方法获得spring容器

这种整合方法会使Struts1与Spring严重耦合、不能使用DispatchAction、没有利用Spring的ioc

覆盖struts1的处理器RequestProcessor,使用spring的处理器DelegatingRequestProcessor,重写里面的processActionCreate方法让spring容器来创建Action实例这样做,虽然解决了Struts1的单例所带来的问题,也利用到了Spring的ioc。但是毕竟是修改了源码,如果RequestProcessor类修改了怎么办?

把struts1全权委托给spring的代理类DelegatingActionProxy

5.spring还提供了一个专门针对于struts1的插件来加载spring容器作用等同于加载spring容器的监听器或者servlet,配置如下

35.Spring如何整合Struts2.x?

答:

>>> struts2整合spring需要导入struts2支持spring的插件包

>>> 在web.xml配置文件中配置struts2的核心控制器FilterDispathcer用来初始化struts2并且处理所有的WEB请求,

>>> 和spring的监听器(ContextLoaderListener),struts的配置文件中的class指向spring里面的bean id

>>> 定义的bean也需要加上原型

struts2-spring-plugin-2.0.8.jar就是支持spring的插件包

1.web.xml的配置:

class>org.springframework.web.context.ContextLoaderListener

struts2

org.apache.struts2.dispatcher.FilterDispatcher

struts2

/*

applicationContext

/WEB-INF/classes/beans.xml

2.applicationContext.xml的配置

3.struts.xml的配置

/login.jsp

2 利用struts2对spring的插件包struts2-spring-plugin-2.0.8.jar

1在插件包里的struts-plugin.xml配置

指明struts2的action由spring来创建根据spring的名字找到创建action 的类StrutsSpringObjectFactory

36.Spring如何整合Hibernate?

答:

<1>将原Hibernate的hibernate.cfg.xml文件中关于数据源的配置整合为

Spring的applicationContext.xml文件中的一个bean

name="driverClassName">com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/j2ee

root

123456

<2>将Hibernate的核心SessionFactory接口的配置参数,

整合为Spring的LocalSessionFactoryBean类注入数据源

com/Person.hbm.xml

org.hibernate.dialect.MySQLDialect

update

<3>DAO类继承Spring的HibernateDaoSupport类,通过getHibernateTemplate()

方法获得HibernateTemplate实例<要注入sessionFactory>,通过此实例进行CRUD操作,将SessionFactory,Session以及Transaction交由Spring框架负责管理。

//HibernateDaoSupport本身提供setSessionFacotry(Session session)方法

//它会在创建该bean的时候自动设置SessionFactory,并将该SessionFactory 给HibernateTemplate

<4>在Spring的applicationContext.xml中配置DAO的bean 给HibernateTemplate 注入sessionFactory

<5>整合事务HibernateTransactionManager

37.Spring如何整合IBatis?

答:

spring 中有一个类叫org.springframework.orm.ibatis.SqlMapClientFactoryBean 给它注入ibatis的配置文件以及datasource,用spring的datasource整合ibatis中的datasource

classpath:WebContent/WEB-INF/ibatis.xml

class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">

classpath:sqlmap-config.xml

而在sqlmap-config.xml中则是存放其它的需要的配置文件资源

enhancementEnabled="false"

lazyLoadingEnabled="false"

maxRequests="3000"

maxSessions="3000"

maxTransactions="3000"

useStatementNamespaces="false"/>

有了SqlMapClient实例,我们就可以操作了

当然spring 提供类SqlMapClientDaoSupport以及SqlMapClientTemplate(来对ibatis的支持

使用的时候,我们只要继承SqlMapClientDaoSupport,并注入SqlMapClient 实例之

那么.就可以在代码中.

getSqlMapClientTemplate().queryForList(sqlStmID,param);

38.Spring如何整合MyBatis?

答:

本文主要介绍了如何将mybatis和spring整合在一起使用,本人使用的是mybatis3.05 + spring3.1.0M2 ,使用dbcp作为数据库连接池。

1.编写数据访问接口(UserDao.java)

package com.mybatis;

Sofa学习总结

Sofa学习总结 作者版本时间 吕方V0.0.12008-11-13

1.搭建sofa平台运行环境: 首先需要对从confluence中下载一个支持包,地址: https://www.doczj.com/doc/5018212729.html,:8080/pages/viewpage.action?pageId=3703045 或者直接使用链接: https://www.doczj.com/doc/5018212729.html,:8080/download/attachments/3703045/sofa-cor e-archetype.zip 下载后解压工程,然后Maven打包并install到本地资源仓库中。如果没有将这个小工程放到Maven的本地资源仓库中则后面操作都会有很多小麻烦。接下来开始建立一个小的sofa平台: step1:运行命令:E:\>mvn ar chetype:generate-DarchetypeCatalog=local 运行后命令行内容提示如下: step2:根据提示,输入信息如下:Choose a number:(1):1 继续执行,提示输入内容如下:Define value for sofa_app_name::demo 继续执行,提示输入内容如下:Define value for ar tifactId::demo 继续执行,如果不想改变版本信息,就直接留空不用输入任何信息,直接往下执行。 运行后命令行提示内容如下:

step4:生成eclispe工程,导入IDE,可以导入9个子工程。其中demo-test-test工程用于测试 step5:对com.alipay.sofa.demo.test.service.T estDemoCalcFacade类进行修改。 找到代码: 修改后如下: 运行测试用例,进行环境测试。如果通过则说明平台搭建OK了。 2.demo-cor e-engine使用总结: a.关于demo-core-engine.xml: 其中扩展点名字为:executor 在生成好的demo中,engine向下提供了一个扩展点。所有的扩展点都被封装成了一个com.alipay.sofa.demo.cor e.engine.api.DemoCalcExecutorDescr iptor对象。 其中的annotation为各个扩展提供了配置的节点关系及相关属性。如DemoCalcExecutor Descr iptor类中:

SpringMVC配置的基本步骤

Springmvc框架配置步骤 小弟是个新手,有不对的地方请tell me,一起研究探讨。谢谢。 1062140832@https://www.doczj.com/doc/5018212729.html, 配置springmvc框架其实不是很难,要现有一个总体的认识,确定要分几步,每一步主要是干什么,不要太盲目。 以为web.xml是项目的入口,所以所有的配置文件,都必须引入到wem.xml中,不然,配置了等于没用。所以,要先从入口入手。 配置web.xml 1、首先引入springmvc-servlet.xml文件 springMVC org.springframework.web.servlet.DispatcherServlet contextConfigLocation /WEB-INF/spring/mvc/springmvc-servlet.xml 1 2、将spring加载到web.xml中 org.springframework.web.context.ContextLoaderListener 3、配置上下文路径 contextConfigLocation /WEB-INF/spring/spring.xml,/WEB-INF/spring/spring-*.xml 说明:如果有很多的关于spring的配置文件,建议分开写,比如事务一个文件(spring-transaction.xml),springmvc-hibernate.xml一个配置文件,这样方便读写。

Spring MVC使用总结

Org . springframework . ui . ModelMap传递数据供视图所用 ${base}取的是当前页面所在的路径。它随页面的位置改变而改变。 web开发一共有四个作用域,范围从高到低分为appliaction作用域(全局作用域),session 作用域,request作用域和page作用域。 ${base}是el表达式语法,它会自动先从page作用域开始查找,如果没有再找request作用域,然后是session,最后再是application作用域。 动态网页项目,页面直接访问的是webcontent下的。 Weblogic.xml配置文件作用: weblogic.xml主要配置web容器的一些属性,比较JSP编译时间间隔、编译路径等web.xml是配置整个应用工程的属性,如servlet等 你用tomcat jboss等web容器和weblogic一样,它们单独有自己的配置文件 视图解析器 SpringMVC用于处理视图最重要的两个接口是ViewResolver和View FreeMarkerViewResolver 是继承自springmvc的一个接口,只是和freemarker同名而已 XmlViewResolver 貌似工具库里面定义好了(如ftl、分词库),然后在common中用 <@s.m "error.errorMessage"/>什么意思?? 视频 spring mvc freemarker

金磊https://www.doczj.com/doc/5018212729.html,/jinlei/index.jhtml 怎么发布到网上(FTP??) 搭个‘Android Lib安卓库’网站(有论坛、博客、下载、尚学宝) 1、界面 QQ互联 https://www.doczj.com/doc/5018212729.html,/article/5225f26b0ed354e6fb09085d.html 今天问题 VECTOR- 脚本语言- 注解-- 为什么frame要经过FrameAct.java一下,再返回?? @Controller是spring的Controller控制器? 为什么我新建的html是 别人是 <body>浏览器不支持Frames框架时显示的内容</body> jar包 apache下的jar包 apache-ant-zip-1.8.0.jar(ant是什么??它的jar包??ant是脚本引擎,脚本语言有

发展经济学讲义

D e v e l o p m e n t e c o n o m i c s 《发展经济学》讲义 参考书目:《发展经济学》——增长与发展经济学译丛 [美]Debraj ray着陶然等译北京大学出版社 2002年10月第1版 黄景贵院长教授博士 孙建军副教授博士 目录 第一讲导论 第二讲经济发展:概览 第三讲经济增长 第四讲新增长理论 第五讲历史、预期和发展 第六讲经济不平等 第七讲不平等和经济发展:相互的联系 第八讲贫困与营养不良 第九讲人口增长与经济发展 第十讲农村和城市 第十一讲农业中的市场:一个初步的介绍 第十二讲土地 第十三讲劳动 第十四讲信贷 第十五讲保险 第十六讲国际贸易 第十七讲贸易政策 第十八讲贸易政策的多边方法 序言 发展经济学是研究发展中国家经济转变的学科,本讲义提供了发展经济学的一个介绍。 本讲义主要面向高年级的本科生,帮助他们学习初级或中级经济理论、运用现代主流经济学的统一分析框架对各种发展问题作深入浅出的分析。尤其在方法论上,本讲义结合近年来经济理论在不完全信息、契约理论、博弈论和新增长理论等方面的最新进展,分析发展中国家的经济发展问题。 本讲义将对学生数学的要求降到了最低。具体而言,不使用微积分,而尝试主要通过语言、图表来说明问题,有时也使用基础代数来讲解有关理论。 第一讲导论 一、两个定义 发展经济学:研究发展中国家经济转变的学科(debraj ray,2002)。 发展中国家(developing country):人均年收入低于9000美元的国家,而高于9000美元的国家称为发达国家(developed country)。——世界发展报告(world bank,1996) 二、本讲义的思维框架——贯穿两条主线: 1、或多或少地远离一个传统观点:即发展中国家问题只有在其所处的国际环境中才能得到最好的理解; 2、关于方法论的,尽可能用统一的分析方式来研究经济发展的问题,并在市场失灵与政府干预的可能性方面取一

WEB框架总结

概述 开发框架的选择,始终是个仁者见仁、智者见智的事情。尤其是Web层的开发框架,数量非常多,而且各有特色,如:Struts、WebWork、Spring MVC、Tapestry、JSF、WebPage3.0......等等。他们各自的优、缺点: 框架使用背景 一:使用框架的必然性 框架,即framework。其实就是某种应用的半成品,把不同应用程序中有共性的一些东西抽取出来,做成一个半成品程序,这样的半成品就是所谓的程序框架。 软件系统发展到今天已经很复杂了,特别是服务器端软件,涉及到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻辑设计。这样每次开发就不用白手起家,而是可以在这个基础上开始搭建。 使用框架的最大好处:减少重复开发工作量、缩短开发时间、降低开发成本。同时还有其它的好处,如:使程序设计更合理、程序运行更稳定等。基于这些原因,基本上现在在开发中,都会选用某些合适的开发框架,来帮助快速高效的开发应用系统。 了解了使用框架的必然性,下面来看看如何选择,当然我们的话题集中在Web层的开发框架。在谈这个问题之前,先来看看我们在Web开发中究竟需要做些什么工作: 二:Web层开发的工作 在J2EE开发中,分层是基本的思想,3层架构或者多层架构早已深入人心,在这里我们就把目光集中到Web层,看看到底Web层开发做了那些工作: 1:数据展示 Web层需要从逻辑层获取需要展示的数据,然后以合理的方式在页面进行展示 2:人机交互 用户需要从界面上输入数据,在界面上进行按钮点击,进而触发事件,标准的事件驱动模型,然后跟后台进行数据交换,出现新的界面。 3:收集数据,调用逻辑层接口 Web层收到用户的事件请求,需要调用相应的逻辑层接口来进行处理,Web层是不会有任何逻辑处理的。调用逻辑层接口,需要传递参数,这时需要收集用户在界面上输入的数据,然后进行组织,组织成为逻辑层接口需要的数据封装形式(通常都是ValueObject)。 4:根据逻辑层的数据来重新展示页面 逻辑层处理完了,需要返回数据或信息到界面上。这个时候Web层需要根据返回的值选择合适的页面,然后展示这些数据或者信息。 从上面可以看出,Web层开发的主要工作集中在展示上,也就是图形用户界面。这一部分是用户直观感受应用程序的窗口,也是用户要求最多的地方,其表现形式也是最丰富的。 三:Web层开发的步骤 下面再来总结一下Web层开发的大致步骤(也就是需要开发人员做的工作): 注意:这里讨论的Web层开发,是不使用任何开发框架时候的开发。 1:写页面Html,到底有哪些数据需要在界面上表现

SpringMVC深入总结

一、前言: 大家好,Spring3 MVC是非常优秀的MVC框架,由其是在3.0版本发布后,现在有越来越多的团队选择了Spring3 MVC了。Spring3 MVC结构简单,应了那句话简单就是美,而且他强大不失灵活,性能也很优秀。 官方的下载网址是:https://www.doczj.com/doc/5018212729.html,/download(本文使用是的Spring 3.0.5版本) Struts2也是比较优秀的MVC构架,优点非常多比如良好的结构。但这里想说的是缺点,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降。Struts2的多层拦截器、多实例action性能都很好。可以参考我写的一篇关于Spring MVC与Struts2与Servlet比较的文章https://www.doczj.com/doc/5018212729.html,/admin/blogs/698217 Spring3 MVC的优点: 1、Spring3 MVC的学习难度小于Struts2,Struts2用不上的多余功能太多。呵呵,当然这不是决定因素。 2、Spring3 MVC很容易就可以写出性能优秀的程序,Struts2要处处小心才可以写出性能优秀的程序(指MVC部分) 3、Spring3 MVC的灵活是你无法想像的,Spring的扩展性有口皆碑,Spring3 MVC当然也不会落后,不会因使用了MVC框架而感到有任何的限制。 Struts2的众多优点:略... (呵呵,是不是不公平?) 众多文章开篇时总要吹些牛,吸引一下读者的眼球,把读者的胃口调起来,这样大家才有兴趣接着往后看。本文也没能例外。不过保证你看了之后不会后悔定有收获。

区域经济学知识点总结

区域经济学 第一二章 1.基本概念:区域、区域经济、区域经济学 区域:区域经济学的研究对象 区域是区域经济学研究的起点。它是一个多维度、多层次的概念,对其进行界定或定义,需要从地理学、政治学、经济学等多学科的角度出发。 地理学的区域概念:地理学时最早提出区域概念的学科。为了便于考查,地理学把地球空间按照其相互关系进行分类,或者是区分,并用一定的事先设定的法则,将其划分为各种区域,诸如海洋区、陆地区、高原区,平原区、丘陵区等等。由于每一类区域不同的特征以及温度、降雨和生物物种分布等的巨大差异,使每一个区域的内容更加丰富和更多样化。 地理学对区域研究的贡献,是把区域定义为地球表面的一个地域单元。 政治学的区域概念:政治学是从行政管理的角度去观察和分析各种不同的地点,根据人口居民点和社会经济活动的位置及分布状况,划分系统的地方单元。政治学中的区域不但表示地理区域的概念,而且还包含地方公民间的文化联结、惯例认同、心理归属、民族历史、社会经济关系等意义。 政治学对区域研究的贡献,是把区域定义为行政管理的一个地方单元。 社会、文化区域:根据人类社会活动的特征,在人口、民族、宗教、语言、

政治等因素交互影响下而产生的附加在自然景观上的“人类活动形态”——文化景观特定性质的相似性和差异性而划分出来的地域单元,如华人文化圈、东方文化圈、穆斯林文化圈等; 经济学的区域概念:经济学的区域概念就是区域经济学的区域概念。经济学的区域是在地理学和政治学关于区域概念的基础上,考虑某个地域空间的人口、经济、资源、环境、公共设施和行政管理的特点,是居民高度认同、地域完整、功能明确、内聚力强大的地域单元。 它一般以两种形式存在:同质区域和极化区域。 区域的特征:内在整体性、空间界线的客观性与模糊性 区域经济:区域的经济活动和经济关系的总和。 如果我们把全国的国民经济看做是一个整体,那么区域经济就是整体的一部分,是国民经济整体不断分解的结果。 区域经济的特点包括: 区域性——区域经济最根本的特点 非均衡性 阶段性和连续性 开放性

2.Spring-mvc框架结构及执行流程

Spring mvc架构及执行流程一、请求处理流程图 二、执行流程说明 三、组件说明

说明:在springmvc的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc 的三大组件。 需要用户编写的组件有handler、view 四、Spring MVC配置 1、组件扫描器:使用组件扫描器省去在spring容器配置每个controller类,使用 自动扫描标记@controller的配置如下:

2、RequestMappingHandlerMapping:注解处理器映射器,对类中标记@RequestMapping 的方法进行映射,根据RequestMapping定义的url匹配RequestMapping标记的方 法,匹配成功返回HandlerMethod对象给前端控制器,HandlerMethod对象中封装 注解描述: @RequestMapping:定义请求url到处理器功能方法的映射 3、RequestMappingHandlerAdapter:注解式处理器适配器,对标记@RequestMapping 的方法进行适配。 从spring3.1版本开始,废除了AnnotationMethodHandlerAdapter的使用,推荐使用 4、:spring mvc 使用自动加载RequestMappingHandlerMapping和RequestMappingHandlerAdapter,可用在spring-mvc.xml 配置文件总使用替代注解处理器和适配器的配置。 5、视图解析器 InternalResourceViewResolver:支持JSP视图解析 viewClass:JstlView表示JSP模板页面需要使用JSTL标签库,所以classpath中必须包含jstl 的相关jar 包。此属性可以不设置,默认为JstlView。 prefix 和suffix:查找视图页面的前缀和后缀,最终视图的址为:

javaweb开发要学习的所有技术和框架总结:

学习javaweb开发要学习的技术和框架总结: 前言:当初想学习javaweb开发的时候,希望能够全方面地学习(这样找工作时就胸有成足了)。但是对这个根本不理解,又不认识从事这方面的熟人,所以学习起来无从下手。经过了一年的‘死’学习,从网上,从书本,从视频里面深入了解了java。想从事java的朋友,只要把这些技术全学会了,哪就业肯定没有问题了。 前端技术: HTML, CSS, JA V ASCRIPT, JQUERY, AJAX HTML “超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。 超文本标记语言的结构包括“头”部分(外语:Head)、和“主体”部分(外语:Body),其中“头”部提供关于网页的信息,“主体”部分提供网页的具体内容。 CSS 级联样式表是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。 JavaScript JavaScript一种直译式脚本语言,是一种动态类型、弱类型、基于原型的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能。 jQuery jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多)。jQuery在2006年1月由美国人John Resig在纽约的barcamp发布,吸引了来自世界各地的众多JavaScript高手加入,由Dave Methvin率领团队进行开发。如今,jQuery已经成为最流行的javascript库,在世界前10000个访问最多的网站中,有超过55%在使用jQuery。

精选-发展经济学期末复习资料

1 发展经济学复习资料 根据老师所划重点制作的精简版仅作为进行教材复习时的参考资料, 祝大家顺利通过考试! 考试题型: 一、名词解释5×6’ 二、简答题4×10’ 三、论述题2×30’ 说明:1、不考模型2、边看书边补充,资料有局限性。 一、第1、2章综合(名词解释) 李约瑟之谜:即中国古代的科学技术已经相对十分发达,为什么工业革命没有发生在中国?该问题的回答可以分为两个方面:1、为何工业革命发生在欧洲?2、为何工业革命没有发生在中国?至今尚无定论。 马尔萨斯陷阱:如果一个国家人口的增长速度超过了这个国家经济增长的速度,那么这个国家仅仅是经济总量的增加,而居民的平均社会福利水平却是在下降,这种经济总量的增加与平均社会福利下降同时出现的现象 人口转型:指人口生育率、死亡率和人口结构的变化。分为三个阶段:第一阶段高出生率、高死亡率、低人口增长率;第二阶段高出生率、低死亡率、高人口增长率;第三阶段低出生率、低死亡率、低人口增长率 人口红利:针对第二阶段后半段,这个阶段劳动人口相对于被抚养的人口更丰裕,从而可能有利于经济增长。 二、第三章、农业与经济发展(大题) (一)农业对经济发展的贡献? 答:1、保障粮食供给2、提供就业3、缓解贫困4、促进劳动力转移和工业化进程。(二)农业在国民经济中下降的原因? 答:两个方面:从供给方面,现代农业的进步率高于制造业和服务业。技术进步的实质是单位产品的成本下降,因此,在其他条件不变的情况下,技术进步较快的产业的相对价格会降低。这样劳动力将转移到技术进步率较低但相对价格较高的产业;从需求方面,农产品主要是食品这样的必需品,而必需品的弹性小于1,故但收入增加时,越来越多的收入份额会用到非食物产品上,从而降低了食品消费占经济总消费的比例,进而导致农业在国民经济总量中的份额不断下降。 (三)对农业的过度汲取及其后果? 答:对农业的过度汲取表现为:实行统购统销和人民公社,形成农产品价格上的剪刀差,用于工业的积累。 后果体现为三个方面:首先农业生产效率的严重下降;其次农民被固着在土地上,农村开始呈现完全等同于农业的态势;最后是城市农产品供应空前紧张。 我们能逃避的只是逃避的本身—卡夫卡; 我们所恐惧的只是恐惧的本身—罗斯福

spring MVC配置详解

牧涛 --<-<-<@态度决定一切→_→。。。 ?博客园 ?首页 ?新闻 ?新随笔 ?联系 ?管理 ?订阅 随笔- 171 文章- 3 评论- 79 spring MVC配置详解 现在主流的Web MVC框架除了Struts这个主力外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。 一、Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar、spring-webmvc.jar、commons-logging.jar、cglib -nodep-2.1_3.jar Hibernate 3.6.8:hibernate3.jar、hibernate-jpa-2.0-api-1.0.1.Final.jar、a ntlr-2.7.6.jar、commons-collections-3.1、dom4j-1.6.1.jar、javassist-3.12.0.G A.jar、jta-1.1.jar、slf4j-api-1.6.1.jar、slf4j-nop-1.6.4.jar、相应数据库的驱动jar 包 SpringMVC是一个基于DispatcherServlet(分发器)的MVC框架,每一个请求最先访问的都是DispatcherServlet,DispatcherServlet负责转发每一个Request请求给相应的Handler,Handler处理以后再返回相应的视图(View)和模型(Model),返回的视图和模型都可以不指定,即可以只返回Model或只返回View或都不返回。 DispatcherServlet是继承自HttpServlet的,既然SpringMVC是基于DispatcherSe rvlet的,那么我们先来配置一下DispatcherServlet,好让它能够管理我们希望它管理的内容。HttpServlet是在web.xml文件中声明的。 spring org.springframework.web.servlet.DispatcherServlet< /servlet-class>