Maven项目SSM配置文件结构
SSM框架配置文件一般放置在resources文件夹下。
配置文件主要分为六类:
第一类web.xml :作用1.主要包含SpringMVC的前端控制器。2.过滤器配置。
1.配置SpringMVC的DispatcherServlet(前端控制器),负责接收客户端所有请求。
<?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_1.xsd"
version="3.1"
metadata-complete="true">
<display-name>Archetype Created Web Application</display-name>
<!-- 1.DispatcherServlet前端控制器 -->
<servlet>
<servlet-name>ds-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-*.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ds-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--2. 配置过滤器filter,对所有请求进行过滤和拦截 -->
<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>
<init-param>
<!-- 指定拦截的请求使用指定的编码方式进行解析 -->
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<!-- 对所以url进行匹配拦截 -->
<url-pattern>/*</url-pattern>
</filter-mapping>
第二类:Spring:(主要包括Dao层,service层,web层三层配置)
1.spring-dao:作用1.数据库配置文件的加载、2.数据库连接池配置、3.数据库会话工厂配置、4.扫描加载mapper资源,包括接口,数据库会话。
<?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">
<!-- 1.加载数据库参数文件 -->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 2.c3p0连接池 配置数据库连接池 获取jdbc.properties参数 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 获取连接池属性 -->
<property name="driverClass" value="${jdbc.driver}"/>
<property name="jdbcUrl" value="${jdbc.url}"/>
<property name="user" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<!-- 数据库连接池最大连接数 -->
<property name="maxPoolSize" value="30"/>
<!-- 数据库连接池最小连接数 -->
<property name="minPoolSize" value="10"/>
<!-- 数据库连接超时时间 -->
<property name="checkoutTimeout" value="10000"/>
<!-- 当前连接失败时可重新连接次数 -->
<property name="acquireRetryAttempts" value="3"/>
<!-- 关闭连接时 不自动提交commit 即手动提交事务-->
<property name="autoCommitOnClose" value="false"/>
</bean>
<!-- 3.配置sqlSessionFactory对象 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据库连接池,ref引用数据库连接池的id -->
<property name="dataSource" ref="dataSource"/>
<!-- 加载mybatis的全局配置 mybatis-config.xml -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!-- 扫描pojo包 用于mybatis别名 如果有多个则使用;隔开 -->
<property name="typeAliasesPackage" value="cc.ccoder.ds.pojo"/>
<!--扫描mapper文件下所有以xml为结尾的配置文件,主要是sql配置文件 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<!-- 4.配置扫描Dao接口包 动态实现Dao接口 注入到spring容器 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 扫描dao接口所在的包路径,value值代表包名 -->
<property name="basePackage" value="cc.ccoder.ds.dao"/>
<!-- 注入sqlSessionFactory value代码数据库会话工厂类-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
</beans>
2.Spring-service:作用1.扫描service中所有注解类。2.创建Spring事务管理器。3.设定基于注解的声明式事务
<?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.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
">
<!--1.扫描service包下所有使用注解的类 -->
<context:component-scan base-package="cc.ccoder.ds.service"/>
<!--2.配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 注入数据库连接池给事务管理器 -->
<property name="dataSource" ref="dataSource"/>
</bean>
<!--3.基于注解的声明式事务管理 -->
<tx:annotation-driven transaction-manager="transactionManager"/><tx:annotation-driven/>
</beans>
3.Spring-web:1.配置SpringMVC。2.加载静态资源。3.配置视图模板解析器。4.扫描web层相关的controller类。
<?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
">
<!--1. 配置SpringMVC -->
<mvc:annotation-driven/>
<!--2.静态资源配置
- 对加入的静态资源处理 js git png
- 允许使用"/" 做整体映射
-->
<mvc:default-servlet-handler/>
<!-- 3.配置视图解析器 解析JSP HTML等视图模板-->
<bean id="jspTemplateResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<!--根目录(src)下的前缀-->
<property name="prefix" value="/WEB-INF/view/"/>
<!--页面的文件后缀-->
<property name="suffix" value=".jsp"/>
</bean>
<!-- 4.扫描Web相关的bean Controller所在的包 -->
<context:component-scan base-package="cc.ccoder.ds.controller"/>
</beans>
第三类:数据库、日志配置文件(处于src文件夹下,直接在src右键新建或粘贴即可)
jdbc.properties 数据库配置文件(可以保护最大连接数等等,此处简写)
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://IP/dataBaseName?useUnicode=true&characterEncoding=utf-8
jdbc.username=数据库登录名
jdbc.password=数据库登录密码
logback.xml 日志配置文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="true">
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are by default assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder -->
<!--1.指定日志格式及编码-->
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
<charset>UTF-8</charset>
</appender>
<!--2.指定日志打印到指定的文件目录中。路径设置不全,默认是tomcat盘中 log文件夹中。名为ds.log-->
<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<file>/log/ds.log</file>
<encoder>
<pattern>%date %level [%thread] %logger{10} [%file:%line] %msg%n</pattern>
</encoder>
</appender>
<!--3.-指定日志的级别,日志分别应用到文件和控制台-->
<root level="debug">
<appender-ref ref="FILE" />
<appender-ref ref="STDOUT"/>
</root>
<!--4.-指定日志的对象和级别,日志分别应用到文件和控制台-->
<logger name="org.mybatis" level="DEBUG"/>
</configuration>
第四类:mybatis核心配置文件
<?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>
<!-- mybatis全局配置 -->
<settings>
<!-- 使用JDBC的getGenerateKeys,支持获取自增id -->
<setting name="useGeneratedKeys" value="true"/>
<!-- 使用列别名替换别名 默认为true -->
<setting name="useColumnLabel" value="true"/>
<!-- 开启驼峰命名 -->
<setting name="mapUnderscoreToCamelCase" value="ture"/>
</settings>
<typeAliases>
<!-- 设置对象别名,表示在扫描包中所有的注解类,如没有指定类名,此处的别名对应sql的mapper.xml文件中的属性类型(parameterType)和结果类型(resultType)。方便统一管理 -->
<package name="cc.ccoder.ds.pojo"/>
</typeAliases>
</configuration>
第五类:UserMapper.xml:sql语句配置文件,用于管理sql语句的编辑。
<?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" >
<!-- 映射空间名,一般一个实体对应一个空间名,方便sql语句的准确识别。 -->
<mapper namespace="cc.ccoder.ds.dao.UserDao">
<!-- 定义sql变量,存储常用字段,便于操作时引用 -->
<sql id="base_list">
id,username,password,telephone,email
</sql>
<!-- 查询操作,引用sql变量。id表示执行的语句标识,一般同java方法同名,便于管理,#{name},表示实体类的属性名 -->
<select id="findUser" resultType="User">
select <include refid="base_list"/> from user where username = #{username} and password = #{password}
</select>
<delete id="deleteUserById">
delete from user where id = #{id}
</delete>
<!-- if判空。 -->
<update id="updateUser" parameterType="User">
update user
<set>
<if test="username != null and username != ''">
username = #{username},
</if>
<if test="password != null and password != ''">
password = #{password},
</if>
<if test="telephone != null and telephone != ''">
telephone = #{telephone},
</if>
<if test="email != null and email != ''">
email = #{email}
</if>
</set>
where id = #{id}
</update>
</mapper>
第六类:pom.xml
下载依赖包,根据框架的需要,注入框架jar包,mysql连接jar包,c3p0等连接池jar包等等。可以通过Maven仓储:https://mvnrepository.com/ 搜索需要的依赖jar包。
pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>ccoder.cc</groupId>
<artifactId>ds</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>ds Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- 日志
- log4j logback common-logging 日志实现
- slf4j 日志接口 规范 门面
- 在此使用 slf4j + logback
-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<!-- logback 核心依赖 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>1.2.3</version>
</dependency>
<!-- 实现slf4j接口 并且整合 -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
</dependency>
<!-- 数据库相关依赖 -->
<!-- mysql jdbc 驱动 -->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<!-- c3p0数据库连接池 -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>4.3.13.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/taglibs/standard -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/jstl/jstl -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.5</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency>
</dependencies>
<build>
<finalName>ds</finalName>
</build>
</project>
注:SSM配置文件的标签及属性众多,此处仅列出一些常用。