一.web-xml
Struts
1.核心过滤器 (org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter)
(<url-pattern>*.action</url-pattern>)
拦截所有.action为后缀的请求地址
2.监听器(org.springframework.web.context.ContextLoaderListener)
整合spring以后把三层框架所需要创建对象交由spring创建
(数据源、Hibernate的SessionFactory、事务管理器等)
SpringMvc
1.核心servlet 前端控制器 (org.springframework.web.servlet.DispatcherServlet)
初始化contextConfigLocation 加载springmvc.xml 文件
相当于把controller层单独放到了servlet里面加载,但还是交由spring进行管理
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<!--服务器启动就加载servlet容器 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
2.监听器, 整合spring以后把service.dao层交由spring进行管理
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-*.xml</param-value>
</context-param>
3.POST提交修改中文乱码,配置编码过滤器
<filter>
<filter-name>characterEncoding</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>
</filter>
<filter-mapping>
<filter-name>characterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
二,ApplicationContext--controller层
Struts
1. applicationContext.xml
<!--扫描controller层,把controller层交由spring创建 -->
<context:component-scanbase-package="com. xxx.bos.web"></context:component-scan>
<!--引入service,dao的配置 -->
<import resource="classpath:applicationContext_dao.xml"/>
<importresource="classpath:applicationContext_service.xml"/>
SpringMvc
1. springmvc.xml
<!--扫描controller层,把controller层交由spring创建 -->
<context:component-scan base-package="com. xxx.controller"></context:component-scan>
<!--最新版处理器映射器和处理器配置器-->
<mvc:annotation-driven/>
<!--跳转视图解析的重复路径-->
<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">
<propertyname="prefix" value="/WEB-INF/jsps/"></property>
<propertyname="suffix" value=".jsp"></property>
</bean>
三,ApplicationContext--service层
Spring(spring date jpa)
1. applicationContext_service.xml
<!--扫描service层,把service层交由spring创建 -->
<context:component-scan base-package=" com.xxx.bos.service"></context:component-scan>
<!-- 事物管理器-->
<bean id="transactionManager"class="org.springframework.orm.jpa.JpaTransactionManager">
<propertyname="entityManagerFactory"ref="entityManagerFactory"></property>
</bean>
<!-- 事物注解扫描-->
<tx:annotation-driven transaction-manager="transactionManager"proxy-target-class="true" />
Spring
1. applicationContext_service.xml
<!--扫描service层,把service层交由spring创建 -->
<context:component-scan base-package="com. xxx.service "></context:component-scan>
<!-- 事物管理器-->
<bean
id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<propertyname="dataSource" ref="dataSource"></property>
</bean>
<!-- 事物注解扫描-->
<tx:annotation-driventransaction-manager="transactionManager" />
四,ApplicationContext--dao层
hibernate(spring date jpa)
1.applicationContext_dao
<!-- 把dao交给spring创建-->
<jpa:repositories base-package="com.itheima.bos.dao"></jpa:repositories>
<!-- 读取property连接池信息-->
<context:property-placeholderlocation="classpath:jdbcinfo.properties"/>
<!-- 创建数据源c3p0 注入参数-->
<beanid="dataSource"class="com.mchange.v2.c3p0.ComboPooledDataSource">
<propertyname="driverClass"value="${jdbc.driverClass}"></property>
<propertyname="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<propertyname="user" value="${jdbc.user}"></property>
<propertyname="password"value="${jdbc.password}"></property>
</bean>
<!-- Spring整合JPA session工厂-->
<bean
id="entityManagerFactory"class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!--注入DataSource -->
<propertyname="dataSource" ref="dataSource"></property>
<!--指定扫描的包 -->
<propertyname="packagesToScan"value="com.itheima.bos.entity"></property>
<!--指定持久层提供者为HIbernate -->
<propertyname="persistenceProvider">
<beanclass="org.hibernate.ejb.HibernatePersistence"></bean>
</property>
<propertyname="jpaVendorAdapter">
<beanclass="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<!--自动建表 -->
<propertyname="generateDdl" value="true"></property>
<propertyname="database" value="ORACLE"></property>
<property
name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect"></property>
<propertyname="showSql" value="true"></property>
</bean>
</property>
<!--配置jpa方言 -->
<propertyname="jpaDialect">
<beanclass="org.springframework.orm.jpa.vendor.HibernateJpaDialect"></bean>
</property>
</bean>
Maybatis
1.applicationContext_dao
<!-- 扫描mapper包,自动通过接口创建dao实体类,并且自动映射sql mapper配置语句-->
<beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">
<propertyname="basePackage"value="com.itheima.mapper"></property>
</bean>
<!-- 读取property连接池信息-->
<context:property-placeholderlocation="classpath:jdbc.properties"/>
<!-- 创建数据源 dbcp 注入参数-->
<beanid="dataSource"class="com.alibaba.druid.pool.DruidDataSource">
<propertyname="driverClassName"value="${jdbc.driver}"></property>
<propertyname="url" value="${jdbc.url}"></property>
<propertyname="username" value="${jdbc.username}"></property>
<propertyname="password"value="${jdbc.password}"></property>
</bean>
<!-- mybatis session工厂-->
<bean id="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
<! --数据源-->
<propertyname="dataSource" ref="dataSource"></property>
<! --与数据库相对应实体类的包 ,为sql mapper 固定jopo包名-->
<propertyname="typeAliasesPackage"value="com.itheima.domain"></property>
<!--sql mapper文件路径的配置文件-->
<propertyname="configLocation"value="classpath:sqlMapConfig.xml"></property>
</bean>
5,struts和springMvc的区别
1.入口不同
Sturs的入口是核心过滤器,通过过滤器,struts拦截器从而访问strutsaction 层.
SpringMvc 的入口是核心Servlet,通过前端控制器,处理器映射器,处理器适
配器.访问controller层,然后通过视图解器返回.
2.一个基于方法开发,一个基于类开发(开发方式不同)
Struts 的action层都是由成员变量进行传参,所以每次URL访问一次action层,都必须创建一个实体类,从而避免数据的混乱,所以Sturts是多例的.
SpringMvc 是以形参的方式进行传参,是作用于方法上的,所以SpringMvc既可以单例,
也可以多例.
3.请求响应存取值方式不同
Struts 是通过值栈进行存取值,与页面和数据库进行交互
SpringMvc 从页面接收数据是以方法形参传值,而与浏览器交互则是通过视图解析器, 把jsp解析成html与页面交互.