(一)利用IDEA创建一个新项目
(二)添加全体项目所需的依赖(pom文件)
/ 以下是SpringMVC须要用到的依赖,无需版本号,由“spring-framework-bom”统一管理 ///为了防止用Maven管理Spring项目时,不同的项目依赖了不同版本的Spring,可以利用Maven BOM来办理者一问题, 即可统一版本,而且,在引入BOM之后,在引入其他Spring依赖时,都无需指定版本spring-framework-bom :4.3.17.RELEASEspring-corespring-webspring-webmvc//这个jar文件是所有运用都要用到的,它包含访问配置文件、创建和管理bean 以及进行Inversion of Control/ Dependency Injection(IoC/DI)操作干系的所有类。spring-beansspring-context//spring表达式措辞spring-expression//为JDBC、Hibernate、JDO、JPA等供应的同等的声明式和编程式事务管理spring-txspring-jdbc/ 以上是SpringMVC须要用到的依赖 // Spring配置上传文件解析器须要用到的依赖 /commons-fileupload/ 以下是和数据库交互须要用到的依赖 /mysql-connector-java//下面两个是Spring中利用Mybatis须要的依赖mybatismybatis-spring//数据库连接池druid/ 以上是和数据库交互须要用到的依赖 // 以下这天记须要用到的依赖 start//logback-classic中就包含了logback-core、slf4j-apiJAR包。浸染便是打印日志供应方法/logback-classic/ logback-ext-spring是Spring供应的,它用于供应listener监听器。 /logback-ext-spring/ cl-over-slf4j用来把Spring中大量利用common-logging更换成slf4j。只有有个这个包,才能打印出Spring框架本身的信息数据。/jcl-over-slf4j/ 以上这天记须要用到的依赖 end// 以下是WEB三贱客 /javax.servlet-apijsp-apijstl/ 以上是WEB三贱客 // 以下是JSON须要的依赖 /jackson-corejackson-annotationsjackson-databind/ 以上是JSON须要的依赖 // 以下是常用工具须要的依赖 /commons-lang3commons-collections4/ 以上是常用工具须要的依赖 // 以下是测试工具须要的依赖 /junit/ 以上是测试工具须要的依赖 /
(四)创建干系配置文件
1、Spring核心配置文件(“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\"大众 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\"大众> <!-- 这个文件作为所有Spring文件的入口 --> <!-- 一次性加载所有的配置文件 --> <!-- 有了它,才能精确加载配置文件,才能用JDNL表达式读取配置文件中的数据:${jdbc.username} --> <context:property-placeholder location=\"大众classpath:properties/.properties\"大众/> <!-- 一次性引入所有的Spring配置文件,在web.xml中配置Spring文件的路径,只须要配这个文件就行 --> <import resource=\公众classpath:spring/applicationContext-.xml\"大众/></beans>
2、Mybatis核心配置文件(“mybatis.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=\"大众useGeneratedKeys\公众 value=\"大众true\公众/> <!--开启驼峰映射:数据库中area_name,会自动映射到实体类中的areaName,无需再去写映射--> <setting name=\公众mapUnderscoreToCamelCase\公众 value=\"大众true\"大众/> <!--<!– spring中mybatis与log4j的日志整合 –>--> <!--<setting name=\公众logImpl\"大众 value=\"大众LOG4J\"大众/>--> <!-- spring中mybatis与logback的日志整合 --> <setting name=\"大众logImpl\"大众 value=\"大众SLF4J\"大众/> <!-- 在所有的SQL映射路径上加上“dao”这个前缀 --> <setting name=\"大众logPrefix\"大众 value=\"大众dao.\"大众/> </settings></configuration>
3、创建与数据库交互须要的属性文件“dao.properties”
#jdbc配置jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc\:mysql\://127.0.0.1\:3306/order?autoReconnect\=true&useUnicode\=true&characterEncoding\=utf-8&allowMultiQueries\=truejdbc.username=rootjdbc.password=root#druid配置druid.initialSize=5druid.maxActive=30druid.minIdle=1druid.maxWait=60000druid.testBetweenEvictionRunMillis=6000druid.minEvictableIdleTimeMillis=300000druid.testWhileIdle=truedruid.validationQuery=SELECT 'x'druid.testOnBorrow=truedruid.testOnReturn=falsedruid.poolPreparedStatements=truedruid.maxOpenPreparedStatements=20druid.filters=wall,stat
4、Spring容器配置文件之数据库(“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\"大众 xsi:schemaLocation=\"大众 http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd\"大众> <!-- 配置数据库连接池Druid start --> <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}\公众/> <property name=\"大众initialSize\公众 value=\公众${druid.initialSize}\"大众/> <property name=\"大众maxActive\"大众 value=\"大众${druid.maxActive}\"大众/> <property name=\公众minIdle\"大众 value=\"大众${druid.minIdle}\"大众/> <property name=\"大众maxWait\"大众 value=\"大众${druid.maxWait}\公众/> <property name=\"大众timeBetweenEvictionRunsMillis\"大众 value=\"大众${druid.testBetweenEvictionRunMillis}\"大众/> <property name=\"大众minEvictableIdleTimeMillis\"大众 value=\"大众${druid.minEvictableIdleTimeMillis}\"大众/> <property name=\"大众testWhileIdle\"大众 value=\"大众${druid.testWhileIdle}\"大众/> <property name=\"大众validationQuery\"大众 value=\"大众${druid.validationQuery}\"大众/> <property name=\"大众testOnBorrow\公众 value=\"大众${druid.testOnBorrow}\"大众/> <property name=\"大众testOnReturn\公众 value=\公众${druid.testOnReturn}\公众/> <property name=\"大众poolPreparedStatements\"大众 value=\"大众${druid.poolPreparedStatements}\"大众/> <property name=\公众maxPoolPreparedStatementPerConnectionSize\公众 value=\"大众${druid.maxOpenPreparedStatements}\"大众/> <property name=\"大众filters\公众 value=\"大众${druid.filters}\公众/> <property name=\"大众proxyFilters\"大众> <list> <ref bean=\"大众logFilter\公众/> </list> </property> </bean> <bean id=\"大众logFilter\"大众 class=\"大众com.alibaba.druid.filter.logging.Slf4jLogFilter\"大众> <property name=\"大众statementExecutableSqlLogEnable\"大众 value=\公众false\"大众/> </bean> <!-- 配置数据库连接池Druid end --> <!-- 配置数据库Mybatis start --> <!-- 配置sqlSessionFactory --> <bean id=\"大众sqlSessionFactory\"大众 class=\公众org.mybatis.spring.SqlSessionFactoryBean\公众> <!-- 注入数据源 --> <property name=\公众dataSource\"大众 ref=\公众dataSource\"大众/> <!-- 扫描核心配置文件 --> <property name=\"大众configLocation\公众 value=\"大众classpath:spring/mybatis.xml\"大众/> <!-- 扫描JavaBean,自动利用别名 --> <property name=\"大众typeAliasesPackage\公众 value=\"大众com.imooc.bean\"大众/> <!-- 扫描Mybatis的sql配置文件 --> <property name=\"大众mapperLocations\"大众 value=\"大众classpath:mapper/.xml\公众/> </bean> <!-- 扫描dao包接口 --> <bean class=\"大众org.mybatis.spring.mapper.MapperScannerConfigurer\公众> <property name=\"大众sqlSessionFactoryBeanName\"大众 value=\"大众sqlSessionFactory\公众/> <property name=\"大众basePackage\公众 value=\"大众com.imooc.dao\公众/> </bean> <!-- 配置数据库Mybatis end --></beans>
5、Spring容器配置文件之做事层(“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: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\公众> <!-- 扫描service包 --> <context:component-scan base-package=\公众com.imooc.service\"大众/> <!-- 配置事务管理器 --> <bean id=\公众dataSourceTransactionManager\公众 class=\公众org.springframework.jdbc.datasource.DataSourceTransactionManager\"大众> <property name=\"大众dataSource\"大众 ref=\公众dataSource\公众/> </bean> <!-- 事务采取全表明办法 --> <tx:annotation-driven transaction-manager=\"大众dataSourceTransactionManager\"大众/></beans>
6、Spring容器配置文件之掌握层(“application-web.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\"大众 xsi:schemaLocation=\"大众http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd\公众> <!-- 开启表明映射的支持 --> <mvc:annotation-driven/> <!-- 容许对静态资源文件的访问 --> <mvc:default-servlet-handler/> <!-- 配置视图解析器 --> <bean id=\公众viewResolver\"大众 class=\"大众org.springframework.web.servlet.view.InternalResourceViewResolver\"大众> <property name=\"大众viewClass\"大众 value=\公众org.springframework.web.servlet.view.JstlView\公众/> <property name=\"大众prefix\"大众 value=\"大众/WEB-INF/jsp\公众/> <property name=\"大众suffix\"大众 value=\"大众.jsp\"大众/> </bean> <!-- 自动扫描的包名 --> <context:component-scan base-package=\"大众com.imooc.controller\"大众/></beans>
7、Form表单、Ajax要求与SpringMVC的RestFul风格的兼容处理的配置文件(root-context.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\"大众 xsi:schemaLocation=\"大众http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd\公众> <!-- 配置文件上传解析器 --> <bean id=\公众multipartResolver\公众 class=\公众org.springframework.web.multipart.commons.CommonsMultipartResolver\公众> <property name=\"大众maxUploadSize\公众 value=\"大众20000000\"大众/> <property name=\"大众defaultEncoding\公众 value=\"大众utf-8\"大众/> </bean></beans>
8、整合日志文件LogBack的属性文件(logback.properties)
log.base=E:/log
9、整合日志文件LogBack的配置文件(logback.properties)
<?xml version=\公众1.0\"大众 encoding=\"大众UTF-8\"大众 ?><!-- logback整合日志--><!--scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod: 设置监测配置文件是否有修正的韶光间隔,如果没有给出韶光单位,默认单位是毫秒。 当scan为true时,此属性生效。默认的韶光间隔为1分钟。 debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。--><configuration scan=\公众true\"大众 scanPeriod=\"大众60 seconds\公众 debug=\"大众false\"大众> <!--读取classpath路径下的logback属性文件,这里面配置了日志文件的输出路径--> <property resource=\公众properties/logback.properties\公众/> <!--<include resource=\公众org/springframework/boot/logging/logback/base.xml\"大众/>--> <!-- 定义日志文件 输入位置 --> <property name=\公众log_dir\"大众 value=\公众${log.base}\"大众/> <!-- 日志最大的历史 30天 --> <property name=\公众maxHistory\公众 value=\"大众30\"大众/> <!-- ConsoleAppender 掌握台输出日志 --> <appender name=\"大众STDOUT\"大众 class=\"大众ch.qos.logback.core.ConsoleAppender\"大众> <!-- 对日志进行格式化 --> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger -%msg%n</pattern> </encoder> </appender> <!-- ERROR级别日志 --> <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 RollingFileAppender--> <appender name=\"大众ERROR\公众 class=\公众ch.qos.logback.core.rolling.RollingFileAppender\公众> <!-- 过滤器,只记录ERROR级别的日志 --> <filter class=\公众ch.qos.logback.classic.filter.LevelFilter\"大众> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <!-- 最常用的滚动策略,它根据韶光来制订滚动策略.既卖力滚动也卖力出发滚动 --> <rollingPolicy class=\公众ch.qos.logback.core.rolling.TimeBasedRollingPolicy\"大众> <!--日志输出位置 可相对、和绝对路径 --> <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/error-log.log</fileNamePattern> <!-- 可选节点,掌握保留的归档文件的最大数量,超出数量就删除旧文件。比如我们这里的“fileNamePattern” 设置为“yyyy-MM-dd”,取末了一段“dd”,表示设置为每天滚动,且<maxHistory>是30,则只保存最近30天的文件, 删除之前的旧文件。把稳,删除旧文件是,那些为了归档而创建的目录也会被删除--> <maxHistory>${maxHistory}</maxHistory> </rollingPolicy> <!-- 按照固定窗口模式天生日志文件,当文件大于20MB时,天生新的日志文件。窗口大小是1到3,当保存了3个归档文件后,将覆盖最早的日志。 <rollingPolicy class=\"大众ch.qos.logback.core.rolling.FixedWindowRollingPolicy\"大众> <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/.log.zip</fileNamePattern> <minIndex>1</minIndex> <maxIndex>3</maxIndex> </rollingPolicy> --> <!-- 查看当前活动文件的大小,如果超过指定大小会奉告RollingFileAppender 触发当前活动文件滚动 --> <triggeringPolicy class=\"大众ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy\公众> <maxFileSize>5MB</maxFileSize> </triggeringPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> </appender> <!-- WARN级别日志 appender --> <appender name=\公众WARN\公众 class=\"大众ch.qos.logback.core.rolling.RollingFileAppender\"大众> <!-- 过滤器,只记录WARN级别的日志 --> <filter class=\"大众ch.qos.logback.classic.filter.LevelFilter\公众> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class=\"大众ch.qos.logback.core.rolling.TimeBasedRollingPolicy\"大众> <!-- 按天回滚 daily --> <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/warn-log.log </fileNamePattern> <!-- 日志最大的历史 30天 --> <maxHistory>${maxHistory}</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> </appender> <!-- INFO级别日志 appender --> <appender name=\"大众INFO\"大众 class=\"大众ch.qos.logback.core.rolling.RollingFileAppender\"大众> <!-- 过滤器,只记录INFO级别的日志 --> <filter class=\"大众ch.qos.logback.classic.filter.LevelFilter\"大众> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class=\"大众ch.qos.logback.core.rolling.TimeBasedRollingPolicy\"大众> <!-- 按天回滚 daily --> <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/info-log.log </fileNamePattern> <!-- 日志最大的历史 60天 --> <maxHistory>${maxHistory}</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> </appender> <!-- DEBUG级别日志 appender --> <appender name=\"大众DEBUG\公众 class=\公众ch.qos.logback.core.rolling.RollingFileAppender\"大众> <!-- 过滤器,只记录DEBUG级别的日志 --> <filter class=\"大众ch.qos.logback.classic.filter.LevelFilter\"大众> <level>DEBUG</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class=\公众ch.qos.logback.core.rolling.TimeBasedRollingPolicy\公众> <!-- 按天回滚 daily --> <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/debug-log.log </fileNamePattern> <!-- 日志最大的历史 60天 --> <maxHistory>${maxHistory}</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> </appender> <!-- TRACE级别日志 appender --> <appender name=\"大众TRACE\"大众 class=\公众ch.qos.logback.core.rolling.RollingFileAppender\公众> <!-- 过滤器,只记录ERROR级别的日志 --> <filter class=\"大众ch.qos.logback.classic.filter.LevelFilter\"大众> <level>TRACE</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> <rollingPolicy class=\"大众ch.qos.logback.core.rolling.TimeBasedRollingPolicy\"大众> <!-- 按天回滚 daily --> <fileNamePattern>${log_dir}/%d{yyyy-MM-dd}/trace-log.log </fileNamePattern> <!-- 日志最大的历史 60天 --> <maxHistory>${maxHistory}</maxHistory> </rollingPolicy> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger - %msg%n</pattern> </encoder> </appender> <!--输出到mysql数据库的appender配置 --> <!--<appender name=\公众db\"大众 class=\"大众ch.qos.logback.classic.db.DBAppender\公众>--> <!--<connectionSource--> <!--class=\"大众ch.qos.logback.core.db.DriverManagerConnectionSource\公众>--> <!--<driverClass>com.mysql.jdbc.Driver</driverClass>--> <!--<url>jdbc:mysql://120.0.0.1:3306/logback_member?characterEncoding=utf8</url>--> <!--<user>root</user>--> <!--<password>123456789</password>--> <!--</connectionSource>--> <!--</appender>--> <!-- mybatis与logback的整合 start --> <logger name=\公众org.mybatis\公众 level=\公众debug\公众 /> <logger name=\"大众ch.qos.logback\"大众/> <!-- 便是这个监控了mybatis日志输出,合营上面的“dao” --> <logger name=\"大众dao\公众 level=\"大众DEBUG\"大众/> <!-- mybatis与logback的整合 end --> <!-- 打印日志的级别,只打印低于当前级别的日志:TRACE, DEBUG, INFO, WARN, ERROR, ALL和OFF --> <root level=\"大众ALL\"大众> <!-- 掌握台输出 --> <appender-ref ref=\"大众STDOUT\"大众 /> <!--<!– 文件输出 –>--> <appender-ref ref=\公众ERROR\公众 /> <appender-ref ref=\"大众INFO\公众 /> <appender-ref ref=\"大众WARN\公众 /> <appender-ref ref=\公众DEBUG\"大众 /> <appender-ref ref=\"大众TRACE\公众 /> </root></configuration>
(三)配置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\"大众 metadata-complete=\公众true\"大众 version=\"大众3.0\"大众> <!--metadata-complete=\"大众true\公众:web.xml文件中利用<metadata-complete元素关照Web容器是否要探求表明, 如果你将<metadata-complete设为false,或者在文件中不指定<metadata-complete元素,那么在支配期间, 容器必须扫描表明和Web分片,为Web运用程序构建有效的元数据。如果将<metadata-complete设为true, 将由支配描述符为Web运用程序供应所有的配置信息。--> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 配置logback监听器 start --> <!--把稳:在web.xml文件中,这个listener的注册必须在ContextLoaderListener之前。如果你的logback.xml文 件不再pathclass目录下,或者名称不是logback.xml,必须解释文件所在的位置和名称,利用上面的两个参数。--> <context-param> <!--logback配置文件的位置--> <param-name>logbackConfigLocation</param-name> <param-value>classpath:logback.xml</param-value> </context-param> <listener> <listener-class>ch.qos.logback.ext.spring.web.LogbackConfigListener</listener-class> </listener> <!-- 配置logback监听器 end --> <!-- springMVC start --> <!-- 配置spring监听器 start --> <context-param> <param-name>contextConfigLocation</param-name> <!-- spring监听器加载的配置文件 --> <param-value>classpath:spring/root-context.xml</param-value> </context-param> <listener> <!--ContextLoaderListener监听器的浸染便是启动Web容器时,自动装置ApplicationContext的配置信息--> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 配置spring监听器 end --> <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> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/</url-pattern> </filter-mapping> <filter> <filter-name>multipartFilter</filter-name> <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class> <init-param> <param-name>multipartResolverBeanName</param-name> <!-- 这是在applicationContext-web.xml中配置的文件上传解析器的id --> <param-value>multipartResolver</param-value> </init-param> </filter> <filter-mapping> <filter-name>multipartFilter</filter-name> <url-pattern>/</url-pattern> </filter-mapping> <!-- 处理表单的RestFul提交办法 --> <filter> <filter-name>hiddenHttpMethodFilter</filter-name> <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class> </filter> <filter-mapping> <filter-name>hiddenHttpMethodFilter</filter-name> <url-pattern>/</url-pattern> </filter-mapping> <!-- 配置DispatcherServlet --> <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/applicationContext.xml</param-value> </init-param> <!--配置SpringMVC什么时候启动,参数必须为整数--> <!--如果为0或者大于0,则SpringMVC随着容器启动而启动--> <!--如果小于0,则在第一次要求进来的时候启动--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- springMVC end --> <!-- druid监控 start --> <servlet> <servlet-name>druidStatView</servlet-name> <servlet-class>com.alibaba.druid.support.http.StatViewServlet</servlet-class> <init-param> <!-- 不许可清空统计数据 --> <param-name>resetEnable</param-name> <param-value>false</param-value> </init-param> <init-param> <!-- 登录druid监控页面用户名 --> <param-name>loginUsername</param-name> <param-value>admin</param-value> </init-param> <init-param> <!-- 登录druid监控页面密码 --> <param-name>loginPassword</param-name> <param-value>1234</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>druidStatView</servlet-name> <url-pattern>/druid/</url-pattern> </servlet-mapping> <filter> <!-- WebStatFilter用于采集web-jdbc关联监控的数据。--> <filter-name>druidWebStatFilter</filter-name> <filter-class>com.alibaba.druid.support.http.WebStatFilter</filter-class> <init-param> <!-- 常常须要打消一些不必要的url --> <param-name>exclusions</param-name> <param-value>/public/,.js,.css,/druid,.jsp,.swf</param-value> </init-param> <init-param> <!-- 配置principalSessionName,使得druid能够知道当前的session的用户是谁 --> <param-name>principalSessionName</param-name> <param-value>sessionInfo</param-value> </init-param> <init-param> <!-- druid 0.2.7版本开始支持profile,配置profileEnable能够监控单个url调用的sql列表 --> <param-name>profileEnable</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>druidWebStatFilter</filter-name> <url-pattern>/</url-pattern> </filter-mapping> <!-- druid监控 end --> <!-- 为所有的JSP页面引入一个公共页面 --> <jsp-config> <jsp-property-group> <!-- 为哪些JSP页面引入一个公共页面 --> <url-pattern>.jsp</url-pattern> <!-- 被引入的公共页面 --> <include-prelude>/WEB-INF/jsp/system/common.jsp</include-prelude> </jsp-property-group> </jsp-config></web-app>