在java中,注册功能的实现首先需要判断用户名,密码是否合法,用户名不能重复,包含敏感词等。同时不要将明文的密码直接保存到数据库,我们可以先用md5算法对用户密码和用户的salt整体进行加密,然后返回相应注册的信息。当注册成功时则服务器端则向客户端发送一个token。

客户端已经被下发了一个token,当客户端发送带token的http请求时,首先根据token获取用户的id,再根据用户id查询用户的具体信息,接着利用用户和页面访问权限进行管理,返回对应的渲染页面。

后端主要是通过拦截器来实现如上的功能

1. public abstract class HandlerInterceptorAdapter implements HandlerInterceptor{  
2. // 在业务处理器处理请求之前被调用  
3. public boolean preHandle(HttpServletRequest request, HttpServletResponse response, 
4. Object handler) throws Exception{  
5. return true;  
6.     }  
7. // 在业务处理器处理请求完成之后,生成视图之前执行  
8. public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, 
9. ModelAndView modelAndView)  
10. throws Exception{  
11.     }  
12. // 在DispatcherServlet完全处理完请求之后被调用,可用于清理资源  
13. public void afterCompletion(HttpServletRequest request, HttpServletResponse response,
14.  Object handler, Exception ex)  
15. throws Exception{  
16.     }  
17. }


preHandler : 是controller的前置方法,当方法返回false整个请求就结束了。多个Interceptor,然后SpringMVC会根据声明的前后顺序一个接一个的执行,而且所有的Interceptor中的preHandle方法都会在。


WebRequestInterceptor和HandlerInterceptor的preHandler的方法的区别就在与webRepuestInterceptor的preHandler的方法是没有拦截的功能,是没有返回值的。


postHandle : 就是在当前请求进行处理之后,也就是Controller方法调用之后执行,但是它会在DispatcherServlet进行视图返回渲染之前被调用。


afterHandler:该方法将在整个请求结束之后,也就是在DispatcherServlet 渲染了对应的视图之后执行,可用于清理资源。

参考资料:

1. springmvc拦截器  http://www.sohu.com/a/128772280_523754