发表于: 2017-11-10 23:39:38
1 754
今天完成的事情:
1.交任务四
2.写完拦截器,然后通过拦截器判断Token的信息,从而知道登录的状态,实现页面的跳转是否拦截。
3.实现第二个步骤,大概完成任务五。
要实现通过判断登录状态,来决定是否可以访问/u形式的URL页面。首先就是拦截这个URL,然后进行状态判断,对token判断后,根据返回出来的信息,决定是否要放行,最终达到页面跳转或者返回登录的作用。
明天计划的事情:
实现任务五登录注册时,给密码进行MD5加密,提交任务五。
遇到的问题:
就是拦截器的逻辑一直转不过来。
理想是想实现很多的功能,但总是办不到。
收获:
学习拦截器相关知识
1.拦截器结构图
网上的图片,那个sso就就相当于我们所要求的职业页面。
也就是说,那个地方放的是用户登录以后才可以看到的页面。
2.拦截器执行原理
(1)拦截请求的url
(2)从cookie中获取token
(3)如果没有token,则直接拦截,打回登录页面
(4)获取到token,查询用户信息,返回信息
(5)返回ture,则拦截放行。若返回false,则拦截不通过,指定页面不可以访问。
3.拦截器的实现
在SpringMvc中配置拦截器:
在springmvc中需要实现HandlerInterceptor接口。
4.拦截器总结
拦截器可以让你在Action和result被执行之前或之后进行一些处理。同时,拦截器也可以让你将通用的代码模块化并作为可重用的类。拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行。同时也是提供了一种可以提取action中可重用的部分的方式。比较显而易见的就是能够切实保障用户的财产信息安全,为有关部门提供权限或者职权领域的有效划分与约束。
二、深度思考
1.什么是session?什么是cookie?session和cookie有什么区别?什么场景适用于session?什么场景适用于cookie?
(1)session
session机制是一种服务器端的机制,服务器使用一种类似散列表的结构来保存信息。
当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端里的请求里是否已包含了一个session标识--sessionID,如果已经包含一个sessionID,则说明以前已经为此客户端创建过session,服务器就按照sessionID把这个session检索出来使用(检索不到,可能会新建一个),如果客户端请求不包含sessionID,则为此客户端创建一个session并且声称一个与此session相关联的sessionID,sessionID的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个sessionID将被在本次响应中返回给客户端保存。
(2)Cookie
Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
(3)cookie 和session 的区别:
1)cookie数据存放在客户的浏览器上,session数据放在服务器上。
2)cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗 考虑到安全应当使用session。
3)session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用COOKIE。
4)单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
(4)用法
将登陆信息等重要信息存放为SESSION
其他信息如果需要保留,可以放在COOKIE中
2.拦截器、过滤器、监听器各有什么作用?
(1)java的拦截器
主要是用在插件上,扩展件上比如 hivernate spring struts2等。有点类似面向切片的技术,在用之前先要在配置文件即xml文件里声明一段的那个东西。
(2)过滤器
所谓过滤器顾名思义是用来过滤的,在java web中,你传入的request,response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者struts的action前统一设置字符集,或者去除掉一些非法字符(聊天室经常用到的,一些骂人的话)。filter 流程是线性的, url传来之后,检查之后,可保持原来的流程继续向下执行,被下一个filter, servlet接收等.
(3)监听器
作用是会对特定的事件产生产生一个处理。监听在很多模式下用到。比如说观察者模式,就是一个监听来的。Servlet监听器用于监听一些重要事件的发生,监听器对象可以在事情发生前、发生后可以做一些必要的处理。
评论