美文网首页
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