1、web.xml
org.springframework.web.filter.CharacterEncodingFilter;
配置字符编码,配置示例:
<filter>
<filter-name>encode</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>encode</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
上下文
org.springframework.web.servlet.DispatcherServlet

<servlet>
<servlet-name>mcc-web</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/spring-servlet.xml</param-value><!-- 初始化上下文,可以不指定,使用默认配置文件 (servlet名称-servlet) -->
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mcc-web</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>

<!-- 其他spring配置文件 或者在以上contextConfigLocation配置多个文件通过*匹配-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/spring/spring-application.xml,
/WEB-INF/spring/spring-servlet.xml,
/WEB-INF/spring/spring-task.xml
</param-value>
</context-param>

其他配置
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>

<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name><!-- log4jRefreshInterval为6000表示 开一条watchdog线程每6秒扫描一下配置文件的变化;动态刷新日志级别 -->
<param-value>60000</param-value>
</context-param>

<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.jsp</location>
</error-page>

2、spring-servlet.xml

<!-- 隐式地向 Spring 容器注册
相当于注册以下bean
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor 使用@Autowired注解
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor 使用@ Resource 、@ PostConstruct、@ PreDestroy等注解
org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor 使用@PersistenceContext注解
org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor @Required的注解*/
-->
<context:annotation-config />

视图过滤器:
org.springframework.web.servlet.view.InternalResourceViewResolver
示例:
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/web/" />
<property name="suffix" value=".jsp" />
<property name="viewClass">
<value>org.springframework.web.servlet.view.InternalResourceView</value>
</property>
</bean>

上传文件
org.springframework.web.multipart.commons.CommonsMultipartResolver
示例:
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- one of the properties available; the maximum file size in bytes -->
<!-- 50M -->
<property name="defaultEncoding" value="utf-8" />
<property name="maxUploadSize" value="2547456500" />
</bean>

---------
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="cacheSeconds" value="0" />
<property name="messageConverters">
<list>
<ref bean="mappingJacksonHttpMessageConverter" />
</list>
</property>
</bean>

<!-- 异常处理,将AnnotationMethodHandlerAdapter同样规则来输出结果-->
<bean id="handlerExceptionResolver" class="com.microcloud.mcc.annotation.HandlerMethodExceptionResolver">
<!-- 没有被#ResponseBody标记的Controller方法将返回错误页面 -->
<property name="defaultErrorView" value="error.jsp"/>
<!-- 标有#ResponseBody注解的Controller方法,将使用此输出JSON-->
<property name="messageConverters" ref="mappingJacksonHttpMessageConverter"/>
</bean>

<bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
<value>application/json</value>
<value>application/javascript</value>
<value>text/json</value>
<value>text/javascript</value>
<value>application/xml</value>
<value>text/plain; charset=UTF-8</value>
</list>
</property>
</bean>

拦截
<!--**************interceptors **************************-->
<bean id="accessInterceptor" class="com.microcloud.mcc.interceptor.AccessInterceptor">
<property name="loginUrl" value="/login.jsp"/>
<property name="errorUrl" value="/error.jsp"/>
<property name="excludeUrls">
<list>
<value>/login.htm</value>
<value>/index.htm</value>
<value>/logout.htm</value>
<value>/three.htm</value>
<value>/toNoticelist.htm</value>
<value>/getNotice.htm</value>
<value>/queryNotice.htm</value>
</list>
</property>
</bean>

<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/control/**" />
<ref bean="accessInterceptor"/>
</mvc:interceptor>
<mvc:interceptors>
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
org.springframework.http.converter.json.MappingJacksonHttpMessageConverter
org.aspectj.lang.annotation.Aspect
org.springframework.beans.factory.config.PropertyPlaceholderConfigurer
org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver;
org.springframework.web.servlet.HandlerInterceptor;

org.springframework.scheduling.timer.ScheduledTimerTask
org.springframework.scheduling.timer.TimerFactoryBean

控制器配置
<context:component-scan base-package="com.microcloud.mcc.controller">
<context:include-filter type="annotation" expression="org.aspectj.lang.annotation.Aspect" />
</context:component-scan>

其他配置

<!-- 使用Spring组件扫描的方式来实现自动注入bean -->
<context:component-scan base-package="com.microcloud.mcc" />
<!-- 隐式地向 Spring 容器注册 -->
<context:annotation-config />
<!-- 开启mvc注解,日期格式化等 -->
<mvc:annotation-driven/>
<!-- 定时器开关 开始 -->
<task:annotation-driven />
<!-- 定时器开关 结束 -->

<!-- 标注类型 的事务配置 -->
<tx:annotation-driven />

<!-- 读取资源文件 -->
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="/WEB-INF/jdbc.properties" />
</bean>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${driverClassName}"/>
<property name="jdbcUrl" value="${url}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/>
<property name="maxPoolSize" value="100"/><!--连接池中保留的最大连接数 -->
<property name="minPoolSize" value="2"/><!--连接池中保留的最小连接数 -->
<property name="initialPoolSize" value="10"/>
<property name="maxIdleTime" value="1800"/><!--最大空闲时间,1800秒内未使用则连接被丢弃。若为0则永不丢弃-->
<property name="acquireIncrement" value="3" /><!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数-->
<property name="maxStatements" value="1000" />
<property name="acquireRetryAttempts" value="10" /><!-- 定义在从数据库获取新连接失败后重复尝试的次数-->
<property name="idleConnectionTestPeriod" value="60" /><!--每60秒检查所有连接池中的空闲连接-->
<property name="breakAfterAcquireFailure" value="true" />
<property name="testConnectionOnCheckout" value="false" />
</bean>

mybatis 配置

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="/WEB-INF/mybatis/mybatis.xml" />
<property name="plugins">
<array>
<ref bean="pagePlugin" />
</array>
</property>
<property name="mapperLocations">
<list>
<!-- 自动匹配Mapper映射文件 -->
<!-- <value>classpath:com/microcloud/mcc/entity/*-mapper.xml</value> -->
<value>classpath:sql/*.xml</value>
</list>
</property>
<property name="typeAliasesPackage" value="com.microcloud.mcc.vo,com.microcloud.mcc.entity" />
</bean>
<!-- 通过扫描的模式,扫描目录在com.microcloud.mcc.dao目录下,所有的mapper都继承SqlMapper接口的接口, 这样一个bean就可以了 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.microcloud.mcc.dao"/>
<property name="markerInterface" value="com.microcloud.mcc.sqlmap.SqlMapper"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

事务配置

切点 pointcut

下面给出一些常见切入点表达式的例子:
任意公共方法的执行:
execution(public * *(..))
任何一个以“set”开始的方法的执行:
execution(* set*(..))
AccountService 接口的任意方法的执行:
execution(* com.xyz.service.AccountService.*(..))
定义在service包里的任意方法的执行:
execution(* com.xyz.service.*.*(..))
定义在service包或者子包里的任意类的任意方法的执行:
execution(* com.xyz.service..*.*(..))

事务隔离级别
一、Propagation(事务的传播属性), key属性确定代理应该给哪个方法增加事务行为。这样的属性最重要的部份是传播行为。有以下选项可供使用:
Enumerated Values :
- REQUIRED --支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
- SUPPORTS --支持当前事务,如果当前没有事务,就以非事务方式执行。
- MANDATORY --支持当前事务,如果当前没有事务,就抛出异常。
- REQUIRES_NEW --新建事务,如果当前存在事务,把当前事务挂起。
- NOT_SUPPORTED --以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
- NEVER --以非事务方式执行,如果当前存在事务,则抛出异常。
- NESTED

Isolation (事务隔离等级): 属性一共支持五种事务设置,具体介绍如下:
Enumerated Values :
- DEFAULT 使用数据库设置的隔离级别 ( 默认 ) ,由 DBA 默认的设置来决定隔离级别 .
- READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 )
- READ_COMMITTED 会出现不可重复读、幻读问题(锁定正在读取的行)
- REPEATABLE_READ 会出幻读(锁定所读取的所有行)
- SERIALIZABLE 保证所有的情况不会发生(锁表)

<!-- 事务配置 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<aop:config> <!-- 定义在service包或者子包里的任意类的public方法的执行:-->
<aop:pointcut id="pointcut" expression="execution(public * com.microcloud.mcc.service.impl..*.*(..))" />
<aop:advisor advice-ref="txAdvice" pointcut-ref="pointcut" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="del*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="import*" propagation="REQUIRED" />
<tx:method name="*" propagation="REQUIRED" read-only="true" />
</tx:attributes>
</tx:advice>

<aop:aspectj-autoproxy proxy-target-class="true" />

资源文件配置
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basenames">
<list>
<value>resources.localization_zh_CN</value>
</list>
</property>
<property name="useCodeAsDefaultMessage" value="true" />
</bean>

<!--定义定时任务类 extends TimerTask http://sunny.blog.51cto.com/182601/32366 -->
<bean id="demoTask" class="com.DemoTask"/>

<bean id="scheduledTimerTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<!--这里定义定时任务的对象的位置-->
<property name="timerTask">
<ref bean="demoTask"/>
</property>
<!--这里定义每六秒钟程序执行一次-->
<property name="period">
<value>6000</value>
</property>
<!--这里定义程序启动两秒钟后开始执行-->
<property name="delay">
<value>2000</value>
</property>
</bean>
<bean id="timerFactoryBean" class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduledTimerTask"/>
</list>
</property>
</bean>

spring MVC 资料的更多相关文章

  1. Spring MVC 相关资料整理

    来源于:http://www.cnblogs.com/ylhssn/p/4062757.html 1.概述 Spring MVC是一种基于Java实现MVC设计模式的请求驱动类型的轻量级Web框架,即 ...

  2. Spring MVC中Session的正确用法<转>

    Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...

  3. Spring MVC如何配置OpenSessionInViewInterceptor并结合Hibernate使用

    最近在使用Spring MVC开发,在使用Hibernate查询数据库的时候因为Session在DAO层被关闭导致延迟加载的属性在使用时报错,经过查询网上资料将解决方法整理如下: 我使用的是OpenS ...

  4. 【转】Spring MVC中Session的正确用法之我见

    Spring MVC是个非常优秀的框架,其优秀之处继承自Spring本身依赖注入(Dependency Injection)的强大的模块化和可配置性,其设计处处透露着易用性.可复用性与易集成性.优良的 ...

  5. Spring MVC 对于@ModelAttribute 、@SessionAttributes 的详细处理流程

    初学 Spring MVC , 感觉对于 @ModelAttribute 和 @SessionAttributes 是如何被Spring MVC处理的,这一流程不是很清楚, 经过Google资料,有了 ...

  6. Spring MVC+Spring +Hibernate配置事务,但是事务不起作用

    最近做项目,被一个问题烦恼了很久.使用Spring MVC+Spring +Hibernate开发项目,在使用注解配置事务管理,刚开始发现无论如何数据库都无法更新,但是可以从数据库查询到数据.怀疑是配 ...

  7. 带着问题学 Spring MVC 源码: 一、概述

    摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! 简单就好,生活可以很德国 Q:什么是 Spring MVC ? ※ Spring MVC 是 S ...

  8. SpringMVC学习系列(12) 完结篇 之 基于Hibernate+Spring+Spring MVC+Bootstrap的管理系统实现

    到这里已经写到第12篇了,前11篇基本上把Spring MVC主要的内容都讲了,现在就直接上一个项目吧,希望能对有需要的朋友有一些帮助. 一.首先看一下项目结构: InfrastructureProj ...

  9. spring mvc 接收页面表单List

    很少写博客,如果写的不好请多多包涵! 最近在用Spring mvc时遇到一个问题,在网上搜了很多资料.几乎没看到解决办法! 例如:当我们在做批量添加或者更新时,在Controller层接收表单数据的问 ...

随机推荐

  1. php 笔试题

    1.用PHP打印出前一天的时间格式是2006-5-10 22:21:21 解:echo date(‘Y-m-d H:i:s’, strtotime(‘-1 day’)); 原因: format 字符说 ...

  2. NOI 动态规划题集

    noi 1996 登山 noi 8780 拦截导弹 noi 4977 怪盗基德的滑翔翼 noi 6045 开餐馆 noi 2718 移动路线 noi 2728 摘花生 noi 2985 数字组合 no ...

  3. msql 实现sequence功能增强

    create table sequence (      seq_name        VARCHAR(50)  NOT NULL COMMENT '序列名称',    min_val        ...

  4. 伪共享和缓存行填充,从Java 6, Java 7 到Java 8

    关于伪共享的文章已经很多了,对于多线程编程来说,特别是多线程处理列表和数组的时候,要非常注意伪共享的问题.否则不仅无法发挥多线程的优势,还可能比单线程性能还差.随着JAVA版本的更新,再各个版本上减少 ...

  5. sql-按周输出每月的周日期范围

    --日期参数,此处可以建立存储过程,接收月份,计算月开始结束时间或者直接接受开始与结束时间 declare @begDate datetime = '2014-06-01' declare @endD ...

  6. Oracle Forms 10g Tutorial Ebook Download - Oracle Forms Blog

    A step by step tutorial for Oracle Forms 10g development. This guide is helpful for freshers in Orac ...

  7. 软件工程(C编码实践篇)总结

    陆伟丹 + 原创作品转载请注明出处 + <软件工程(C编码实践篇)>MOOC课程http://mooc.study.163.com/course/USTC-1000002006 对软件工程 ...

  8. Linux C++线程池

    .为什么需要线程池? 部分应用程序需要执行很多细小的任务,对于每个任务都创建一个线程来完成,任务完成后销毁线程,而这就会产生一个问题:当执行的任务所需要的时间T1小于等于创建线程时间T2和销毁线程时间 ...

  9. Redis学习-基础环境介绍(二)

    1.通过VMware安装了Centos6.8系统 2.Reids安装过程,需要GCC环境 »通过下面命令,根据提示直接安装 1 yum install gcc 3.Redis选用的是3.2.4(建议使 ...

  10. CentOS 6.5 yum安装配置lnmp服务器(Nginx+PHP+MySQL)

    以下全部转载于  http://blog.csdn.net/lane_l/article/details/20235909 本人于今晚按照该文章使用centos 6.7 64bit安装成功,做个备份, ...