ssm框架搭建

一、框架搭建的思想

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了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的小巍

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值