拦截器
1 HandlerInterceptor实现拦截器
2、HandlerInterceptorAdpater继承该类实现拦截器
一 具体操作:
1 spring-mvc配置文件:
<mvc:interceptors>
<bean class="com.zhidisort.interceper.SimpleInterceper"/>
</mvc:interceptors>
2 实现HandlerInterceptor接口:
public class SimpleInterceper implements HandlerInterceptor {
@Override
public void afterCompletion(HttpServletRequest req, HttpServletResponse resp, Object handler, Exception ex)
throws Exception {
System.out.println("--------拦截器afterCompletion请求方法执行视图渲染后执行----------");
}
@Override
public void postHandle(HttpServletRequest req, HttpServletResponse resp, Object handler, ModelAndView modelAndView)
throws Exception {
System.out.println("--------拦截器在perhandle请求方法执行之后执行----------");
}
@Override
public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {
System.out.println("--------拦截器在perhandle请求方法执行之前执行----------");
return true;
}
}
3 控制器contorller:
@Controller
@RequestMapping("/ex")
public class StudentException {
@RequestMapping("/simple")
public String addStudent(String name){
if(name==null){
throw new NullPointerException("用户名不能为空");
}
System.out.println(name);
return "success";
}
实例操作登录拦截器·
1 Spring配置文件:
<mvc:interceptors>
<bean class="com.zhidisort.interceper.SimpleInterceper"/>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/system/login"/>
<bean class="com.zhidisort.interceper.UserInterceper"/>
</mvc:interceptor>
</mvc:interceptors>
2 继承HandlerInterceptorAdpate类
public class UserInterceper extends HandlerInterceptorAdapter{
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
HttpSession session =request.getSession();
String username=(String) session.getAttribute("user");
if(username!=null && !username.isEmpty()){
return true;
}
response.sendRedirect(request.getContextPath()+"/login.jsp");
return false;
}
3 控制器controller;
@Controller
@RequestMapping("/system")
public class UserContorller {
@RequestMapping("/login")
public String userLogin(String username, String password, HttpSession session){
if(username!=null && password!=null){
session.setAttribute("user",username);
return "success";
}
return "redirect:../login.jsp";
}
}
4 jsp登录页面
<%@ page language="java" pageEncoding="UTF-8"%>
<%
String basePath = request.getContextPath();
String path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+basePath+"/";
%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=path%>">
<meta charset="UTF-8">
<title>restful风格的api访问</title>
<script type="text/javascript" src="static/jquery/jquery.min.js"></script>
</head>
<body>
<button id="post" type="button">添加</button>
<button id="put" type="button">修改</button>
<button id="delete" type="button">删除</button>
<script type="text/javascript">
$("#post").on("click",function(){
$.ajax({
url : "api/student",
type : "POST",
data : {"name":"张三","sex":"男"},
success : function(data){
if(data.success){
alert(data.success);
}
},
dataType : "json"
});
});
$("#put").on("click",function(){
$.ajax({
url : "api/student/10",
type : "PUT",
data : {"name":"张三","sex":"男",},
success : function(data){
if(data.success){
alert(data.success);
}
},
dataType : "json"
});
});
$("#delete").on("click",function(){
$.ajax({
url : "api/student/10",
type : "DELETE",
success : function(data){
if(data.success){
alert(data.success);
}
},
dataType : "json"
});
});
</script>
</body>
</html>