发表于: 2018-01-08 21:32:07

1 547


今日完成

1.注销功能的实现

(1)在登录成功后将用户信息存入session中,session的有效时间设置应该和coo

(2)在jsp页面直接调用sessionscop,可以直接获得session中的值。

(3)效果——当用户登录后,在每个页面出现用户信息,注销后登录信息消失。

(4)点击注销后,session,cookie,用户信息都会消失

@RequestMapping("/loginout")
public String loginOut(HttpServletResponse response,HttpSession session) {
//清除cookie
   CookieUtils.clearCookie(response, Constant.jwtCookieName);
   //清除session
   session.invalidate();
   return "loginjsp";
}


2.理解model , modelandview ,modelmap 的区别

①Model

Model是一个接口,它的实现类为ExtendedModelMap,继承ModelMap类

public class ExtendedModelMap extends ModelMap implements Model

1

②ModelMap

ModelMap继承LinkedHashMap,spring框架自动创建实例并作为controller的入参,用户无需自己创建

public class ModelMap extends LinkedHashMap<String,Object>

1

③ModelAndView

顾名思义,ModelAndView指模型和视图的集合,既包含模型 又包含视图;ModelAndView的实例是开发者自己手动创建的,这也是和ModelMap主要不同点之一;

3.理解一下转发与重定向的区别

解释一

一句话,转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程:

转发过程:客户浏览器发送http请求——》web服务器接受此请求——》调用内部的一个方法在容器内部完成请求处理和转发动作——》将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。

重定向过程:客户浏览器发送http请求——》web服务器接受后发送302状态码响应及对应新的location给客户浏览器——》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址——》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。

解释二

重定向,其实是两次request

第一次,客户端request   A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。

例子:

response.sendRedirect("loginsuccess.jsp");

请求转发是服务器内部把对一个request/response的处理权,移交给另外一个

对于客户端而言,它只知道自己最早请求的那个A,而不知道中间的B,甚至C、D。传输的信息不会丢失。

例子:

       RequestDispatcher dis=request.getRequestDispatcher(“loginsuccess.jsp”);

       Dis.forward(request,response);

4.服务器被黑了,重装服务器。


深度思考

1.cookie和session:

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。


cookie存在客户端上,获取cookie是浏览器从本地提取文件。

Cookie具有不可跨域名性。


Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。


如果说Cookie机制是通过检查客户身上的“通行证”来确定客户身份的话,那么Session机制就是通过检查服务器上的“客户明细表”来确认客户身份。Session相当于程序在服务器上建立的一份客户档案,客户来访的时候只需要查询客户档案表就可以了。


Session对象是在客户端第一次请求服务器的时候创建的。

Session机制决定了当前客户只会获取到自己的Session,而不会获取到别人的Session。各客户的Session也彼此独立,互不可见。

Session生成后,只要用户继续访问,服务器就会更新Session的最后访问时间,并维护该Session。

同一机器的两个浏览器窗口访问服务器时,会生成两个不同的Session。但是由浏览器窗口内的链接、脚本等打开的新窗口(也就是说不是双击桌面浏览器图标等打开的窗口)除外。这类子窗口会共享父窗口的Cookie,因此会共享一个Session。


总结下来:cookie由后端创建,保存在客户端本地调用;session由服务器端自动生成,不需后端创建,保存在服务端。

cookie最常见的场景是自动登录;session常见的场景就是会话追踪。

2.

明日计划

1.小课堂

2.任务5提交,总结。

遇到问题

1.sql语句访问表的时候不能用大写

2.tomcat不能访问静态资源。

收获

session


返回列表 返回列表
评论

    分享到