1、数据校验
1-1、springmvc配置
<mvc:annotation-driven validator="validator" />
<bean id="messageSource"
class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="/WEB-INF/resource/errorMessages" />
</bean>
<bean id="validator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<property name="providerClass" value="org.hibernate.validator.HibernateValidator" />
<property name="validationMessageSource" ref="errorMessages" />
</bean>
1-2、实现
public void register(@Valid QQ qqInfo, BindingResult errorResult){
boolean flag = errorResult.hasErrors();
if(flag){
List<FiledError> errorList = errorResult.getFiledErrors();
for(FieldError fieldError : errorList){
String fieldName = fieldError.getField();
String errorMessage = fieldError.getDefaultMessage();
System.out.println(errorMessage );
}
}else{
}
}
2、定时器
2-1、springmvc.xml配置
<bean xmlns:task="http://www.springframework.org/schema/task"
xsi:----------------.xsd>
<task:scheduler id="sheduler" poo;-size="10" />
<task: executor id="executor" keep-alive="3600" poo;-size="100-200" queue-capacity="500" rejection-policy+"CALLER_RUNS">
<task:annotation-driven executor+"executor" scheduler+scheduler" />
<context:property-placeholder location="classpath*:/xxx.properties"
ignore-resource-not-found="true" ignore-unresolvable="true" />
2-2、定时任务
@Scheduled(fixedRate=2000)
public void task1(){
Date cTime = new Date();
System.out.println(cTime);
}
3、拦截器
3-1、springmvc.xml配置
<mvc:interceptors>
<bean class="interceptor.TestInterceptor" />
<mvc:interceptor>
<mvc:mapping path="/**" />
<mvc:exclude-mapping path="" />
<bean class="interceptor.Interceptor1" />
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/gotoTest" />
<bean class="interceptor.Interceptor2" />
</mvc:interceptor>
</mvc:interceptors>
3-2、拦截器实现
package interceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class TestInterceptor implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("afterCompletion方法在控制器的处理请求方法执行完成后执行,即视图渲染结束之后执行");
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle方法在控制器的处理请求方法调用之后,解析视图之前执行");
}
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle方法在控制器的处理请求方法调用之后,解析视图之前执行");
return false;
}
}
在上述拦截器的定义中实现了 HandlerInterceptor 接口,并实现了接口中的 3 个方法。有关这 3 个方法的描述如下。
preHandle 方法:该方法在控制器的处理请求方法前执行,其返回值表示是否中断后续操作,返回 true 表示继续向下执行,返回 false 表示中断后续操作。
postHandle方法:该方法在控制器的处理请求方法调用之后、解析视图之前执行,可以通过此方法对请求域中的模型和视图做进一步的修改。
afterCompletion方法:该方法在控制器的处理请求方法执行完成后执行,即视图渲染结束后执行,可以通过此方法实现一些资源清理、记录日志信息等工作。