案例效果:
介绍↑:进入主页,分别看到“登录页面”和“首页"。
介绍↑:点击进入“登录页面”后输入“用户名和密码”点击提交就可以跳转到首页。
介绍↑:已跳转到首页
介绍↑:回到“主页”,点击“首页”。
介绍↑:进入首页。这里是本项目的关键:用户刚刚已经登录,那么他可以直接进入首页
介绍↑:点击上一张图中的“注销账户”之后,自动跳转到“登录页面”。
介绍↑:手动回到“主页”。
介绍↑:点击首页,进入了登录页面。这里也是本项目的关键点:用户注销之后不能再进入首页,他要先登录,才能再次进入。
案例分析:
本案例中实现了如果用户已经登录那么直接让用户免登录进入页面,如果用户没有登陆,那么先让用户登录。
实现过程
工具/原料:
过程:
浏览器是用来拦截请求的,有的请求可以通过拦截器访问到Controller,有的则无法通过拦截器,被阻挡到拦截器外无法访问Controller。
请求能不能通过拦截器具体看拦截器的代码。在拦截器里面有一个重要的参数是true/false。
如何判断用户是否处于登陆状态?
用户第一次登陆的时候,请求发给controller,拦截器中途拦截到该请求,拦截器得知该请求指向登陆页面,估给请求放行。请求被放行后访问到controller,然后在controller的代码里面生成了一个session,用户登录成功。当用户再次访问网页的时候,用户给controller发送请求一串代码,拦截器拦截了该请求,根据改代码查找有没有一个对应的session,有的话拦截器给请求放行,没有的话就说明用户还没有登陆,拦截器将其拦截。
PS:该项目中用户没有给controller发送一串代码,该项目只是用了一个极其简单的手法让请求通过。一般来说浏览器第一次访问服务器服务器会生成一个cookie和session,然后服务器将cookie发送到浏览器。浏览器第二次访问服务器时,浏览器自动向服务器发送一个cookie,然后拦截器获取该cookie来与session比对。
总结:掌握了拦截器的用法,但对服务器和浏览器之间的验证依然比较陌生。
Github下载地址:https://github.com/zjjackyyue/SSM-01-SimpleSSM.git