IDEA搭建基于maven 的SSM框架

1、【File】->【new】->【Project】,选择【maven】,勾选【Create from archetype】,选择【maven-archetype-webapp】选项,点击Next。

 2、填写【GroupId】和【Artifactld】等信息,点击next。

3、填写Maven配置文件路径。

 4、得到如下项目结构。

 5、在/src/main目录下创建java和test目录,并标记为Sources文件。

 至此,一个完整的Web项目创建完成。

6、集成Spring。

  首先在pom文件中添加相关依赖。具体代码如下:

<properties>
        <spring.version>5.0.4.RELEASE</spring.version>
</properties>
<dependencies>
        <!--spring start -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <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-context-support</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-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-expression</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--spring end -->
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>    
</dependencies>

其次,在/src/main/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"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

           http://www.springframework.org/schema/tx
           http://www.springframework.org/schema/tx/spring-tx.xsd

           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context-2.5.xsd">
    <context:component-scan base-package="com.hengx" />

</beans>
<context:component-scan base-package="com.hengx"/> 注解:扫描base-package包或者子包下面所有Java类,并把匹配的Java类注册成为Bean。

接着我们配置web.xml。

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <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>
  
</web-app>
<context-param>:整个项目的全局变量,相当于设定一个固定值。param-name是键,相当于就是参数名,param-value就是值,相当于参数值。
ContextLoaderListener :ContextLoaderListener监听器实现了ServletContextListener接口,其作用就是启动Web容器时,自动装配ApplicationContext的配置信息。在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。

7、集成Spring MVC框架

  首先把集成Spring MVC所需要的Maven依赖添加到pom.xml文件中。

<properties>
        <spring.version>5.0.4.RELEASE</spring.version>
        <javax.servlet.version>4.0.0</javax.servlet.version>
        <jstl.version>1.2</jstl.version>
</properties>

<!--springmvc start -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>${javax.servlet.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--springmvc end -->

其次,在web.xml配置文件中添加DispatcherServlet配置。

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  
  <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>
  
  <!-- 配置DispatcherServlet -->
  <servlet>
    <servlet-name>spring-dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--    配置SpringMVC需要加载的配置文件 spring-mvc.xml-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>spring-dispatcher</servlet-name>
<!--    默认匹配所有的请求-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>
  
</web-app>
DispatcherServlet类:DispatcherServlet是前置控制器,主要用于拦截匹配的请求,拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置Spring的第一步。
<load-on-startup>:表示启动容器时初始化该Servlet。当值为0或者大于0时,表示容器在应用启动时加载并初始化这个Servlet。如果小于0或未指定时,则指示容器在该Servlet被选择时才加载。正值越小,Servlet的优先级越高。

接下来我们在/src/main/resources目录下创建并配置spring-mvc.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"
       xmlns:aop="http://www.springframework.org/schema/aop"
       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
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!-- 扫描controller(后端控制器),并且扫描其中的注解-->
    <context:component-scan base-package="com.hengx.controller" />
    <!--    设置配置方案-->
    <mvc:annotation-driven />

    <!--    配置 JSP 显示ViewResolver(视图解析器)-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
   <property name="prefix" value="/WEB-INF/views/"/>
  <property name="suffix" value=".jsp"/>
  </bean>
</beans>

测试一下

 

 

 8、集成Mybatis框架

  导入依赖。

<properties>
    <spring.version>5.0.4.RELEASE</spring.version>
        <javax.servlet.version>4.0.0</javax.servlet.version>
        <jstl.version>1.2</jstl.version>
        <mybatis.version>3.4.0</mybatis.version>
        <mysql.connector.java.version>5.1.38</mysql.connector.java.version>
        <druid.version>1.1.9</druid.version>
        <mybatis.spring.version>1.3.1</mybatis.spring.version>
</properties>

<!--mybatis start -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.connector.java.version}</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>${druid.version}</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>${mybatis.spring.version}</version>
        </dependency>
        <!--mybatis end -->

其次,在/src/main/resources 目录下创建jdbc.properties配置文件

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/数据库名字?serverTimezone=GMT
jdbc.username=用户名
jdbc.password=密码

在applicationContext.xml中添加如下配置:

<!--1、配置数据库相关参数-->
    <context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/>

<!--2.数据源 druid -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

<!--3、配置SqlSessionFactory对象-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--注入数据库连接池-->
        <property name="dataSource" ref="dataSource"/>
        <!--扫描sql配置文件:mapper需要的xml文件-->
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
        <!-- mybatis配置文件的位置 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!-- 配置分页插件 -->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <value>
                            helperDialect=mysql
                            reasonable=true
                        </value>
                    </property>
                </bean>
            </array>
        </property>

    </bean>

<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
        <constructor-arg index="0" ref="sqlSessionFactory"/>
    </bean>

<!-- 扫描basePackage下所有以@MyBatisDao注解的接口 -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <property name="basePackage" value="com.hengx.dao"/>

    </bean>

所有配置都已完成,那么下面我们开发相关代码。

在Mysql创建表hero。


CREATE TABLE `hero` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL,
  `hp` float DEFAULT NULL,
  `damage` int(10) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8

 数据库表创建完之后,在/src/main/java/com.hengx.model 目录下创建数据库表对应的实体类对象Hero。

public class Hero {
    private int id;
    private String name;
    private float hp;
    private int damage;
    //省略get、set方法      
}

实体类对象Hero创建完成之后,在/src/main/java/com.hengx.dao 目录下创建对应的DAO对象HeroDao,HeroDao是一个接口,提供了findAll方法来查询所有的用户。

package com.hengx.dao;

import com.hengx.model.Hero;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface HeroDao {
    List<Hero> findAll();
}

接口类HeroDao 创建完成之后,在/src/main/java/com.hengx.service目录下创建对应服务层接口HeroService,服务层接口HeroService 只提供了一个查询所有用户的方法findAll()。

package com.hengx.service;

import com.hengx.model.Hero;
import java.util.List;


public interface HeroService {
    List<Hero> findAll();
}

然后开发对应实现类HeroServiceImpl。

package com.hengx.service.impl;

import com.hengx.dao.HeroDao;
import com.hengx.model.Hero;
import com.hengx.service.HeroService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
public class HeroServiceImpl implements HeroService {

 @Resource
 private HeroDao heroDao;

    @Override
    public List<Hero> findAll() {
        return heroDao.findAll();
    }
}

之后创建,HeroController。

package com.hengx.controller;

import com.hengx.model.Hero;
import com.hengx.service.HeroService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.annotation.Resource;
import java.util.List;

@Controller
@RequestMapping("/user")
public class HeroController {

    @Resource
    private HeroService heroService;

    @GetMapping("/findAll")
    public String findAll(Model model){
        List<Hero> heroList = heroService.findAll();
        for (Hero hero:heroList) {
            System.out.println("id=:"+hero.getId());
            System.out.println("name=:"+hero.getName());

        }
        return "hello";
    }


}

最后,在/src/main/resources/mapper目录下创建HeroMapper.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.hengx.dao.HeroDao">



    <select id="findAll"  resultType="com.hengx.model.Hero">
        SELECT * FROM hero
    </select>



</mapper>

OK,访问/user/findAll

 

成功查询到数据。整合成功。

 9.1、集成Log4j日志框架

  首先导入依赖

<properties>
    <slf4j.version>1.7.25</slf4j.version>
    <log4j.version>1.2.17</log4j.version>
</properties>
<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>${slf4j.version}</version>
        </dependency>

之后在 /src/main/java/resources/下创建配置文件 log4j.properties

### set log levels ###
log4j.rootLogger=DEBUG,Console
#,File
###  输出到控制台  ###
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### 输出到日志文件 ###
#log4j.appender.File=org.apache.log4j.RollingFileAppender
#log4j.appender.File.File=${project}/WEB-INF/logs/app.log
#log4j.appender.File.DatePattern=_yyyyMMdd'.log'
#log4j.appender.File.MaxFileSize=10MB
#log4j.appender.File.Threshold=ALL
#log4j.appender.File.layout=org.apache.log4j.PatternLayout
#log4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH:mm:ss,SSS}][%c]%m%n

9.2、集成Junit测试框架

  导入依赖

<!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

至此结束!

原文地址:https://www.cnblogs.com/hengx/p/14494251.html