springmvc数据校验,定时器,拦截器

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){
	// 直接在 QQ 实体类info 里进行验证,  比如 @Email(message = ""), @Pattern(regexp="")
	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 );
			// 可以将这些错误消息存到一个map里返回给前端或者其他地方。
		}
	}else{
		// service 业务层处理
	}

}

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" />


<!--  读取properties文件 -->
	<context:property-placeholder location="classpath*:/xxx.properties"
		ignore-resource-not-found="true" ignore-unresolvable="true" />

2-2、定时任务

@Scheduled(fixedRate=2000)
// @Scheduled(cron="2 40 17 * *")  秒 分 小时 天 周
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="" />
        <!-- 定义<mvc:interceptor>元素中,表示匹配指定路径的请求才进行拦截 -->
        <bean class="interceptor.Interceptor1" />
    </mvc:interceptor>
    <mvc:interceptor>
        <!-- 配置拦截器作用的路径 -->
        <mvc:mapping path="/gotoTest" />
        <!-- 定义在<mvc: interceptor>元素中,表示匹配指定路径的请求才进行拦截 -->
        <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方法:该方法在控制器的处理请求方法执行完成后执行,即视图渲染结束后执行,可以通过此方法实现一些资源清理、记录日志信息等工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值