超详细IDEA配置SSM环境

1. 数据库建表

create database idcard;

create table usertable
(
id int(11) primary key not null auto_increment,
uname varchar(50) not null,
upwd varchar(32) not null
);

2. 新建maven项目

New Project,只选择左边的Maven和上面的SDK,其他全部不选,next:

在这里插入图片描述
输入GroupId和ArtifactId:
在这里插入图片描述

完成Finish:
在这里插入图片描述

进入主界面如下图所示:
在这里插入图片描述

(可以选择右下角自动提示的 Enable Auto-Import,后期就能自动导入maven坐标了)

3. 配置pom.xml

打开pom.xml,填入如下dependencies,亲测这些坐标是相互兼容的,包括了spring、spring mvc、mybatis、mysql、servlet、junit、log4j等:

<dependencies>

    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>2.0.6</version>
    </dependency>
        <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>5.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-beans</artifactId>
        <version>5.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>5.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>5.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-expression</artifactId>
        <version>5.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>5.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
        <version>5.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>5.3.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.3.2</version>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.45</version>
    </dependency>
    
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-dbcp2</artifactId>
        <version>2.8.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-pool2</artifactId>
        <version>2.9.0</version>
    </dependency>

    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.12</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-api</artifactId>
        <version>2.17.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>2.17.2</version>
    </dependency>
    
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.2.1</version>
    </dependency>

    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
    </dependency>
</dependencies>

最终External Libraries能看到导入的包即可:
在这里插入图片描述

如果不能自动导入,就点击右边的Maven、再点击左边这个像是刷新样式的reimport按钮:
在这里插入图片描述

4. 为项目增加web支持

右键ssm项目,选择Add Framework Support:

在这里插入图片描述

选择Web Application,然后OK:

在这里插入图片描述

这样就增加了web文件夹和web.xml,到此项目目录如下:
在这里插入图片描述

5. 创建实体类

右键java文件夹,在这个目录下写java代码。

新建MyUser类,前面的model.是为了建包,这样一步就能建包和建类:

在这里插入图片描述

填写如下代码:

package model;

public class MyUser {
    private int id;
    private String uname;
    private String upwd;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUpwd() {
        return upwd;
    }

    public void setUpwd(String upwd) {
        this.upwd = upwd;
    }
}
  • 小技巧,填写完三个属性之后,右键空白区域,选择generate自动生成Getter和Setter:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

6. 创建po

刚才建立的实体类是针对代码逻辑的,再新建po包下的MyUserTable,对应于数据库表单:

package po;

public class MyUserTable {
    private int id;
    private String uname;
    private String upwd;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUpwd() {
        return upwd;
    }

    public void setUpwd(String upwd) {
        this.upwd = upwd;
    }
}

7. 创建dao

新建dao包,新建接口UserMapper,用于MyBatis的代理开发:

package dao;

import model.MyUser;

public interface UserMapper {
    
    void register(MyUser myUser);
    
}

在resource目录下新建mapper目录,mapper目录下新建UserMapper.xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="dao.UserMapper">
    <select id="register" parameterType="myUser">
        insert into usertable (id, uname, upwd) values (null, #{uname}, ${upwd})
    </select>
</mapper>

namespace填写UserMapper的路径,id对应于UserMapper中的方法名。

此时UserMapper类与UseMapper.xml配置文件产生了关联。

注:这里的myUser是别名,后续将配置实体类的别名。

8. 新建jdbs.properties

在resources目录下新建jdbs.properties,填入如下内容:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/idcard?characterEncoding=utf8&useSSL=false
jdbc.username=root
jdbc.password=123456

注:useSSL=false是为了解决“Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure”错误,如没遇到可忽略。

9. 配置sqlMapConfig.xml

在resources目录下新建sqlMapConfig.xml,填入如下内容:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <properties resource="jdbc.properties"></properties>


    <typeAliases>
        <package name="model"/>
        <package name="po"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="mapper/UserMapper.xml"></mapper>
    </mappers>


</configuration>

typeAliases就是前文提到的别名,package属性将包下的所有类都创建别名,无需包路径即可访问。

这个文件主要是配置mapper映射文件,让前面配置的mapper映射与数据库产生关联。

10. 创建service

新建service包,新建接口UserService:

package service;

import model.MyUser;

public interface UserService {
    
    void register(MyUser myUser);
    
}

新建接口UserService的实现:

package service;

import dao.UserMapper;
import model.MyUser;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.stereotype.Service;

import java.io.IOException;
import java.io.InputStream;

@Service
public class UserServiceImpl implements UserService {
    @Override
    public void register(MyUser myUser) {
        try {
            InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            userMapper.register(myUser);

            sqlSession.commit();
            sqlSession.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

这里引入了sqlMapConfig.xml实现了数据库和UserMapper.xml的关联,还引入了UserMapper.class实现了dao和数据库的关联。

因此,service已能够操作数据库。

小技巧:implements之后爆红,按住alt+enter可以选择implement methods自动生成@Override:

在这里插入图片描述

11. 配置applicationContext.xml

在resources目录下新建applicationContext.xml,填入如下内容:

<?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"
       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.xsd">

    <context:component-scan base-package="service"/>
    <context:component-scan base-package="dao"/>

</beans>

ssm中的spring只负责service和dao,controller交由spring mvc控制。

12. 创建controller

新建controller包,创建UserController类:

package controller;

import model.MyUser;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import service.UserService;

@Controller
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/register")
    @ResponseBody
    public String test() {
        System.out.println("get a request: register");

        MyUser myUser = new MyUser();
        myUser.setId(1);
        myUser.setUname("tom");
        myUser.setUpwd("123");

        userService.register(myUser);
        return "register success";
    }
}

模拟接受到register空请求之后,让service控制dao。

13. 配置springmvc.xml

在resources目录下新建springmvc.xml,填入如下内容:

<?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:mvc="http://www.springframework.org/schema/mvc"
       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.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <context:component-scan base-package="controller"/>

    <mvc:annotation-driven></mvc:annotation-driven>


    <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <mvc:default-servlet-handler></mvc:default-servlet-handler>

</beans>

14. 配置web.xml

配置web/WEB-INF目录下的web.xml,填入如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <servlet>
        <servlet-name>DispatcherServlet</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>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <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>

</web-app>

web.xml集成了applicationContext.xml和springmvc.xml,统一了全部的配置内容。

当前,项目目录结构如下:

在这里插入图片描述

15. 配置tomcat

点击右上角的Add Configuration:

在这里插入图片描述

点击左上角的加号+,选择Tomcat Server、Local:

在这里插入图片描述

先配置Server下的Application server:

在这里插入图片描述

选择本地下载好的tomcat根目录:

在这里插入图片描述

进入Deployment,如下操作所示:

点击加号按钮、选择Artifact,点击修改按钮、全选Available Elements并右键Put into Default Locations:

在这里插入图片描述

在这里插入图片描述

这样在WEB-INF/lib中能看到一开始导入的maven坐标:

在这里插入图片描述

16. 启动项目

点击绿色三角形的启动按钮:

在这里插入图片描述

浏览器默认跳转到 localhost:8080/ssm_war_exploded,显示的是web/index.jsp。

只需在链接后面新增/register即可访问controller中的RequestMapping:

在这里插入图片描述

查看数据库内容,已新增了一条,是controller模拟的myUser类的属性:

在这里插入图片描述

17. 小结

tomcat去启动web.xml的配置,再通过web.xml去启动applicationContext.xml和springmvc.xml的配置。

其中,applicationContext.xml控制了service和dao,而service又能使用dao和mybatis映射去操作数据库;springmvc.xml控制了controller,实现用户外部访问。

因此,ssm打通了用户到service、再到数据库的全过程。

18. ssm配置思维导图

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

易龙杨Longyang Yi

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

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

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

打赏作者

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

抵扣说明:

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

余额充值