发表于: 2017-08-09 20:28:26
1 1006
任务进展:
1:解决了拦截器不起作用的问题,原因是<mvc:annotation-driven />应该放在servlet层,不应放在底层,如果放在容器底层,那么初始化的时候容器会会自动加载DefaultAnnotationHandlerMapping和SimpleHandlerMapping,之后再定义<interceptors>是无效的。
2:解决了拦截器代码报错问题,原因是在设置cookie失效时间后,再次去获取的话结果会返回-1,因此不能用来判断失效,其实也不需要,cookie失效浏览器会自动清除,将判断时效代码删除后运行正常。
3:代码上传服务器,路径报错,在群里请教大佬,加上${pageContext.request.contextPath}后运行成功,于是将所有页面中的资源路径和请求路径全部加上。由于服务器上项目是打包放在jetty webapps下,当拦截请求重定向的时候,必须将项目名加在路径前面,否则重定向会报错。
4:深度思考:
1)什么是session?什么是cookie?session和cookie有什么区别?什么场景适用于session?什么场景适用于cookie?
在计算机中,尤其是在网络应用中,session称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。
cookie指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。cookie 在计算机中是个存储在浏览器目录中的文本文件,当浏览器运行时,存储在 RAM 中发挥作用 (此种 cookies 称作 Session Cookies),一旦用户从该网站或服务器退出,cookie 可存储在用户本地的硬盘上 (此种 cookies 称作 Persistent Cookies)。
(1)Cookie数据存放在客户的浏览器(本地),session数据放在服务器上。
(2).Cookie不如session安全,别人可以分析存放在本地的Cookie并进行Cookie欺骗,所以出于安全性的考虑应当使用Session。
(3)Session会在一定时间内保存在服务器上。当访问增多,会占用较多的服务器资源,所以出于性能考虑则应当使用cookie。
(4)单个cookie保存的数据不能超过4k,很多浏览器都限制一个站点最多保存20个cookie.实际上为了性能考虑,不论是cookie还是session,其中的信息都应当短小精悍。
(5)session因为是保存在服务器上,所以不支持跨域的访问。
cookie最典型的应用是判断用户是否登陆过网站,以便下次登录时能够直接登录,另一个是“购物车”中类的处理和设计。
2)拦截器、过滤器、监听器各有什么作用?
拦截器的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆。
过滤器是在请求进入容器之后,还未进入Servlet之前进行预处理,并且在请求结束返回给前端这之间进行后期处理,用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等。
监听器ContextLoaderListener的作用是启动Web容器时,自动装配ApplicationContext的配置信息。因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。
遇到问题:
无
明日计划:
修改一下代码,然后开始任务5
收获:
<mvc:annotation-driven /> 和 RequestMappingHandlerMapping的关系
进度:
任务开始时间:2017.08.07
预计demo时间:2017.08.13
是否有延期风险:无
评论