一、框架搭建的思想
1、第一种思路
- 我们采用先搭建dao层,然后在搭建service,最后搭建controller层
2、第二种思路
- 我们采用框架的搭建思想,先搭建spring后搭建mybatis,最后在搭建springmvc
3、第三种思路
- 先搭建springmvc,后搭建mybatis,最后搭建spring
这三种搭建方式有区别,看个人的习惯,我一般采用是第一种搭建方式,但后面的两种也是可以的,第二种是前两种不用tomcat服务器,到最后采用,方便一点,不用每次都启动tomcat
二、搭建过程---(采用第一种dao-》service-》cotroller)
1、数据库准备
准备一张user表,id name age三个简单属性
2.创建工程 maven web工程 映射文件开发dao层
3.引入静态文件 html css js img plugin
4.引入依赖
1.依赖传递 引入的依赖如果用到第三方其余的依赖,会自动带过来
2.依赖的引入原则
1.声明优先原则
2.路径近者优先原则
3.版本锁定 通过版本锁定节点引入具体的依赖 ---推荐使用
5、代码搭建
1、引入pom.xml文件
<packaging>war</packaging>
<dependencies>
<!--dao层开发-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!--junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--spring-test测试-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<!--配置数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<!--事物-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.13</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<!--web-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<target>1.8</target>
<source>1.8</source>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
</plugins>
</build>
2、dao层开发
代码 dao接口 domain实体类
配置文件 myBatis的sqlMapConfig.xml ---可以省略
ssm整合后被spring的
applicationContext.xml
数据源 dataSource
接口扫描类 MapperScaner
session工厂 sessionFactory
编写applicationContext.xml
<!--数据源-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql:///maven_ssm"></property>
<property name="username" value="root"></property>
<property name="password" value="root"></property>
</bean>
<!--session工厂-->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!--别名的路径扫描-->
<property name="typeAliasesPackage" value="cn.itcast.domain"></property>
</bean>
<!--扫描接口生成代理实现类-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.itcast.dao"></property>
</bean>
编写Mapper.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.dao.IUserDao">
<select id="findById" resultType="user" parameterType="int">
select * from user where id = #{id}
</select>
</mapper>
3、service层搭建
代码 业务类接口 业务类实现
配置文件 applicationContext.xml
包扫描 context:component-scan 扫描自定义业务实现类管理
事务管理器 transactionManager
事务的通知 tx:Advice
aop切面配置 aop:config
继续补充applicationContext.xml
<!--包扫描 context:component-scan 扫描自定义业务实现类管理-->
<context:component-scan base-package="cn.itcast.service"></context:component-scan>
<!--事务管理器 transactionManager-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--事务的通知 tx:Advice-->
<tx:advice id="txAdvice">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="update" propagation="REQUIRED"/>
<tx:method name="find*" read-only="true"/>
</tx:attributes>
</tx:advice>
<!--aop切面配置 aop:config-->
<aop:config>
<aop:pointcut id="pc" expression="execution( * cn.itcast.service.*.*(..))"></aop:pointcut>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pc"></aop:advisor>
</aop:config>
4.web层
代码 接受请求出来的动作类 controller
配置文件
springMvc.xml
扫描动作类的包路径
视图解析器
mvc注解驱动 mvc:annotation-driven
静态资源放行 本质是静态资源文件不需要交给springMvc处理
编写springmvc.xml
<context:component-scan base-package="cn.itcast.controller"></context:component-scan>
<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!--mvc驱动代替适配器和映射器-->
<mvc:annotation-driven></mvc:annotation-driven>
<!--静态资源放行 不被springMvc处理
<mvc:resources mapping="/css/**" location="/css"></mvc:resources>
-->
<mvc:default-servlet-handler></mvc:default-servlet-handler>
web.xml
核心控制器
spring监听器
乱码解决过滤器
<!--springMvc的核心控制器servlet-->
<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>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--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>
<!--乱码的filter过滤器-->
<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>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
一般只要记住思路就可以了,搭建每层,我们应该有哪些核心的东西去配置,这样就ok了