您的位置:首页 > 编程语言 > Java开发

Spring拦截器

2015-10-14 23:01 393 查看

Spring的拦截器配置文件

<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<!-- 不需要拦截的路径-->
<mvc:exclude-mapping path="/login"/>
<bean class="com.springmvc.controller.interceptor.LoginInterceptor" />
</mvc:interceptor>
<!-- 可以配置多个 -->
</mvc:interceptors>

LoginInterceptor.java

package com.springmvc.controller.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class LoginInterceptor extends HandlerInterceptorAdapter {

private static final Logger logger = LoggerFactory.getLogger(LoginInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
long startTime = System.currentTimeMillis();
logger.info("请求URL::" + request.getRequestURL().toString()
+ ":: Start Time=" + System.currentTimeMillis());
request.setAttribute("startTime", startTime);
//if returned false, we need to make sure 'response' is sent
return true;
}

@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("请求URL::" + request.getRequestURL().toString()
+ " Sent to Handler :: Current Time=" + System.currentTimeMillis());
//这里可以做业务操作如判断session中user,不存在做跳转。
//we can add attributes in the modelAndView and use that in the view page
}

@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
long startTime = (Long) request.getAttribute("startTime");
logger.info("请求URL::" + request.getRequestURL().toString()
+ ":: End Time=" + System.currentTimeMillis());
logger.info("请求URL::" + request.getRequestURL().toString()
+ ":: Time Taken=" + (System.currentTimeMillis() - startTime));
}

}

UserController.java

package com.springmvc.controller;

import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/")
public class UserController {
private static final Logger logger = LoggerFactory.getLogger(UserController.class);

/**
* 测试拦截器
* @param model
* @return
*/
@RequestMapping(value = "/home", method = RequestMethod.GET)
public String home(Model model) {
logger.info("Welcome home! ");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}

model.addAttribute("serverTime", new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
logger.info("Before returning view page");
return "home";
}

}

浏览器URL测试 :http://localhost:8080/example/home

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: