美文网首页
ssm框架(一)idea+maven+ssm框架从0到1搭建

ssm框架(一)idea+maven+ssm框架从0到1搭建

作者: Top2_头秃 | 来源:发表于2019-05-17 11:02 被阅读0次
    java web架构图

    下面我们使用idea搭建一个简单的SSM多模块框架,之后在慢慢解说

    • 建立项目根目录
      第一步
      我们首先为项目创建一个根目录,直接next 填上相关内容,GroupId一般为域名的倒叙写法 ,是项目组织唯一的标识符;ArtifactId为项目名称,实际对应项目的名称,就是项目根目录的名称
      填写项目组织名和项目名 下一步,填写项目工程的名称 填写idea项目名
      直接点击finish完成。
      建成后的目录如下: 目录结构 其中src目录如果不需要可以删除,我们暂时留着
    • 创建DAO模块
      dao层,即持久层
      在根目录ssm上右键,选择new->Module 然后next, 建立dao模块 next之后模块名填写dao 填写模块名 直接finish完成dao层的创建 src目录可以先留着。
      再以同样的方法创建 service 和 web模块。web模块的创建其实我们也可以用maven中的模版来创建,这里我们为了实验,使用普通方法创建。
      最终目录是这样的,其中src目录可以删掉 最终目录
    点击File->Project Structure,如下弹出框中 作如下选择 添加web 为我们的项目添加web,添加完之后web模块就会出现如下目录 web目录
    File->Project Structure 中添加war包 添加war包

    ------------------------------分割线---------------------

    目录都建立好之后,现在我们开始建立依赖,我们向根目录下的pom文件添加依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.wcb</groupId>
        <artifactId>ssm</artifactId>
        <packaging>pom</packaging>
        <version>1.0-SNAPSHOT</version>
        <modules>
            <module>dao</module>
            <module>service</module>
            <module>web</module>
        </modules>
    
        <properties>
            <!--定义一些全局变量-->
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <spring.version>4.0.6.RELEASE</spring.version>
            <mysql.connector.version>5.1.30</mysql.connector.version>
            <mybatis.version>3.2.7</mybatis.version>
            <mybatis.spring.version>1.2.2</mybatis.spring.version>
            <log4j.version>1.2.12</log4j.version>
            <jstl.version>1.2</jstl.version>
            <aspectj.version>1.6.12</aspectj.version>
            <commons-dbcp.version>1.4</commons-dbcp.version>
        </properties>
    
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.7.0</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    
        <!--项目依赖-->
        <dependencies>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>3.8.1</version>
                <scope>test</scope>
            </dependency>
            <!--spring核心包依赖-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <!--Spring MVC-->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>${spring.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>${spring.version}</version>
            </dependency>
        </dependencies>
        <!-- Bean注入 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- 包扫描 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- 切面编程 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- 事务管理 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- ORM 框架 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- 加入spring测试依赖包 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- aspectjweaver -->
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjrt</artifactId>
            <version>${aspectj.version}</version>
        </dependency>
        <!-- mybatis包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <!-- spring mybatis整合包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>${mybatis.spring.version}</version>
        </dependency>
        <!-- mysql-connector -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.connector.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>${commons-dbcp.version}</version>
        </dependency>
        <!-- jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>
        <!-- servlet api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
        </dependency>
    
    </project>
    

    service模块的xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>ssm</artifactId>
            <groupId>com.wcb</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
        <artifactId>service</artifactId>
    
    
        <!--以下为新增内容-->
        <packaging>jar</packaging>
        <dependencies>
            <!--添加对dao层模块的依赖-->
            <dependency>
                <groupId>com.wcb</groupId>
                <artifactId>dao</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
            <!--单元测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </project>
    

    dao模块

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>ssm</artifactId>
            <groupId>com.wcb</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>dao</artifactId>
    
    
        <!--以下内容为新增-->
        <packaging>jar</packaging>
    
    
    </project>
    

    web模块

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>ssm</artifactId>
            <groupId>com.wcb</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>web</artifactId>
    
    
        <!--以下内容为新增-->
        <packaging>war</packaging>
        <dependencies>
            <!--对dao层的依赖-->
            <dependency>
                <groupId>com.wcb</groupId>
                <artifactId>dao</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
            <!--对service层的依赖-->
            <dependency>
                <groupId>com.wcb</groupId>
                <artifactId>service</artifactId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
        </dependencies>
    
    </project>
    

    经过上述步骤各种依赖都建立好了,现在开始看dao层文件的编写

    到层新建如下文件

    新建文件 UserMapper是到数据库表的映射接口,pojo是具体实体类,也可以叫entity; resources中的mapper是映射接口的xml配置名,mybatis-config.xml是mybatis的配置,所有的额mapper.xml都要依赖这个文件

    我们首先增加一个数据库链接

    view->tool windows->database , 在mac上是花键+N新建一个mysql类型的Data source链接,输入ip 端口和和用户名密码就可以建立一个链接了 配置 配置如下文件 spring文件配置

    写入如下内容

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:p="http://www.springframework.org/schema/p"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-4.0.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop.xsd
           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx.xsd">
        <context:component-scan base-package="com.wcb.service"/>
        <!--配置数据源-->
        <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
              destroy-method="close"
              p:driverClassName="com.mysql.jdbc.Driver"
              p:url="jdbc:mysql://10.26.15.171:3306/rap_db"
              p:username="zhanglei61"
              p:password="Zl880416"
              p:maxActive="20"
              p:initialSize="1"
              p:maxWait="60000"
              p:maxOpenPreparedStatements="20"
              p:minIdle="3"
              p:removeAbandoned="true"
              p:removeAbandonedTimeout="180"
              p:connectionProperties="clientEncoding=UTF-8"/>
        <!--mybatis的配置文件-->
        <bean id="sqlSessionFactory"
              class="org.mybatis.spring.SqlSessionFactoryBean"
              p:dataSource-ref="dataSource"
              p:configLocation="classpath:mybatis-config.xml"
              p:mapperLocations="classpath*:mapper/*Mapper.xml"/>
        <!-- spring与mybatis整合配置,扫描所有dao 和所有mapper文件 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
              p:basePackage="com.wcb.dao"
              p:sqlSessionFactoryBeanName="sqlSessionFactory"/>
    
        <!-- 配置事务管理器 -->
        <bean id="transactionManager"
              class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
              p:dataSource-ref="dataSource" />
        <aop:config proxy-target-class="true">
            <aop:pointcut id="serviceMethod"
                          expression="(execution(* com.wcb.service..*(..))) and (@annotation(org.springframework.transaction.annotation.Transactional))" />
            <aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice" />
        </aop:config>
        <tx:advice id="txAdvice" transaction-manager="transactionManager">
            <tx:attributes>
                <tx:method name="*" />
            </tx:attributes>
        </tx:advice>
    
    </beans>
    
    创建dao层的pojo实体类User.java User实体类

    写入以下代码

    package com.wcb.pojo;
    
    /**
     * Created by zl on 2019/5/18.
     */
    public class User {
    
        private String name;
        private String password;
        private String account;
        private String email;
        private String lastLoginDate;
    
        public String getName() {
            return name;
        }
    
        public String getPassword() {
            return password;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setPassword(String password) {
            this.password = password;
        }
    
        public void setAccount(String account) {
            this.account = account;
        }
    
        public String getAccount() {
            return account;
        }
    
        public void setLastLoginDate(String lastLoginDate) {
            this.lastLoginDate = lastLoginDate;
        }
    
        /**
         * @return
         */
        public String getLastLoginDate() {
            return this.lastLoginDate;
        }
    
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
    
        @Override
        public String toString() {
            return  "userName='" + name + '\'' +
                    ", password='" + password + '\'';
    
        }
    }
    
    
    创建接口映射文件xml, 映射文件 同时在dao中建立如下UserMapper文件 mapper文件
    package com.wcb.dao;
    
    import com.wcb.pojo.User;
    
    import java.util.List;
    
    /**
     * Created by zl on 2019/5/18.
     */
    public interface UserMapper {
    
        List<User> selectAll();
        int insertUser(User user);
    }
    
    
    service模块编写测试文件 测试文件

    ,写入以下内容

    package com.wcb.test;
    
    import com.wcb.dao.UserMapper;
    import com.wcb.pojo.User;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import java.util.List;
    
    /**
     * Created by zl on 2019/5/18.
     */
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:spring-mybatis.xml")
    public class UserTest {
    
        @Autowired
        private UserMapper userMapper;
        @Test
        public void InsertUserTest() {
            User user = new User();
            user.setAccount("zsdfds@111.com");
            user.setName("Test");
            user.setPassword("123456");
            user.setEmail("zzsfd@183.com");
            user.setLastLoginDate("20190101");
            userMapper.insertUser(user);
            //System.out.println(userMapper.insertUser(user));
        }
    
        @Test
        public void SelectAllTest() {
            List list=userMapper.selectAll();
            for(Object user:list){
                System.out.println(user.toString());
            }
    
        }
    
        @Test
        public void testGetName() throws Exception {
    
        }
    
        @Test
        public void testGetPassword() throws Exception {
    
        }
    
        @Test
        public void testSetName() throws Exception {
    
        }
    
        @Test
        public void testSetPassword() throws Exception {
    
        }
    
        @Test
        public void testSetAccount() throws Exception {
    
        }
    
        @Test
        public void testGetAccount() throws Exception {
    
        }
    
        @Test
        public void testSetLastLoginDate() throws Exception {
    
        }
    
        @Test
        public void testGetLastLoginDate() throws Exception {
    
        }
    }
    
    
    运行测试文件可以看到插入了新数据 插入的文件 也能读取出内容,如下所示 读取到的内容

    相关文章

      网友评论

          本文标题:ssm框架(一)idea+maven+ssm框架从0到1搭建

          本文链接:https://www.haomeiwen.com/subject/julnaqtx.html