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

前言

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

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

一、创建父级项目

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

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、创建子模块

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

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

三、父级的pom.xml配置

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

	<!--此标签的作用就是为了便于进行资源版本维护等
    此标签中定义的标签,若想引用里面的值可以使用${},如${java.version} -->
	<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <spring.version>5.0.6.RELEASE</spring.version>
    </properties>

    <dependencies>
        <!--日志依赖-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.11.0</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.5</version>
        </dependency>

        <!--spring依赖引入-->

        <!--spring IOC的基础实现,包含访问配置文件、创建和管理bean等-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--在基础IOC功能上提供扩展服务-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--spring的核心工具包-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--Spring的面向切面编程,提供AOP(面向切面编程)的实现-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--Spring提供的对AspectJ框架的整合-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--Spring对JDBC的简单封装-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--为JDBC、Hibernate、JDO、JPA等提供的一致的声明式和编程式事务管理-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!-- JUnit单元测试框架 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!-- spring对测试框架的简单封装功能 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>

        <!--JSON工具-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.41</version>
        </dependency>
    </dependencies>

    <build>
        <!--打包最后文件名-->
        <finalName>ssm-helloworld</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-project-info-reports-plugin</artifactId>
                <version>2.9</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.21.0</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>

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

1、dao层
	<dependencies>
        <!--依赖父级-->
        <dependency>
            <groupId>fun.modxue.eteam</groupId>
            <artifactId>ssm-helloword</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <!--mybatis依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>
        <!--mybatis整合spring-->
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.0</version>
        </dependency>
        <!--mybatis-逆向工程-->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>

        <!--mysql连接驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.45</version>
        </dependency>

        <!--数据库连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.9</version>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <!-- 配置资源文件路径,以及扫描类型-->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>
2、service层
<dependencies>
    <!--依赖dao层-->
    <dependency>
        <groupId>fun.modxue.eteam</groupId>
        <artifactId>ssm-dao</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

</dependencies>
<build>
    <resources>
        <!-- 配置资源文件路径,以及扫描类型-->
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>
3、web层
<dependencies>
    <!--依赖service-->
    <dependency>
        <groupId>fun.modxue.eteam</groupId>
        <artifactId>ssm-service</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <!--依赖servlet-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
    </dependency>
    <!--spring-web模块依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <!--spring-webMVC依赖-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>

</dependencies>

<build>
    <resources>
        <!-- 配置资源文件路径,以及扫描类型-->
        <resource>
            <directory>src/main/webapp/WEB-INF/config</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
            <filtering>false</filtering>
        </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可以与之相对应。将下滑杠匹配为下滑杠后首字母大写并去除下滑杠)

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

<?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: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">

    <!-- 扫描类包,将标注Spring注解的类自动转化Bean,同时完成Bean的注入 -->
    <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}" />

    <!--配置sqlSessionBean-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--数据源即为上文配置的dataSource-->
        <property name="dataSource" ref="dataSource" />
        <!--**mapper.xml文件的扫描路径-->
        <property name="mapperLocations" value="classpath:mappers/**/*.xml" />
        <!-- 开启驼峰命名规则
           <property name="configuration">
               <bean class="org.apache.ibatis.session.Configuration">

                   <property name="mapUnderscoreToCamelCase" value="true"/>
               </bean>
           </property>
       -->
        <!--使用配置文件来加载mybatis的configuration,代替上文的配置-->
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
    </bean>

    <!--使用一个MapperScannerConfigurer,它将会查找类路径下的映射器并自动将它们创建成MapperFactoryBean-->
    <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>

    <!-- 事务注解驱动,标注@Transactional的类和方法将具有事务性 -->
    <tx:annotation-driven/>
</beans>

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

mapper文件的模板

<?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" >
<!-- namespace填写对应接口的位置 -->
<mapper namespace="mapper接口路径"> 

</mapper>

在这里插入图片描述

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

<?xml version="1.0" encoding="UTF-8"?>

<!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->

<!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->

<!--monitorInterval:Log4j能够自动检测修改配置 文件和重新配置本身,设置间隔秒数-->

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

    <!--先定义所有的appender-->

    <appenders>

        <!--这个输出控制台的配置-->

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

            <!--输出日志的格式-->

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

        </console>

        <!--文件会打印出所有信息,这个log每次运行程序会自动清空,由append属性决定,这个也挺有用的,适合临时测试用-->

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

        <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->

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

            <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->

            <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属性如不设置,则默认为最多同一文件夹下7个文件,这里设置了20 -->

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

    <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->

    <loggers>

        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->

        <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

<?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: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
       ">

    <!--引入applicationContext-dao配置-->
    <import resource="classpath*:/spring/applicationContext-dao.xml"/>

    <!-- 扫描类包,将标注Spring注解的类自动转化Bean,同时完成Bean的注入 -->
    <context:component-scan base-package="fun.modxue.eteam.service.*"/>

    <!--通过AOP配置提供事务增强,让service包下所有Bean的所有方法拥有事务-->
    <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>

    <!--开启自动代理,配置@Aspectj切面 -->
    <!--<aop:aspectj-autoproxy/>-->
</beans>

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

在这里插入图片描述

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

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

在这里插入图片描述

在这里插入图片描述

web.xml

<?xml version="1.0" encoding="UTF-8" ?>
<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-helloword</display-name>

    <!--Spring的应用上下文-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath*:/spring/applicationContext-service.xml</param-value>
    </context-param>

    <!--
        ContextLoaderListener监听器的作用就是启动Web容器时,自动装配ApplicationContext的配置信息。
        它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。
    -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 设置字符编码 -->
    <filter>
        <filter-name>encoding</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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <!-- 强制进行转码 -->
            <param-value>true</param-value>
        </init-param>
    </filter>

    <!-- /*表示对所有-->
    <filter-mapping>
        <filter-name>encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <!--配置前端控制器-->
    <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:/spring/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!--将后缀或路径为以下配置的资源文件全交给DispatcherServlet处理-->
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.json</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.jsonp</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.png</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>

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

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

    <!-- 浏览器不支持put,delete等method,由该filter将/blog?_method=delete转换为标准的http delete方法 -->
    <filter>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>HiddenHttpMethodFilter</filter-name>
        <servlet-name>DispatcherServlet</servlet-name>
    </filter-mapping>


</web-app>

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: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"
>
    <!--引入service配置文件-->
    <import resource="classpath*:/spring/applicationContext-service.xml"/>

    <!-- 扫描带有@Controller标注的类,自动注入 -->
    <context:component-scan base-package="fun.modxue.eteam.controller.*" />

    <!--
        注解驱动,代替注解映射器,注解适配器的配置
        默认加载很多参数绑定方法
    -->
    <mvc:annotation-driven/>

    <!--
        HTML视图解析器
    -->
    <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资源路径映射
    -->
    <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="/json/**"-->
    <!--location="/WEB-INF/resources/json/" />-->
    <mvc:resources mapping="/lib/**"
                   location="/WEB-INF/resources/lib/" />

    <!-- 使用messageSource实现i18n国际化-->
    <!--
        <bean id="messageSource"
              class="org.springframework.context.support.ResourceBundleMessageSource"
              p:basename="i18n/messages" />
    -->


</beans>

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

八、测试运行

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

然后执行图1的②

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

九、总结。

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值