接触后台框架------使用IDEA进行ssm框架搭建

文章目录

      • 前言
      • 一、创建父级项目
      • 二、创建子模块
      • 三、父级的pom.xml配置
      • 四、各模块的pom.xml配置。==注意各级依赖的groupId和artifactId。==
        • 1、dao层
        • 2、service层
        • 3、web层
      • 五、dao层添加mybatis和spring相关配置
      • 六、service层添加log4j和spring相关配置
      • 七、web层添加相关文件及配置
      • 八、测试运行
      • 九、总结。

前言

​ 初始使用ssm框架,记录一下搭建过程。

​ IDE环境:IDEA+JDK1.8+maven3.5.3+tomcat8.5.29

一、创建父级项目

​ 首先创建父级项目,若是刚打开IDEA就点击create new project,打开有项目的就直接选择File->new->project。创建一个maven项目。GroupId一般以域开头,倒序进行填写(这里我是用自己的域名进行填写的),ArtifactId就填写自己的项目名称。

创建成功后删除src文件夹,idea文件夹也可以不用删。右下角选择自动导入依赖包。

接触后台框架------使用IDEA进行ssm框架搭建_第1张图片

接触后台框架------使用IDEA进行ssm框架搭建_第2张图片

接触后台框架------使用IDEA进行ssm框架搭建_第3张图片

接触后台框架------使用IDEA进行ssm框架搭建_第4张图片

二、创建子模块

​ 模块分为三层:持久层(dao层),业务层(service层)以及展现层(web层)。分别进行创建。(这里只演示dao层的创建)。

接触后台框架------使用IDEA进行ssm框架搭建_第5张图片

接触后台框架------使用IDEA进行ssm框架搭建_第6张图片

接触后台框架------使用IDEA进行ssm框架搭建_第7张图片

特别提醒:创建web蹭的时候将web里面的src.main里面的resources文件夹删除(不需要),并在其pom.xml文件中添加其打包方式为war。

接触后台框架------使用IDEA进行ssm框架搭建_第8张图片

接触后台框架------使用IDEA进行ssm框架搭建_第9张图片

三、父级的pom.xml配置

​ 將下列代码复制添加进文件中(里面标记了每个标签的用处,有些只属于个人理解)。记得修改最后的打包文件名称。(如果jdk、maven等版本不一样记得修改正确对应版本号)

	
	<properties>
        <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
        <java.version>1.8java.version>
        <spring.version>5.0.6.RELEASEspring.version>
    properties>

    <dependencies>
        
        <dependency>
            <groupId>org.apache.logging.log4jgroupId>
            <artifactId>log4j-apiartifactId>
            <version>2.11.0version>
        dependency>
        <dependency>
            <groupId>org.apache.logging.log4jgroupId>
            <artifactId>log4j-coreartifactId>
            <version>2.11.0version>
        dependency>
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-apiartifactId>
            <version>1.7.5version>
        dependency>
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
            <version>1.7.5version>
        dependency>

        

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-beansartifactId>
            <version>${spring.version}version>
        dependency>

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <version>${spring.version}version>
        dependency>

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-coreartifactId>
            <version>${spring.version}version>
        dependency>

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-aopartifactId>
            <version>${spring.version}version>
        dependency>

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-aspectsartifactId>
            <version>${spring.version}version>
        dependency>

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
            <version>${spring.version}version>
        dependency>

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-txartifactId>
            <version>${spring.version}version>
        dependency>

        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>4.12version>
        dependency>
        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-testartifactId>
            <version>${spring.version}version>
        dependency>

        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>fastjsonartifactId>
            <version>1.2.41version>
        dependency>
    dependencies>

    <build>
        
        <finalName>ssm-helloworldfinalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>3.7.0version>
                <configuration>
                    <source>${java.version}source>
                    <target>${java.version}target>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-project-info-reports-pluginartifactId>
                <version>2.9version>
            plugin>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-surefire-pluginartifactId>
                <version>2.21.0version>
                <configuration>
                    <skipTests>trueskipTests>
                configuration>
            plugin>
        plugins>
    build>

四、各模块的pom.xml配置。注意各级依赖的groupId和artifactId。

1、dao层

	<dependencies>
        
        <dependency>
            <groupId>fun.modxue.eteamgroupId>
            <artifactId>ssm-hellowordartifactId>
            <version>1.0-SNAPSHOTversion>
        dependency>

        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>3.2.8version>
        dependency>
        
        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>1.3.0version>
        dependency>
        
        <dependency>
            <groupId>org.mybatis.generatorgroupId>
            <artifactId>mybatis-generator-coreartifactId>
            <version>1.3.2version>
        dependency>

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.45version>
        dependency>

        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
            <version>1.0.9version>
        dependency>
    dependencies>

    <build>
        <resources>
            
            <resource>
                <directory>src/main/javadirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
                <filtering>falsefiltering>
            resource>
            <resource>
                <directory>src/main/resourcesdirectory>
                <includes>
                    <include>**/*.propertiesinclude>
                    <include>**/*.xmlinclude>
                includes>
                <filtering>falsefiltering>
            resource>
        resources>
    build>

2、service层

<dependencies>
    
    <dependency>
        <groupId>fun.modxue.eteamgroupId>
        <artifactId>ssm-daoartifactId>
        <version>1.0-SNAPSHOTversion>
    dependency>

dependencies>
<build>
    <resources>
        
        <resource>
            <directory>src/main/javadirectory>
            <includes>
                <include>**/*.xmlinclude>
            includes>
        resource>
        <resource>
            <directory>src/main/resourcesdirectory>
            <includes>
                <include>**/*.xmlinclude>
            includes>
        resource>
    resources>
build>

3、web层

<dependencies>
    
    <dependency>
        <groupId>fun.modxue.eteamgroupId>
        <artifactId>ssm-serviceartifactId>
        <version>1.0-SNAPSHOTversion>
    dependency>
    
    <dependency>
        <groupId>javax.servletgroupId>
        <artifactId>javax.servlet-apiartifactId>
        <version>3.1.0version>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-webartifactId>
        <version>${spring.version}version>
    dependency>
    
    <dependency>
        <groupId>org.springframeworkgroupId>
        <artifactId>spring-webmvcartifactId>
        <version>${spring.version}version>
    dependency>

dependencies>

<build>
    <resources>
        
        <resource>
            <directory>src/main/webapp/WEB-INF/configdirectory>
            <includes>
                <include>**/*.xmlinclude>
                <include>**/*.propertiesinclude>
            includes>
            <filtering>falsefiltering>
        resource>
    resources>
build>

五、dao层添加mybatis和spring相关配置

在src.main.resources下添加mybatis和spring文件夹,在mybatis下创建mybatis-config.xml,在spring下创建applicationContext-dao.xml和dataSource.properties。

mybatis-config.xml(驼峰命名例子:数据库中有个字段为user_name,在实体中定义一个userName可以与之相对应。将下滑杠匹配为下滑杠后首字母大写并去除下滑杠)



<configuration>
    <settings>
        
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    settings>
configuration>

dataSource.properties(此处数据库为本地自己创建的)

driverClassName = com.mysql.jdbc.Driver
mysql.url = jdbc:mysql://localhost:3306/数据库名称?useSSL=false
mysql.userName = 账户名称
mysql.password = 密码

applicationContext-dao.xml


<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:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.2.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">

    
    <context:component-scan base-package="fun.modxue.eteam.dao.*" />

    
    <context:property-placeholder location="classpath:/spring/dataSource.properties" />
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"
          p:driverClassName="${driverClassName}"
          p:url="${mysql.url}"
          p:username="${mysql.userName}"
          p:password="${mysql.password}" />

    
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        
        <property name="dataSource" ref="dataSource" />
        
        <property name="mapperLocations" value="classpath:mappers/**/*.xml" />
        
        
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
    bean>

    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="fun.modxue.eteam.dao.**" />
    bean>

    
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    bean>

    
    <tx:annotation-driven/>
beans>

==ps:==配置中有几处报错是因为不存在某些文件夹,所以为了之后保证完好运行测试需要补充下文件。文件中不需要多写东西也可。在dao层src.main.java中创建在applicationContext-dao.xml中声明扫描的类包文件夹(建立盛放接口和实体文件的文件夹)。在src.main.resources中添加mappers文件夹。

mapper文件的模板




<mapper namespace="mapper接口路径"> 

mapper>

接触后台框架------使用IDEA进行ssm框架搭建_第10张图片

六、service层添加log4j和spring相关配置

在src.main.resources下添加spring文件夹和log4j.properties、log4j2.xml文件,spring文件夹下添加applicationContext-service.xml文件

log4j.properties

### set log levels ###
log4j.rootLogger = debug,stdout,D,E

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = build/log/DEBUG/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =build/log/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss}  [ %t:%r ] - [ %p ]  %m%n

log4j2.xml









<configuration status="WARN" monitorInterval="30">

    

    <appenders>

        

        <console name="Console" target="SYSTEM_OUT">

            

            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

        console>

        

        <File name="log" fileName="build/log4j2/test.log" append="false">

            <PatternLayout pattern="%d{HH:mm:ss.SSS} %-5level %class{36} %L %M - %msg%xEx%n"/>

        File>

        

        <RollingFile name="RollingFileInfo" fileName="${sys:user.home}/logs/info.log"

                     filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log">

            

            <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>

            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

            <Policies>

                <TimeBasedTriggeringPolicy/>

                <SizeBasedTriggeringPolicy size="100 MB"/>

            Policies>

        RollingFile>

        <RollingFile name="RollingFileWarn" fileName="${sys:user.home}/logs/warn.log"

                     filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log">

            <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/>

            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

            <Policies>

                <TimeBasedTriggeringPolicy/>

                <SizeBasedTriggeringPolicy size="100 MB"/>

            Policies>

            

            <DefaultRolloverStrategy max="20"/>

        RollingFile>

        <RollingFile name="RollingFileError" fileName="${sys:user.home}/logs/error.log"

                     filePattern="${sys:user.home}/logs/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log">

            <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>

            <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n"/>

            <Policies>

                <TimeBasedTriggeringPolicy/>

                <SizeBasedTriggeringPolicy size="100 MB"/>

            Policies>

        RollingFile>

    appenders>

    

    <loggers>

        

        <logger name="org.springframework" level="INFO">logger>

        <logger name="org.mybatis" level="INFO">logger>

        <root level="all">

            <appender-ref ref="Console"/>

            <appender-ref ref="RollingFileInfo"/>

            <appender-ref ref="RollingFileWarn"/>

            <appender-ref ref="RollingFileError"/>

        root>

    loggers>

configuration>

applicationContext-service.xml


<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:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.2.xsd
       http://www.springframework.org/schema/aop
       http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
       ">

    
    <import resource="classpath*:/spring/applicationContext-dao.xml"/>

    
    <context:component-scan base-package="fun.modxue.eteam.service.*"/>

    
    <aop:config proxy-target-class="true">
        <aop:pointcut id="serviceMethod" expression="(execution(* fun.modxue.eteam.service.*..*(..)))
        and (@annotation(org.springframework.transaction.annotation.Transactional))"/>
    aop:config>

    
    
beans>

==ps:==同时在src.main.java下创建一个service文件夹。

接触后台框架------使用IDEA进行ssm框架搭建_第11张图片

七、web层添加相关文件及配置

创建下图中的文件夹及文件(图1),并将config文件标志为资源文件夹(图2,因为标记过了用其他文件夹做实验)

接触后台框架------使用IDEA进行ssm框架搭建_第12张图片

接触后台框架------使用IDEA进行ssm框架搭建_第13张图片

web.xml


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         id="WebApp_ID" version="3.0">

    <display-name>ssm-helloworddisplay-name>

    
    <context-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>classpath*:/spring/applicationContext-service.xmlparam-value>
    context-param>

    
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    listener>

    
    <filter>
        <filter-name>encodingfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>UTF-8param-value>
        init-param>
        <init-param>
            <param-name>forceEncodingparam-name>
            
            <param-value>trueparam-value>
        init-param>
    filter>

    
    <filter-mapping>
        <filter-name>encodingfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>


    
    <servlet>
        <servlet-name>DispatcherServletservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <init-param>
            <param-name>contextConfigLocationparam-name>
            <param-value>classpath:/spring/spring-mvc.xmlparam-value>
        init-param>
        <load-on-startup>1load-on-startup>
    servlet>
    
    <servlet-mapping>
        <servlet-name>DispatcherServletservlet-name>
        <url-pattern>*.actionurl-pattern>
    servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServletservlet-name>
        <url-pattern>*.htmlurl-pattern>
    servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServletservlet-name>
        <url-pattern>*.cssurl-pattern>
    servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServletservlet-name>
        <url-pattern>*.jsonurl-pattern>
    servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServletservlet-name>
        <url-pattern>*.jsonpurl-pattern>
    servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServletservlet-name>
        <url-pattern>*.jsurl-pattern>
    servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServletservlet-name>
        <url-pattern>*.pngurl-pattern>
    servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServletservlet-name>
        <url-pattern>*.jpgurl-pattern>
    servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServletservlet-name>
        <url-pattern>/resources/*url-pattern>
    servlet-mapping>

    <welcome-file-list>
        <welcome-file>/html/index.htmlwelcome-file>
    welcome-file-list>

    
    <filter>
        <filter-name>HiddenHttpMethodFilterfilter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilterfilter-class>
    filter>

    <filter-mapping>
        <filter-name>HiddenHttpMethodFilterfilter-name>
        <servlet-name>DispatcherServletservlet-name>
    filter-mapping>


web-app>

spring-mvc.xml


<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:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.2.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"
>
    
    <import resource="classpath*:/spring/applicationContext-service.xml"/>

    
    <context:component-scan base-package="fun.modxue.eteam.controller.*" />

    
    <mvc:annotation-driven/>

    
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:viewClass="org.springframework.web.servlet.view.JstlView"
          p:prefix="/html"
          p:contentType="text/html"
          p:suffix=".html" />

    
    <mvc:resources mapping="/html/**"
                   location="/WEB-INF/pages/html/" />
    <mvc:resources mapping="/js/**"
                   location="/WEB-INF/resources/js/" />
    <mvc:resources mapping="/css/**"
                   location="/WEB-INF/resources/css/" />
    <mvc:resources mapping="/images/**"
                   location="/WEB-INF/resources/img/" />
    
    
    <mvc:resources mapping="/lib/**"
                   location="/WEB-INF/resources/lib/" />

    
    


beans>

最后在index.html文件的body一句helloWord。

八、测试运行

接触后台框架------使用IDEA进行ssm框架搭建_第14张图片

接触后台框架------使用IDEA进行ssm框架搭建_第15张图片

接触后台框架------使用IDEA进行ssm框架搭建_第16张图片

接触后台框架------使用IDEA进行ssm框架搭建_第17张图片

然后执行图1的②

接触后台框架------使用IDEA进行ssm框架搭建_第18张图片

接触后台框架------使用IDEA进行ssm框架搭建_第19张图片

接触后台框架------使用IDEA进行ssm框架搭建_第20张图片

最后点击启动按钮等待就可以看见所配置的index.html页面内容了。

接触后台框架------使用IDEA进行ssm框架搭建_第21张图片

接触后台框架------使用IDEA进行ssm框架搭建_第22张图片

九、总结。

​ 一个ssm框架就此搭成功了,一些配置文件中的注解具体的作用以及原理可以自行去学习(我也在学习中)。

你可能感兴趣的:(后台)