zoukankan      html  css  js  c++  java
  • SSM-Maven配置

    全配置

    • 新建项目

    image.png

    • 新建文件夹
    - src
      - main
        - java
        - resources
        - webapp
          - WEB-INF
          - index.jsp
    - 
    
    • pom.xml
    <?xml version="1.0" encoding="UTF-8"?>
    
    <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/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>ssm_maven</groupId>
        <artifactId>ssm_maven</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <name>ssm_maven Maven Webapp</name>
        <!-- FIXME change it to the project's website -->
        <url>http://www.example.com</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.7</maven.compiler.source>
            <maven.compiler.target>1.7</maven.compiler.target>
        </properties>
    
        <dependencies>
            <!-- servlet依赖,版本需要和servlet容器的一致 -->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>
            <!-- 下面是mybatis和mybatis与spring整合的jar包 -->
            <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>
            <!-- log4j2 -->
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-core</artifactId>
                <version>2.8.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.logging.log4j</groupId>
                <artifactId>log4j-api</artifactId>
                <version>2.8.1</version>
            </dependency>
            <!-- mysql数据库的驱动包 -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.12</version>
            </dependency>
            <!-- 单元测试所用的包 -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <!-- 下面是spring需要的包,包括必备的core、beans、context、aop,与数据库相关的jdbc、tx,同时aop需要用到aspectjweaver包 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-context</artifactId>
                <version>5.0.8.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>5.0.8.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-beans</artifactId>
                <version>5.0.8.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-aop</artifactId>
                <version>5.0.8.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-expression</artifactId>
                <version>5.0.8.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-tx</artifactId>
                <version>5.1.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.aspectj</groupId>
                <artifactId>aspectjweaver</artifactId>
                <version>1.9.1</version>
            </dependency>
            <!-- 效验器需要的jar包 -->
            <dependency>
                <groupId>javax.validation</groupId>
                <artifactId>validation-api</artifactId>
                <version>2.0.1.Final</version>
            </dependency>
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-validator</artifactId>
                <version>5.4.1.Final</version>
            </dependency>
            <!-- spring mvc需要的jar包 -->
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-web</artifactId>
                <version>5.0.8.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.0.8.RELEASE</version>
            </dependency>
            <!-- 数据源用到的包 -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-dbcp2</artifactId>
                <version>2.5.0</version>
            </dependency>
            <!-- 使用json需要用到的jar包 fastjson/Gson -->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.62</version>
            </dependency>
            <!--springMVC需要的json包-->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>2.9.7</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-annotations</artifactId>
                <version>2.9.7</version>
            </dependency>
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.9.7</version>
            </dependency>
            <!-- 文件上传使用的jar包 -->
            <dependency>
                <groupId>commons-fileupload</groupId>
                <artifactId>commons-fileupload</artifactId>
                <version>1.3.3</version>
            </dependency>
            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>2.5</version>
            </dependency>
            <!-- lang3工具包 -->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>3.4</version>
            </dependency>
        </dependencies>
    
        <build>
            <finalName>ssm</finalName>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
            <resources>
                <!-- 编译之后包含xml -->
                <resource>
                    <directory>src/main/java</directory>
                    <includes>
                        <include>**/*.xml</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
                <!-- 编译之后包含xml和properties -->
                <resource>
                    <directory>src/main/resources</directory>
                    <includes>
                        <include>**/*</include>
                    </includes>
                    <filtering>true</filtering>
                </resource>
            </resources>
        </build>
    </project>
    

    每次修改maven配置后需要右键pom.xml选择maven点击reimport

    • WEB-INF/web.xml
    <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_3_1.xsd"
             version="3.1">
        <display-name>Archetype Created Web Application</display-name>
        <!-- 配置加载Spring文件的监听器-->
        <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>
        <!-- 配置Spring MVC前端核心控制器 -->
        <servlet>
            <servlet-name>dispatcher</servlet-name>
            <servlet-class>
                org.springframework.web.servlet.DispatcherServlet
            </servlet-class>
            <init-param>
                <param-name>contextConfigLocation</param-name>
                <param-value>classpath:springmvc-config.xml</param-value>
            </init-param>
            <!-- 配置服务器启动后立即加载Spring MVC配置文件 -->
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>dispatcher</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
        <!-- tomocat自带的编码过滤器 -->
        <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>
    </web-app>
    
    • 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:aop="http://www.springframework.org/schema/aop"
           xmlns:tx="http://www.springframework.org/schema/tx"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:task="http://www.springframework.org/schema/task"
           xsi:schemaLocation="
              http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans.xsd
              http://www.springframework.org/schema/aop
              http://www.springframework.org/schema/aop/spring-aop.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.xsd
              http://www.springframework.org/schema/task
              http://www.springframework.org/schema/task/spring-task-3.0.xsd">
        
        <!-- spring 注解 -->
        <context:annotation-config/>
        <context:component-scan base-package="com.pdt.ssm"/>
       
        <!-- 定时器注解 -->
        <task:annotation-driven />
        
        <!--读取db.properties -->
        <context:property-placeholder location="classpath:db.properties"/>
    
        <!-- 数据库连接池 -->
        <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
            <property name="driverClassName" value="${jdbc.driver}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
            <!-- 初始化连接大小 -->
            <!-- <property name="initialSize" value="${jdbc.initialSize}" />-->
            <!-- 连接池最大数量 -->
            <property name="maxTotal" value="${jdbc.maxTotal}"/>
            <!-- 连接池最大空闲 -->
            <property name="maxIdle" value="${jdbc.maxIdle}"/>
            <!-- 连接池最小空闲 -->
            <property name="minIdle" value="${jdbc.minIdle}"/>
            <!-- 获取连接最大等待时间 -->
            <property name="maxWaitMillis" value="${jdbc.maxWaitMillis}"/>
        </bean>
    
        <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
        <bean id="SqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
            <!-- 注入数据库连接池 -->
            <property name="dataSource" ref="dataSource"/>
            <!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
            <property name="configLocation" value="classpath:mybatis-config.xml"/>
            <!-- 扫描sql配置文件:mapper需要的xml文件 -->
            <!-- 这是配置xml扫描的,当只要用注解不用xml,可以不要下面这个配置-->
            <property name="mapperLocations" value="classpath:com/pdt/ssm/mapper/*.xml" />
        </bean>
    
        <!--配置sqlSessionTemplate:通过带参数的构造方法创建对象 -->
        <!--    如果只要使用注解,不需要配置这个,这个是给xml使用的-->
        <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
            <!-- 以sqlSessionFactory为参数传入构造函数中 -->
            <constructor-arg ref="SqlSessionFactory" />
        </bean>
    
        <!-- 配置 Spring 的 org.springframework.jdbc.core.JdbcTemplate -->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
             <property name="dataSource" ref="dataSource"></property>
        </bean>
    
        <!-- 扫描basePackage下所有以@MyBatisDao注解的接口 -->
        <!-- 这是扫描注解的,当只使用xml,不要注解的话,可以把整个MapperScannerConfigurer删掉-->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <!-- 给出需要扫描Dao接口包,扫描位置一定要准确 -->
            <property name="basePackage" value="com.pdt.ssm.dao"/>
        </bean>
    
        <!--事务管理器配置-->
        <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <!-- 注入数据库连接池 -->
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
        <!-- 使用注解定义事务 -->
        <tx:annotation-driven transaction-manager="transactionManager"/>
    
        <!--切面-->
        <!-- 激活自动代理功能 -->
        <aop:aspectj-autoproxy proxy-target-class="true"/>
    </beans>
    
    • resources/springmvc-config.xml
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    
        <!-- 配置扫描器 -->
        <context:component-scan base-package="com.pdt.ssm.controller"/>
        <context:component-scan base-package="com.pdt.ssm.util"/>
        
        <!-- 注解驱动:配置处理器映射器和适配器 -->
        <mvc:annotation-driven>
            <!-- 不使用后缀匹配 -->
            <mvc:path-matching suffix-pattern="false"/>
        </mvc:annotation-driven>
    
        <!-- 允许静态资源访问 -->
        <mvc:default-servlet-handler/>
    
        <!-- 配置视图解释器ViewResolver,使用jsq,也可以改用formarker或者其他 -->
        <bean id="jspViewResolver" class=
                "org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/view/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    
        <!-- 配置文件上传的解析器 -->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <property name="defaultEncoding" value="UTF-8"/>
            <!-- 设置最大上传大小 -->
            <property name="maxUploadSize" value="5242880"/>
        </bean>
    </beans>
    
    • resources/mybatis-config.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>
    	<!-- 配置全局属性 -->
    	<settings>
                <!--设置日志-->
    	    <setting name="logImpl" value="LOG4J2" />
    
    	    <!-- 使用jdbc的getGeneratedKeys获取数据库自增主键值 -->
    	    <setting name="useGeneratedKeys" value="true" />
    
    	    <!-- 使用列别名替换列名 默认:true -->
    	    <setting name="useColumnLabel" value="true" />
    
    	    <!-- 开启驼峰命名转换:Table{create_time} -> Entity{createTime} -->
    	    <setting name="mapUnderscoreToCamelCase" value="true" />
    	</settings>
    </configuration>
    
    • resources/db.properties
    jdbc.driver=com.mysql.jdbc.Driver
    jdbc.url=jdbc:mysql://localhost:3306/xxx?useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true&characterEncoding=utf8
    jdbc.username=root
    jdbc.password=
    jdbc.maxTotal=30
    jdbc.maxIdle=10
    jdbc.minIdle=1
    jdbc.maxWaitMillis=60000
    
    • resources/log4j2.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <!--日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL -->
    <!--Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,你会看到log4j2内部各种详细输出-->
    <configuration  status="info">
        <!-- 变量配置 应该是日志文件保存路径-->
        <Properties>
            <!-- (*必须,各应用需要修改) 部署应用的名称,命名规则 :全部小写字母、中短横线、数字,与微服务命名,disconf中命名一致 -->
            <property name="APPNAME">park-service</property>
            <!-- (各应用需要修改)日志文件本地存放目录路径 建议各个环境跟生产环境统一起来,方便维护 -->
            <Property name="logBaseFolder">/logs</Property>
            <!-- *必须并强制遵守 日志文件的编码 -->
            <property name="log_charset">UTF-8</property>
            <!--输出日志格式-->
            <property name="log_pattern">
                %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n
            </property>
        </Properties>
    
        <!--先定义所有的appender-->
        <appenders>
            <!--这个输出控制台的配置-->
            <console name="Console" target="SYSTEM_OUT">
                <!--输出日志的格式 %l :表示某个类-->
                <PatternLayout pattern="[%d{HH:mm:ss:SSS}] [%t] %-5p %c{1}:%L - %msg%n"/>
            </console>
    
            <!-- 这个会打印出所有的info及以下级别的信息,每次大小超过size,则这size大小的日志会自动存入按年份-月份建立的文件夹下面并进行压缩,作为存档-->
            <RollingFile name="RollingFileInfo" fileName="${logBaseFolder}/${APPNAME}-info.log"
                         filePattern="${logBaseFolder}/%d{yyyy-MM}/${APPNAME}-info-%d{dd HH:mm:ss}.%i.log.gz">
                <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
                <!-- 日志输出格式 -->
                <PatternLayout charset="${log_charset}" pattern="${log_pattern}" />
                <!-- 以下是日志压缩包目录的建议格式名称 建议1天归档依次,压缩文件上线建议为200,这里预估每个磁盘存储空间200G左右,每个压缩包最大值200MB -->
                <Policies>
                    <TimeBasedTriggeringPolicy  modulate="true" interval="1"/>
                    <SizeBasedTriggeringPolicy size="20MB"/>
                </Policies>
            </RollingFile>
    
            <RollingFile name="RollingFileDebug" fileName="${logBaseFolder}/${APPNAME}-debug.log"
                         filePattern="${logBaseFolder}/%d{yyyy-MM}/${APPNAME}-debug-%d{dd HH:mm:ss}.%i.log.gz">
                <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="DENY"/>
                <!-- 日志输出格式 -->
                <PatternLayout charset="${log_charset}" pattern="${log_pattern}" />
                <!-- 以下是日志压缩包目录的建议格式名称 建议1天归档依次,压缩文件上线建议为200,这里预估每个磁盘存储空间200G左右,每个压缩包最大值200MB -->
                <Policies>
                    <TimeBasedTriggeringPolicy  modulate="true" interval="1"/>
                    <SizeBasedTriggeringPolicy size="20MB"/>
                </Policies>
            </RollingFile>
    
            <RollingFile name="RollingFileError" fileName="${logBaseFolder}/${APPNAME}-error.log"
                         filePattern="${logBaseFolder}/%d{yyyy-MM}/${APPNAME}-error-%d{dd HH:mm:ss}.%i.log.gz">
                <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
                <PatternLayout charset="${log_charset}" pattern="${log_pattern}" />
                <Policies>
                    <TimeBasedTriggeringPolicy  modulate="true" interval="1"/>
                    <SizeBasedTriggeringPolicy size="20 MB"/>
                </Policies>
            </RollingFile>
        </appenders>
    
        <!--然后定义logger,只有定义了logger并引入的appender,appender才会生效-->
        <loggers>
            <!-- 注解查询的日记-->
            <logger name="com.pdt.ssm.dao" level="DEBUG">
                <appender-ref ref="RollingFileDebug"/>
            </logger>
            <!-- xml文件查询的日记-->
            <logger name="mapper" level="DEBUG">
                <appender-ref ref="RollingFileDebug"/>
            </logger>
            <!-- 用logger方法记录的日志-->
            <root level="info">
                <appender-ref ref="Console"/>
                <appender-ref ref="RollingFileInfo"/>
                <appender-ref ref="RollingFileError"/>
            </root>
        </loggers>
    </configuration>
    

    上面引用了几个工具包API查看

    • commons-lang3
    • commons-io

    关于日志包

    • log4j,Logger.getLogger(),配置文件是properties
    • log4j2,LogManager.getLogger(),配置文件时xml
    • commons-logging,LogFactory.getLog()
    • Logback
    • SLF4J
  • 相关阅读:
    SQL Server -- 数据收缩详解
    查看SQL数据库表大小
    drop、truncate和delete的区别
    【汇总】Windows linux 敏感目录 路径汇总——主要是主机配置文件、web配置文件
    BFS_拓扑排序 使用图遍历思想也是OK的 虽然代码多了点
    深度森林原理及实现——原来是借鉴了残差网络和highway的思想,将其用于树类算法
    BFS——单词接龙,这种题一定要当心环路
    BFS——克隆图,发现直接copy会出现某些环路的边会丢失,还是要先copy节点,再copy边
    双指针——最接近的三数之和,细节处理还是很关键的
    双指针——三角形计数,就是一些细节处理要严谨,否则还是容易出错
  • 原文地址:https://www.cnblogs.com/pengdt/p/12240565.html
Copyright © 2011-2022 走看看